华中科技大学硕士学位论文基于ARM的双路光纤数据采集系统的设计与实现姓名:胡丰凯申请学位级别:硕士专业:电路与系统指导教师:张林20061105ISAGNACSAGNACARM9+FPGAARM9S3C2410FPGAC/SFPGAARMBOOTLOADERVIVIARM9;;BOOTLOADER;VIVIIIAbstractInrecentyears,Opticalfibersensingtechnologyisthefastestdevelopinghigh-techapplicationsforitssomanyadvantagessuchasresistancetoelectromagneticinterference,highsensitivity,andsafetyandreliability,corrosion-resistant,andcanbeconducteddistributedmeasurement.Fiberfencedistributedfibersensingtechnologyisusedforreal-timeremotemonitoringtheunexpectedincidentswhichhappenincertainprecisionscopes.Thistechnologywillplayanimportantroleinthefutureinmanyareassuchasmilitary,nationaldefenseandsecurityandprotectionofcivilianmonitoring.Anembeddeddataacquisitionsystemisdesignedinthispaper,whichisbasedontheback-endsignalprocessingoffiberfencetechnology.SAGNACfiberinterferometerisacommontechniqueinfiberfencetechnology.Thispaperwillintegrateembeddedsignalprocessingtechnologyandopticalfibersensortechnology,anddesignadataacquisitionsystemforthebackendofSAGNACfiberinterferometersignalprocessing.ThedataacquisitionsystemusesARM9+FPGAstructure,ARM9processor,ahigh-performanceembeddedprocessorSamsungS3C2410andcombineswithahighperformanceFPGAtoachievehigh-speedsynchronousacquisitionoftwochannels.WhenthesystemcombineswithEthernet,C/Stransfermodecanbeusedtofacilitatethelocaledatacollection.Thewholesystemwillbeillustratedformtwopartsashardwareandsoftwareinthispaper.Thenetcommunicationmodule,FPGAtoARMinterface,dataacquisitionmodulewillbeintroducedinthehardwarepart.Everylinkofthecompletionoftheacquisitionsystemisdiscussedfromtoptobottominthesoftwarepart.AndwithanalyzingthepopularBOOTLOADERVIVI,thepaperpointsoutitsstrengthsandweaknesses.Andaccordingtoitsshortcomings,thepaperproposedawayforimprovementbyexpandingitsfunctionofthenetwork.Finally,thepaperdealswiththespecificprocessesandIIImethodsofnetworkcommunication;Multithreadingtechnologyisusedtomaximizethecapacityoftheprocessor.KeywordsARM9;Dataacquisitionsystem;BOOTLOADER;VIVI2006115______“v”20061152006115111.121.2SagnacMickelsonMZ[1]OTDR[2,3]OTDROpticalTimeDomainReflectometerOTDR3MZ[4]MachZehnderSAGNAC[5]SAGNAC()1-11-1SAGNAC4LRncLn=t(1-1)RcnRLd)2(=t(1-2)2)(dncLRt=(1-3)SAGNACSAGNACSAGNACSAGNACSAGNACSAGNAC51.3121MHz1-21-21.46BOOTLOADER72SAGNACSAGNAC2.12.1.1DDR2-200ARM9ARM92.1.2ARM9+FPGA[6,7,8]FPGAA/DARM92-182-1FPGAA/DA/D16A/DADS84011.25MSPS93dBFPGAA/DFPGAFIFOFPGAARMARMPCPCARMDM9000EARMPCDM9000E100MbHzPCRS232ARMARM9RS232FPGAJTAGASFPGAJTAGASFPGARS232ARM9PCPCARM9ARMJTAG9BOOTLOADERBOOTLOADERLinux2.2ARM9S3C24102-22-22-12-1ARM9S3C24101SDRAMHY57v561620CT32MB2NANDFLASHIntelK9F1208COM64MAMS11173.3V,1.8V12MS3C2410ARM932273232203MHz100MHz100MHz1GB8nGCS0nGCS7nGCS6nGCS710256MB0x30000000S3C24104KBSRAMRAMNANDFLASHARMNORFLASHNORFLASHNANDFLASHNANDFLASH3.3V1.8VDDR2-200DDR2-200200S3C24101627(100MHz)LCDnGCS0~nGCS5IISIICUARTFPGADM9000EFPGA100MHzFPGAFPGAIISGPIO112.32.3.11kHz~100kHz1.25MSPS16A/DADS8401ADS8401TI93dB0-5VADS84012-32-3A/D5V3VADS8401FPGA2-22-2ADS8401FPGAI/ORDCS12CONVST16ADBUSYA/DA/D2.3.21FPGAFPGAALTERAcycloneIIEP1C6Q240C86FPGAA/D[9,10]ARMFPGA2A/DARM2-42-4FPGAFIFO[11,12,13]FIFOFPGAFIFOFPGA2FPGAA/DA/DFPGAFPGAA/DFIFOA/DFIFOFIFO161024ByteFPGAA/DFIFO13ADS8401A/D3FPGAARMFPGAARMFIFOFIFOFPGAARMFIFO161024ByteFIFOFPGAARMFIFOFPGAARMDMAFPGAARM2-52-5FPGAARMQ[15:0]161616FIFOnGCS4ARM0x2000000-0x2800000ADD20~ADD23ADD10FIFO0x20f004000x20f00000/EF/FF/HFFIFO[14]nXDREQ0nXDACK0ARMDMAnXDREQ0DMAnXDACK0ARMDMADMAWholeserviceinHandshakeModewithUnitTransferSize()nXDREQ14nXDREQDMAFIFODMAnXDREQ2.4RJ45RS2322.4.1PCS3C2410DM9000EDM9000E10/100M4K3.3V5VMIIEEPROM81632IEEE802.3uIEEE802.3XS3C2410DM9000E2-62-6S3C2410DM9000EEINT9nGCS30x18000000-0x20000000ADDR24nOE15IOR0x19000000SA4-SA9DM9000EI/O300H~370HSA9SA8VCCSA4~SA7GNDI/O300HDM9000EARM0x19000300CMDARMADDR2ADDR2DM9000E0x19000300+0ADDR2DM9000E0x19000304X1_25MX2_25M25MHzLINK_ACKLEDSPEEDLED100M10M2.4.2BOOTLOADERPCARMLinuxPCARMS3C2410UARTI/OUART16FIFOUART(MAX3232)PC2-72-7UART162.5173BOOTLOADERBOOTLOADER3.13.1.13-13-1BOOTLOADERLinuxLinuxLCDDM9000EFPGA3.1.2ARMLinuxPCLinuxLinuxPCARMLinux[15,16](gcc)(ld)18asarARMC(glibc)linux2.4.18Linuxcross-armv4l-gcc-2.95.2-5mz.i386.rpmarm-gccgcc-2.95.3.tar.gz$tarxvzfgcc-2.95.3.tar.gz$gcc-2.95.2/configure--target=arm-linux--prefix=${PREFIX}--without-header--with-newlib--enable-languages=cPREFIX3.2BOOTLOADERBOOTLOADERRAMBOOTLOADERBOOTLOADERBOOTLOADERU-BootVIVIRedBootARMBootBlobVIVIBOOTLOADER3.2.11VIVIU-BootVIVIARMBOOTLOADERU-BootARMBootPPCBootNORFLASHNORFLASHFLASHBOOTLOADERRAMNANDFLASHNANDFLASH19U-BootVIVINANDFLASHNANDFLASHVIVIBOOTLOADER2VIVIVIVIMIZIVIVILinuxLinuxLinux3-13-1VIVIarch/VIVIhead.sinclude/s3c2410.hNANDFLASHplatform/smdk2410.hdriver/(MTD)MTDmapnandnorlib/time.cudelay()mdelay()script/Linuxutil/NANDFLASHDocumentation/VIVIVIVIshellLoadPartParamBootHelpLoadFLASHRAMPartFLASHParamBootHelpVIVI203.VIVIVIVIhead.sNANDFLASHS3C2410SRAMNANDFLASHSRAM0x00000004K[17]S3C24100x00000000S3C2410NANDFLASH4KSRAM0x00000000head.sSRAMVIVI80KSRAM4KVIVISRAMhead.shead.sCPUVIVI3-23-2VIVIblcopy_myself@NANDFLASH0x33f00000ld