ABB DCS AC800M模块 PM861AK01 PM861AK01-eA
ABB DCS AC800M模块 PM861AK01 PM861AK01-eA
ABB DCS AC800M模块 PM861AK01 PM861AK01-eA
-------------------------------------------------------------------------------------------------------------------
技术发展到今天的信息时代,数据的存储和传输在嵌入式系统有了越来越重要的地位。而USB是目前设计成熟、应用广泛且使用极为简捷的技术,USB传输是一种高效方便的数据传输方式。基于上述原因,本文重点论述基于USB的海量存储(USBMassStorage)设备功能在ARM嵌入式系统中设计和应用。使用该设备功能,上位机可以像读写普通U盘一样对于系统采集并存储在FLASH中的数据进行读写。
1硬件方案
l.1器件简介
S3C44B0X[1]是SAMSUNG公司出品的基于ARM7TDMI内核的RISC型微处理器,8kB指令和数据共享的缓存,主频可达66MHz,可以运行16位的Thumb指令和32位的ARM指令,且接口丰富,具有通用性。
&nbs
p;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所示。
AB 1398-PDM-075 /A
AB 1398-DDM-005X
AB 1398DDM019
AB 1398-DDM-030
AB 1398-DDM-019
AB 1398DDM009XDN
AB 1398-DDM-020
AB 1398-DDM-030X
AB 1398-PDM-030
SD301 0608830194
51402755-100
51401583-100
51305348-100
51196655-100
51401635-150
51304754-150
51304441-175
Jumo 181-000-23 000
Johnson Metasys DX-9100-8154
AMT ISA96 P7 106
ICP WS-855AW ACE-832A
InoNet IPCr-M6CD
InoNet IPC-M6 566C
Indu-Sol IP20 010570
INDRAMAT LE5-024
INDRAMAT TVM-1.2-50W1-220V
INDRAMAT TDM2.1-030-300-W1-220
INDRAMAT TDM1.2-100-300-W1-000
LAUER VPC95c 486P
Lauer 830-1
Lauer VPC95e
Lambda LNS-Z-15
LABOD 2-B6 4Q GN 3 DZ 380 400-75-4Q 75
Kuka 69-334-040
Kuka Art.-Nr 69-327-921
Kollmorgen 7201-CAN
KNICK 71-2-5
KNICK 820 S1 4.
Knick 803R
KNICK 75X-2
Klöckner PKZM1-24
Klöckner PKZM1-16
Klöckner AMX2-230-6-400
Kleinwächter WST100 WST 100
Klaschka MSZR - Z1.03
KISTLER 1911ASP
Kessler DMQ 132.AK.4.AFB
KEB 15.F5.GBE-YMOD
ABB AF145-30-11-72
ABB 3BSE040360R41
ABB S271-K16
ABB S283UX-K3
ABB A40S-84C
ABB A40S-84C
ABB S271 K3A 240/415V
ABB S282-K1
ABB OS30ACC12P
ABB S3N
ABB ASC501-015-4-00P2
ABB CBK-TM3 3-POS
ABB CBK-3SRLIC
ABB ACS601-0016-4-000B1200800
ABB 1SFA663003R1060
ABB 1SFA663003R1060
ABB INNPM01
ABB 1SNA037902R1100
ABB 58031844
Camtek SASMCOC00
ABB ESB-42010L
ABB VOY-12
ABB UXAB727131R103
ABB S1N015TL
ABB S503-C20-UA110VAC
ABB ACS500
ABB S3N020TW-2
ABB K1600S
ABB CA7-22M
ABB S201 -B10
ABB 3HAB-880201/2B
ABB OESA-CF30J6SW
ABB 4640/500AM
AB 1326AB-B515-GS2K5L
ABB OETL-NF175PABB
ABB OESA-F100JT6A
ABB SK824101-AF
ABB ZLS189BB
ABB MS116
ABB SACE S3 ISOMAX
ABB MF719626
ABB T3N200TM
ABB SR926380
AB 1326AB-B430G-M2L
ABB S283-K16
ABB 58943410E
ABB TBL120ALD
ABB KC31E-01
ABB A260-30-22-84
ABB VBC6-30-10
ABB EHW250W
ABB S282 Z3A
ABB TU837V1
ABB S274K1
ABB ACS-BRK
ABB 3HAA1001-317
ABB CBK-3MKIR
ABB 12-220B
ABB ESB-43015L
ABB K4TER
ABB 48990001-FE/2 DSSR-115
ABB ZA16-84
ABB DSQC 230
ABB CBK-2BSL 2-POS
ABB CBK-S2KS120
ABB 6216BZ10000
ABB 202-506-01
ABB 6205BZ10000
ABB CBK-2BMKIC
ABB 6014BZ10000
ABB 6203BZ10000
ABB 6014BZ10000
ABB 6204BZ10100
ABB REV-EH210-120V
ABB HPT-T200
ABB A9-30-10
ABB S272
ABB RHC931
ABB 57288001
ABB 6228BZ10000D
ABB 4925717-01
ABB 492838402
ABB 6009BZ10000
ABB CP-24/20A
ABB S271
ABB A12-30-01
AB 1326AB-B410G-21
ABB YB161102-BV
ABB E21092
ABB UC86-8CH
ABB FDC86-cont
ABB 73-297-900
ABB VIZ-75
ABB 5STP-1842L0010
ABB EHDBCK360-2
ABB EHW160C-1L11
ABB AF580-30
ABB CBK-2BMLIC
ABB KC631-Y
ABB 480V/6V
ABB A300W-20-22
ABB FJ1003-3PB8BNV
ABB f364-63/0.03
GE 453AC2ABB
ABB 57086785
AB KZ800
ABB ACS401600615
ABB S1N090TL
ABB CBK-M2BML
ABB EH175C-1
ABB VBC7-30-10
ABB, A26-30-01
ABB 3E031709
ABB 492894301 200-RACN
ABB OESA-CF30J65W
ABB 6050NA10424
ABB G00600A00
ABB ACS601-0020-6-000B1200901
ABB 940-128-102
ABB YB560103-CD/23
AB 1326AB-B530E-21
AB 1326AB-B420-ES2K4L
ABB ACS550-01-023A-4
ABB ACH550-UH-059A-4
AB 1326AB-B720F-21
AB 1326AB-B720F-21
ABB YB560103-CH
ABB YYT 102C
ABB A185-30-11-84
ABB 1FT3101-5AZ21-9-Z
ABB MPS-C-3 716513A00
ABB 3HAB2241-1
ABB EH260C-1
ABB EH260C-1
ABB EH260C-1
ABB ACS501-015-4-00P2
ABB ACS401601135
ABB DSQC2498
ABB EHW-250
ABB 3HAB3365-001
ABB 6004BZ10300
ABB 50VM1000
ABB ACS601-0020-4-S00B1200801
ABB 3HNE 00025-1/16 #29377
ABB 3HNE 00025-1/16 #29377
ABB L 3HAA-2121-2
ABB 3HAB 5845-1
ABB 57775840
ABB IP55
ABB MPS-C 2000
ABB CAARS05HT
ABB ACS601-0011-4-000B1200801
ABB DSQC325 3HAB2241
ABB YT212001-AL
ABB PST60-600-70
ABB D05010/R0004
ABB GNT2009454R0004/05MA22G
ABB YB560101-SV
ABB 5716075-E/3
ABB YB560103-CC
ABB 57160001-ACA
AB 1326AB-B520-FS2K5L
ABB YT213001-BB
AB 1326AB-B515E-21-K5
ABB YB560103-CE
ABB 3HAA3563-AGA/2
ABB ACS601-0020-2-S00B1200001
ABB R3HAC10604-1
AB 1326AB-B515-GS2K5L
ABB 264DCFBDFSSSA4A1V2E4N2
ABB 3HAB6372-1
ABB MK14A-X020
ABB PS60/4-50-P-LSS-3823
ABB 61001395
ABB SK827085-AF
ABB 3HAC17971-1
ABB 3HAC36191
ABB 3HAB 6425-1
ABB ACS601-0016-4-000B1200800
ABB 1922RA00103A
ABB ACS501-006-3-00P20000D
ABB ACS601-0016-2-S00B1200801
ABB 57160001K
ABB REV-EH175-120V
AB 1326AB-B515G-21
ABB YYT-102C
ABB ACH 500
ABB VOY-12
ABB AM54072
ABB 3HAB 5960-1
ABB A210-30-11
AB 1326AB-B515E-21
ABB 3HAB 2213-1/1
ABB 3BSE030220R1
ABB 3HAB8801-1/2B
ABB 980 006 R109
ABB 3GAA182111-BDA
ABB S6NQ600BW
ABB S6HQ600EW
ABB ACS143-4K1-3
ABB 5761806-0D
ABB PP07512HS
ABB PP07512HS
ABB RF615 3BHT100010R1
ABB 2000 DAI02
ABB 6231BP10830C-B
ABB 3HAC16917-1
ABB 3BSE008508R1
ABB 3BHB003387R0101
ABB 3ASD573001A1 YPP110A
AB 1397-B050N
AB 1394-AM75 MODULE AXIS15KW
AB 1336F-MCB-SP2D
AB CAT-1201-HA2
ABB LC42TL R0012
ABB V05402A00
ABB ACH550-UH-012A-4
ABB AINT12C
ABB DCF504A0050
NP53*A
NP53*B
NP53*C
51402573-150
DSAO130
6DD1683-OCD0
6DD1683-0CC0
6DD1682-0CH2
6DD1681-0CA2
6DD1661-0AB1
SST-PB3-CLX
SST-SR4-CLX
FBM233
SR511
GJR5252100R0101 07KT94
GJR5252100R0161 07KT94D
GJR5252100R0201 07KT94
GJR5252100R0261 07KT94
GJR5252100R3261 07KT94
5136-DN-PC
C810 2GF1180-8CA
CDIO 16/16-0,5-1131 BERGHOF ID740
Cognex VM16A 203-0075-C VPM-5118-32M
ATEQ MF5 F520
Schneider TSXDST3292
安川YASKAWA ADE-4C1C
YASKAWA CACRSR30TZ6SME
Yaskawa DR2-A5
YASKAWA USAREM-05CFJ11
YASKAWA 4K171-841-3
YASKAWA CACR-SR44BB1AM-Y8
YASKAWA E7BVB014X
YASKAWA CACR-SR02AB1ER
YASKAWA XCAP04
YASKAWA UCV000361
YASKAWA CACR-SR03AC1ER
YASKAWA CACR-SR02AC1ER
YASKAWA ETC507606-S3305
YASKAWA SGMAH-02AAF41
YASKAWA CACR-SR02AB1ER
YASKAWA CIMR-F55AS3
YASKAWA CACR-SRA5AB1ER