基于USB接口的ARM9微控制器外部存儲器下載工具— MOLY-DO
1.LPC3250 USB 設備控制器
本文引用地址:http://cafeforensic.com/article/116955.htmUSB 是一種 4 線總線,它支持一個主機同時與多個外設(最多可達 127 個)之間的通信。主機控制器通過基于令牌的協(xié)議給相應的設備分配 USB 帶寬。USB 總線支持設備的熱插撥和動態(tài)配置。所有傳輸都由主機控制器來啟動。主機定義 1ms 幀的數(shù)據(jù)傳輸。每幀包含 SoF 標記和與設備端點之間傳輸?shù)臄?shù)據(jù)處理。每個設備最多包含有 16 個邏輯或 32 個物理端點。定義了 4 種類型的端點傳輸方式。控制傳輸主要用于在設備連接時對設備進行枚舉以及其他因設備而已的特定操作。中斷傳輸用于對延遲要求嚴格、小量數(shù)據(jù)的可靠傳輸,如鍵盤、游戲手柄等。批量傳輸用于對延遲要求寬松,大量數(shù)據(jù)的可靠傳輸,如U 盤等。同步傳輸用于對可靠性要求不高的實時數(shù)據(jù)傳輸,如攝像頭、USB 音響等。
設備控制器使能與 USB 主機控制器之間的 12 Mb/s 的數(shù)據(jù)傳輸。它由寄存器接口、串行接口引擎、端點緩沖存儲器和 DMA 控制器組成。串行接口引擎對 USB 數(shù)據(jù)流進行譯碼,并將數(shù)據(jù)寫入相應的端點緩沖存儲器。結束后的 USB 傳輸或錯誤條件的狀態(tài)由狀態(tài)寄存器來指示,產(chǎn)生中斷(如果能中斷使能)。使能時,DMA 控制器將控制端點緩沖區(qū)和 USB RAM 之間的數(shù)據(jù)傳輸。
MOLY-DO 下位機 USB
MOLY-DO 采用 USB Full Speed 協(xié)議。邏輯端口 0 用于初始化 USB Device,在 USB 設備描述符中,我們采用自定義設備。選用邏輯端口 1、2 用于數(shù)據(jù)傳輸;其中邏輯端口 1 發(fā)送命令字,邏輯端口 2 用于數(shù)據(jù)傳輸。
使用 DMA 模式傳輸,有關 DMA 模式傳輸,詳情請見 LPC32x0 用戶手冊。
通過 USB 能夠?qū)?SDRAM、SRAM、NANDFlash、NORFlash、SPIFlash 等存儲器外設進行操作,下面將對 NANDFlash 操作進行簡單介紹。
1.NANDFlash 操作
LPC3250 有兩個 NAND Flash 控制器,一個用于 multi level NAND Flash 設備而另外一個用于 single level NAND Flash 設備。
在 MOLY-DO 下位機中,完全實現(xiàn) SLC、MLC NAND 設備驅(qū)動程序,以供 application() 程序所調(diào)用。例如使用nand_write_sector() 函數(shù)燒寫 kickstart.bin 至 NANDFlash 中。
目前,下位機系統(tǒng)已支持三星 K9F2808、K9F5608等小頁和 K9F1G08、K9F2G08等大頁以及 ST NAND128-A、NAND256-A、NAND512-A、NAND01G-A等多種 NANDFlash。
同時,下位機還支持 SST 39VF6401B 等 NORFlash 以及 MX25L1605D 等 SPIFlash。
2.USB Device 驅(qū)動程序
開發(fā)工具:
○ DDK或WDK、BusHound 5.0、DriverStudio_3.0 和 VC++ 6.0
原理:
實現(xiàn)LPC3250 USB Device自定義設備類型驅(qū)動,開辟兩個邏輯端點分別用于指令和數(shù)據(jù)的傳輸。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
評論