基于USB接口的ARM9微控制器外部存儲器下載工具— MOLY-DO
上位機
本文引用地址:http://dyxdggzs.com/article/116955.htm開(kāi)發(fā)工具:Microsoft Visual Studio 2005、BusHound 5.0
原理:通過(guò)串口使用 CComPort 類(lèi)與 LPC3250 通信,完成固件代碼搬移;配置 USB 設備驅動(dòng)程序,查找 LPC3250 USB 設備,實(shí)現與下位機通信,完成對各種存儲設備的操作。注:有關(guān)UART啟動(dòng)握手,詳見(jiàn)上文或 LPC3250 用戶(hù)手冊。
難點(diǎn):CComPort類(lèi)、主界面控件移動(dòng)處理如:CControlPos、CSplitCtrl、CPTabCtrl等類(lèi)的實(shí)現。
1.LPC3250 UART5 啟動(dòng)
LPC3250 支持多種啟動(dòng)方式。啟動(dòng)程序可以識別、復制到內部 SRAM(IRAM)并從如下外部源上執行一個(gè)外部程序:
○ 使用UART5 或 USB 收發(fā)器的 UART 啟動(dòng)。
○ SLC/MLC NAND Fflash 啟動(dòng)。
○ 使用 SSP0 的 SPI 啟動(dòng)。
UART5 啟動(dòng)
UART 數據下載協(xié)議假設一個(gè)外部設備已經(jīng)連接到 UART5 或 設置為 UART 模式的 USB 收發(fā)器。數據下載協(xié)議的第一個(gè)動(dòng)作就是從 UART5 發(fā)送一個(gè) boot_id,外圍設備預計回應一個(gè) ‘A’(0x41)。如果收到一個(gè) ‘A’,UART5 再發(fā) boot_id。外圍設備預計回應一個(gè) ‘U’(0x55)和一個(gè) ‘3’(0x33)。如果 ‘U’ 和 ‘3’ 被接收到,之后 UART5 回應一個(gè) ‘R’(0x52)。外圍設備然后會(huì )預計發(fā)送一個(gè)起始地址(32 位值;以 4 個(gè) UART 字節連續發(fā)送),接下來(lái)是代碼數量(32 位值;以 4 個(gè) UART 字節連續發(fā)送)的傳輸。在此時(shí),代碼將被傳輸。傳遞的代碼按字節高低順序存放在起始地址,且當接收到正確數量的代碼后,開(kāi)機程序跳轉到傳輸代碼的起始地址并退出。開(kāi)機程序已經(jīng)放棄控制并轉移到開(kāi)始執行下載的程序。
如果 ‘A’、’U’、’3’ 不是在 1 秒之內被接收到,超時(shí),開(kāi)機程序跳至正常啟動(dòng)程序。
主應用程序
MOLY-DO 主窗口類(lèi)CMOLYDODlg 同樣是一個(gè) CDialog 類(lèi)。在 CMOLYDODlg 類(lèi)中,實(shí)現 CScrollBar(滾動(dòng)條)、CLRichEditCtrl(控制臺)、CControlPos(控制控件)、CSplitCtrl 等公用子類(lèi)以及各種存儲器的操作窗口類(lèi):CTabNANDDlg、CTabNORDlg、CTabSPIDlg、CTabSDRAMDly、CTabSRAMDlg。
自定義類(lèi) CMainOpt 用于 MOLY-DO 的主操作。在此類(lèi)中,通過(guò) USB 完成與下位機的各種通信任務(wù),如:執行操作(發(fā)命令字)、發(fā)送文件、接收文件、對比文件等等。主應用程序結構圖如圖3。
評論