![](http://img4.cpooo.com/files/201905/30/p/71/1207632_1559187944.jpg)
PM861AK01-eA
ABBDCSAC800M模块PM861AK01PM861AK01-eAABBDCSAC800M模块PM861AK01PM861AK01-eAABBDCSAC800M模块PM861AK01PM861AK01-eA-------------------------------------------------------------------------------------------------------------------技术发展到今天的信息时代,数据的存储和传输在嵌入式系统有了越来越重要的地位。而USB是目前设计成熟、应用广泛且使用极为简捷的技术,USB传输是一种高效方便的数据传输方式。基于上述原因,本文重点论述基于USB的海量存储(USBMassStorage)设备功能在ARM嵌入式系统中设计和应用。使用该设备功能,上位机可以像读写普通U盘一样对于系统采集并存储在FLASH中的数据进行读写。1硬件方案l.1器件简介S3C44B0X[1]是SAMSUNG公司出品的基于ARM7TDMI内核的RISC型微处理器,8kB指令和数据共享的缓存,主频可达66MHz,可以运行16位的Thumb指令和32位的ARM指令,且接口丰富,具有通用性。 K9F2808U0C[2]是SAMSUNG公司生产的一款Nand型闪存芯片,容量为16MB,读写速度快,数据保存时间长,可擦写10万次,在嵌入式系统中有着广泛的应用,主要是负责数据存储。PDIUSBDl2[3]是PHILIPS公司生产的带有并行总线和局部DMA传输能力的全速USB接口芯片,符合USB1.1版规范,可以与任何外部MCU/MPU实现并行接口,传输速度可达2MB/s。该USB芯片有1个控制端点和2个普通端点。1.2硬件连接图硬件连接如图1所示。在该系统中,FLASH芯片K9F2808U0C负责嵌入式系统中的数据存储;处理器S3C44B0X执行底层固件代码;USB接口芯片PDIUS-BDl2负责设备与上位机的通讯。这样系统采集并存储在闪存芯片中的数据便可以通过USB接口传输到上位机。海量存储设备硬件连接图2软件实现要实现实验系统与上位机的USB通讯,首先要正确设计PDIUSBD12的底层固件程序。而要实现系统的海量存储设备功能,还要有FLASH的读写操作代码和实现海量存储设备类规范的代码。下面从这3个方面来分析。软件开发环境为ARM公司的ADS1.2,USB监控和测试软件为BUSHound。2.1PDIUSBD12固件编程PDIUSBDl2固件结构和数据流向如图2所示。结构图中的硬件提取层是固件中的最底层代码,负责对处理器与PDIUSBDl2相连接的I/O口进行操作,以通知PDI-USBD12接下来处理器将对其进行命令操作或是数据操作。而命令接口层是基于硬件提取层的一套对PDIUS-BDl2进行操作的子程序,可以方便上层程序的编写。固件结构和数据流当PDIUSBD12向处理器发出中断请求时,处理器读取中断寄存器,根据中断源调用相应的中断服务处理程序,中断服务处理程序设置相应的事件标志,如果有数据传输并作相应的数据处理。根据USB协议[4],控制端点0用来负责设备的枚举,如获取设备各种描述符、设置地址、获取海量存储设备的逻辑单元数目和复位设备等操作。这些操作是通过中断和主循环共同完成的。这里端点1未用到,可以忽略其中断。端点2是主端点,用作Bulk-Only传输。在端点2的中断处理程序中实现Bulk-Only传输及命令解析和执行。其中,中断服务处理程序与主循环通过一个名为ControlData的结构体变量进行通讯。主循环初始化I/O口、事件标志bUSBFlags、建立包数据缓冲区、定时器和中断,重新连接USB总线后进入一个无限循环,当该循环轮询到某事件标志被置位时便进行相应的处理。特别是在设备枚举中当建立标志被置位时,根据设备请求的类型域ControlData,DeviceRequest,bmRequestType来确定是标准设备请求、厂商设备请求还是类型设备请求,再根据请求类型进行相应的调用。2.2K9F2808U0C读写操作K9F2808U0C共有1024块,每块32页,每页528B,其中512B用于存放数据,另外16B用于存放信息,如块的好坏标记、块逻辑地址和ECC校验和等。FLASH读写有其自身的特点,读写都以页为单位,可以随机读,但无法随机写,写操作前必须把写单元所在的块擦除。因此,对于该闪存的读操作可以采取直接读取来处理;而对于写操作,则通过设置块缓冲来解决,以减轻系统的任务和对FLASH的擦除次数。写操作的基本思想是:设置一个块缓冲区,待写数据先写入缓冲区对应的页地址,当缓冲区中待写数据的页地址到达31或者页地址未满31但传输已经结束时,先将目标块中待写页以外的有关数据保存到缓冲区对应的页地址,然后擦除整块,最后将缓冲区的数据拷贝到该块。写操作流程如图3所示。AB1398-PDM-075/AAB1398-DDM-005XAB1398DDM019AB1398-DDM-030AB1398-DDM-019AB1398DDM009XDNAB1398-DDM-020AB1398-DDM-030XAB1398-PDM-030SD301060883019451402755-10051401583-10051305348-10051196655-10051401635-15051304754-15051304441-175Jumo181-000-23000JohnsonMetasysDX-9100-8154AMTISA96P7106ICPWS-855AWACE-832AInoNetIPCr-M6CDInoNetIPC-M6566CIndu-SolIP20010570INDRAMATLE5-024INDRAMATTVM-1.2-50W1-220VINDRAMATTDM2.1-030-300-W1-220INDRAMATTDM1.2-100-300-W1-000LAUERVPC95c486PLauer830-1LauerVPC95eLambdaLNS-Z-15LABOD2-B64QGN3DZ380400-75-4Q75Kuka69-334-040KukaArt.-Nr69-327-921Kollmorgen7201-CANKNICK71-2-5KNICK820S14.Knick803RKNICK75X-2KlöcknerPKZM1-24KlöcknerPKZM1-16KlöcknerAMX2-230-6-400KleinwächterWST100WST100KlaschkaMSZR-Z1.03KISTLER1911ASPKesslerDMQ132.AK.4.AFBKEB15.F5.GBE-YMODABBAF145-30-11-72ABB3BSE040360R41ABBS271-K16ABBS283UX-K3ABBA40S-84CABBA40S-84CABBS271K3A240/415VABBS282-K1ABBOS30ACC12PABBS3NABBASC501-015-4-00P2ABBCBK-TM33-POSABBCBK-3SRLICABBACS601-0016-4-000B1200800ABB1SFA663003R1060ABB1SFA663003R1060ABBINNPM01ABB1SNA037902R1100ABB58031844CamtekSASMCOC00ABBESB-42010LABBVOY-12ABBUXAB727131R103ABBS1N015TLABBS503-C20-UA110VACABBACS500ABBS3N020TW-2ABBK1600SABBCA7-22MABBS201-B10ABB3HAB-880201/2BABBOESA-CF30J6SWABB4640/500AMAB1326AB-B515-GS2K5LABBOETL-NF175PABBABBOESA-F100JT6AABBSK824101-AFABBZLS189BBABBMS116ABBSACES3ISOMAXABBMF719626ABBT3N200TMABBSR926380AB1326AB-B430G-M2LABBS283-K16ABB58943410EABBTBL120ALDABBKC31E-01ABBA260-30-22-84ABBVBC6-30-10ABBEHW250WABBS282Z3AABBTU837V1ABBS274K1ABBACS-BRKABB3HAA1001-317ABBCBK-3MKIRABB12-220BABBESB-43015LABBK4TERABB48990001-FE/2DSSR-115ABBZA16-84ABBDSQC230ABBCBK-2BSL2-POSABBCBK-S2KS120ABB6216BZ10000ABB202-506-01ABB6205BZ10000ABBCBK-2BMKICABB6014BZ10000ABB6203BZ10000ABB6014BZ10000ABB6204BZ10100ABBREV-EH210-120VABBHPT-T200ABBA9-30-10ABBS272ABBRHC931ABB57288001ABB6228BZ10000DABB4925717-01ABB492838402ABB6009BZ10000ABBCP-24/20AABBS271ABBA12-30-01AB1326AB-B410G-21ABBYB161102-BVABBE21092ABBUC86-8CHABBFDC86-contABB73-297-900ABBVIZ-75ABB5STP-1842L0010ABBEHDBCK360-2ABBEHW160C-1L11ABBAF580-30ABBCBK-2BMLICABBKC631-YABB480V/6VABBA300W-20-22ABBFJ1003-3PB8BNVABBf364-63/0.03GE453AC2ABBABB57086785ABKZ800ABBACS401600615ABBS1N090TLABBCBK-M2BMLABBEH175C-1ABBVBC7-30-10ABB,A26-30-01ABB3E031709ABB492894301200-RACNABBOESA-CF30J65WABB6050NA10424ABBG00600A00ABBACS601-0020-6-000B1200901ABB940-128-102ABBYB560103-CD/23AB1326AB-B530E-21AB1326AB-B420-ES2K4LABBACS550-01-023A-4ABBACH550-UH-059A-4AB1326AB-B720F-21AB1326AB-B720F-21ABBYB560103-CHABBYYT102CABBA185-30-11-84ABB1FT3101-5AZ21-9-ZABBMPS-C-3716513A00ABB3HAB2241-1ABBEH260C-1ABBEH260C-1ABBEH260C-1ABBACS501-015-4-00P2ABBACS401601135ABBDSQC2498ABBEHW-250ABB3HAB3365-001ABB6004BZ10300ABB50VM1000ABBACS601-0020-4-S00B1200801ABB3HNE00025-1/16#29377ABB3HNE00025-1/16#29377ABBL3HAA-2121-2ABB3HAB5845-1ABB57775840ABBIP55ABBMPS-C2000ABBCAARS05HTABBACS601-0011-4-000B1200801ABBDSQC3253HAB2241ABBYT212001-ALABBPST60-600-70ABBD05010/R0004ABBGNT2009454R0004/05MA22GABBYB560101-SVABB5716075-E/3ABBYB560103-CCABB57160001-ACAAB1326AB-B520-FS2K5LABBYT213001-BBAB1326AB-B515E-21-K5ABBYB560103-CEABB3HAA3563-AGA/2ABBACS601-0020-2-S00B1200001ABBR3HAC10604-1AB1326AB-B515-GS2K5LABB264DCFBDFSSSA4A1V2E4N2ABB3HAB6372-1ABBMK14A-X020ABBPS60/4-50-P-LSS-3823ABB61001395ABBSK827085-AFABB3HAC17971-1ABB3HAC36191ABB3HAB6425-1ABBACS601-0016-4-000B1200800ABB1922RA00103AABBACS501-006-3-00P20000DABBACS601-0016-2-S00B1200801ABB57160001KABBREV-EH175-120VAB1326AB-B515G-21ABBYYT-102CABBACH500ABBVOY-12ABBAM54072ABB3HAB5960-1ABBA210-30-11AB1326AB-B515E-21ABB3HAB2213-1/1ABB3BSE030220R1ABB3HAB8801-1/2BABB980006R109ABB3GAA182111-BDAABBS6NQ600BWABBS6HQ600EWABBACS143-4K1-3ABB5761806-0DABBPP07512HSABBPP07512HSABBRF6153BHT100010R1ABB2000DAI02ABB6231BP10830C-BABB3HAC16917-1ABB3BSE008508R1ABB3BHB003387R0101ABB3ASD573001A1YPP110AAB1397-B050NAB1394-AM75MODULEAXIS15KWAB1336F-MCB-SP2DABCAT-1201-HA2ABBLC42TLR0012ABBV05402A00ABBACH550-UH-012A-4ABBAINT12CABBDCF504A0050NP53*ANP53*BNP53*C51402573-150DSAO1306DD1683-OCD06DD1683-0CC06DD1682-0CH26DD1681-0CA26DD1661-0AB1SST-PB3-CLXSST-SR4-CLXFBM233SR511GJR5252100R010107KT94GJR5252100R016107KT94DGJR5252100R020107KT94GJR5252100R026107KT94GJR5252100R326107KT945136-DN-PCC8102GF1180-8CACDIO16/16-0,5-1131BERGHOFID740CognexVM16A203-0075-CVPM-5118-32MATEQMF5F520SchneiderTSXDST3292安川YASKAWAADE-4C1CYASKAWACACRSR30TZ6SMEYaskawaDR2-A5YASKAWAUSAREM-05CFJ11YASKAWA4K171-841-3YASKAWACACR-SR44BB1AM-Y8YASKAWAE7BVB014XYASKAWACACR-SR02AB1ERYASKAWAXCAP04YASKAWAUCV000361YASKAWACACR-SR03AC1ERYASKAWACACR-SR02AC1ERYASKAWAETC507606-S3305YASKAWASGMAH-02AAF41YASKAWACACR-SR02AB1ERYASKAWACIMR-F55AS3YASKAWACACR-SRA5AB1ER)