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