微波EDA网,见证研发工程师的成长!
首页 > 硬件设计 > 嵌入式设计 > 基于USB接口的ARM9微控制器外部存储器下载工具— MOLY-DO

基于USB接口的ARM9微控制器外部存储器下载工具— MOLY-DO

时间:02-18 来源:电子产品世界 点击:

逻辑端点分别用于指令和数据的传输。API 如下:Usb_Link_Data_Write、Usb_Link_Data_Read、Usb_Link_CMD_Write、Usb_Link_CMD_Read。

  生成:

MOLY_DO_LIB.dll、MOLY_DO_LIB.lib、usb_link.inf、usb_link.sys

上位机

开发工具:Microsoft Visual Studio 2005、BusHound 5.0

原理:通过串口使用 CComPort 类与 LPC3250 通信,完成固件代码搬移;配置 USB 设备驱动程序,查找 LPC3250 USB 设备,实现与下位机通信,完成对各种存储设备的操作。注:有关UART启动握手,详见上文或 LPC3250 用户手册。

难点:CComPort类、主界面控件移动处理如:CControlPos、CSplitCtrl、CPTabCtrl等类的实现。

  1.LPC3250 UART5 启动

LPC3250 支持多种启动方式。启动程序可以识别、复制到内部 SRAM(IRAM)并从如下外部源上执行一个外部程序:

○ 使用UART5 或 USB 收发器的 UART 启动。

○ SLC/MLC NAND Fflash 启动。

○ 使用 SSP0 的 SPI 启动。

UART5 启动

UART 数据下载协议假设一个外部设备已经连接到 UART5 或 设置为 UART 模式的 USB 收发器。数据下载协议的第一个动作就是从 UART5 发送一个 boot_id,外围设备预计回应一个 ‘A’(0x41)。如果收到一个 ‘A’,UART5 再发 boot_id。外围设备预计回应一个 ‘U’(0x55)和一个 ‘3’(0x33)。如果 ‘U’ 和 ‘3’ 被接收到,之后 UART5 回应一个 ‘R’(0x52)。外围设备然后会预计发送一个起始地址(32 位值;以 4 个 UART 字节连续发送),接下来是代码数量(32 位值;以 4 个 UART 字节连续发送)的传输。在此时,代码将被传输。传递的代码按字节高低顺序存放在起始地址,且当接收到正确数量的代码后,开机程序跳转到传输代码的起始地址并退出。开机程序已经放弃控制并转移到开始执行下载的程序。

如果 ‘A’、’U’、’3’ 不是在 1 秒之内被接收到,超时,开机程序跳至正常启动程序。

  主应用程序

MOLY-DO 主窗口类CMOLYDODlg 同样是一个 CDialog 类。在 CMOLYDODlg 类中,实现 CScrollBar(滚动条)、CLRichEditCtrl(控制台)、CControlPos(控制控件)、CSplitCtrl 等公用子类以及各种存储器的操作窗口类:CTabNANDDlg、CTabNORDlg、CTabSPIDlg、CTabSDRAMDly、CTabSRAMDlg。

自定义类 CMainOpt 用于 MOLY-DO 的主操作。在此类中,通过 USB 完成与下位机的各种通信任务,如:执行操作(发命令字)、发送文件、接收文件、对比文件等等。主应用程序结构图如图3。

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top