基于USB接口的ARM9微控制器外部存储器下载工具— MOLY-DO
MOLY-DO 分为两个部分,其一为上位机,即常用的 Windows 应用程序,提供对 LPC3250的各种操作;其二为下位机,即可独立运行在 LPC3250 上的固件程序,它包括 LPC3250 各种外围设备的驱动程序以及下位机主体 USB Device 子系统。
硬件工具:
○ ARM9 参考板一块(本文以 LPC3250 终端设备为例);
○ 一台有串口和 USB 接口的 PC 机;
○ 串口线(直连)和 USB 打印线各一根。
工作原理
使用串口线和 USB 打印线分别连接LPC3250 终端设备的 UART5 插槽和 USB-B 型接口到 PC 机。运行上位机 MOLY-DO 弹出一个登陆框,可选择串口以及参考板类型,然后连接登录 MOLY-DO 上位机主界面,其中在登录的过程中通过串口下载usb_burn.bin 映像文件到LPC3250 SRAM,此时 LPC3250 终端运行 usb_burn.bin 映像中的固件程序,完成 LPC3250 下位机的初始化。
在上位机主界面,可以对LPC3250 终端设备上的 SRAM、SDRAM、NANDFlash、NORFlash 以及 SPIFlash 进行读写操作。如:烧写一级启动代码 restore.bin 到 NANDFlash 的第 0 块,烧写 u-boot 映像、linux 内核和文件系统映像到 NANDFlash 中。
1.下位机
开发工具:KEIL MDK 3.22a 或 GCC
难点:LPC3250 中断处理、USB Device 驱动程序以及 restore 等启动程序的头文件的烧写。
在 IRAM 中运行固件程序,自定义 USB Device 类型,配合 PC 机 USB Device 驱动程序与上位机通信。在下位机中实现各种外围设备模块的功能,特别是某种存储器的读写操作。
USB Device 子系统1.LPC3250 USB 设备控制器
USB 是一种 4 线总线,它支持一个主机同时与多个外设(最多可达 127 个)之间的通信。主机控制器通过基于令牌的协议给相应的设备分配 USB 带宽。USB 总线支持设备的热插拨和动态配置。所有传输都由主机控制器来启动。主机定义 1ms 帧的数据传输。每帧包含 SoF 标记和与设备端点之间传输的数据处理。每个设备最多包含有 16 个逻辑或 32 个物理端点。定义了 4 种类型的端点传输方式。控制传输主要用于在设备连接时对设备进行枚举以及其他因设备而已的特定操作。中断传输用于对延迟要求严格、小量数据的可靠传输,如键盘、游戏手柄等。批量传输用于对延迟要求宽松,大量数据的可靠传输,如U 盘等。同步传输用于对可靠性要求不高的实时数据传输,如摄像头、USB 音响等。
设备控制器使能与 USB 主机控制器之间的 12 Mb/s 的数据传输。它由寄存器接口、串行接口引擎、端点缓冲存储器和 DMA 控制器组成。串行接口引擎对 USB 数据流进行译码,并将数据写入相应的端点缓冲存储器。结束后的 USB 传输或错误条件的状态由状态寄存器来指示,产生中断(如果能中断使能)。使能时,DMA 控制器将控制端点缓冲区和 USB RAM 之间的数据传输。
MOLY-DO 下位机 USB
MOLY-DO 采用 USB Full Speed 协议。逻辑端口 0 用于初始化 USB Device,在 USB 设备描述符中,我们采用自定义设备。选用逻辑端口 1、2 用于数据传输;其中逻辑端口 1 发送命令字,逻辑端口 2 用于数据传输。
使用 DMA 模式传输,有关 DMA 模式传输,详情请见 LPC32x0 用户手册。
通过 USB 能够对 SDRAM、SRAM、NANDFlash、NORFlash、SPIFlash 等存储器外设进行操作,下面将对 NANDFlash 操作进行简单介绍。
1.NANDFlash 操作
LPC3250 有两个 NAND Flash 控制器,一个用于 multi level NAND Flash 设备而另外一个用于 single level NAND Flash 设备。
在 MOLY-DO 下位机中,完全实现 SLC、MLC NAND 设备驱动程序,以供 application() 程序所调用。例如使用nand_write_sector() 函数烧写 kickstart.bin 至 NANDFlash 中。
目前,下位机系统已支持三星 K9F2808、K9F5608等小页和 K9F1G08、K9F2G08等大页以及 ST NAND128-A、NAND256-A、NAND512-A、NAND01G-A等多种 NANDFlash。
同时,下位机还支持 SST 39VF6401B 等 NORFlash 以及 MX25L1605D 等 SPIFlash。
2.USB Device 驱动程序
开发工具:
○ DDK或WDK、BusHound 5.0、DriverStudio_3.0 和 VC++ 6.0
原理:
实现LPC3250 USB Device自定义设备类型驱动,开辟两个
- 基于WinCE6.0的LPC3250串口驱动程序开发(01-05)
- 一种智能化ARINC429通讯卡设计与实现(10-08)
- 一款基于LPC3250单片机的智能电子血压计设计(08-19)
- Windows CE 进程、线程和内存管理(11-09)
- RedHatLinux新手入门教程(5)(11-12)
- uClinux介绍(11-09)