《電子技術(shù)應(yīng)用》
您所在的位置:首頁 > 嵌入式技術(shù) > 設(shè)計(jì)應(yīng)用 > 基于USB接口的ARM9微控制器外部存儲(chǔ)器下載工具— MOLY-DO
基于USB接口的ARM9微控制器外部存儲(chǔ)器下載工具— MOLY-DO
互聯(lián)網(wǎng)
摘要: 目前市場(chǎng)上部分ARM系列微控制器沒有自帶燒寫外部存儲(chǔ)器的bootloader或者只能通過串口等實(shí)現(xiàn)對(duì)各種存儲(chǔ)器的燒寫。鑒于串口速度過慢、產(chǎn)品批量生產(chǎn)等原因,我們可以開發(fā)一個(gè)通過 USB 接口,對(duì) ARM9微控制器(本文以LPC3250為例) 的外部存儲(chǔ)器進(jìn)行讀寫操作,實(shí)現(xiàn)映像文件燒寫的 USB 下載工具 — MOLY-DO。
Abstract:
Key words :
       目前市場(chǎng)上部分ARM系列微控制器沒有自帶燒寫外部存儲(chǔ)器" title="存儲(chǔ)器">存儲(chǔ)器的bootloader或者只能通過串口等實(shí)現(xiàn)對(duì)各種存儲(chǔ)器的燒寫。鑒于串口速度過慢、產(chǎn)品批量生產(chǎn)等原因,我們可以開發(fā)一個(gè)通過 USB" title="USB">USB 接口,對(duì) ARM9" title="ARM9">ARM9微控制器(本文以LPC3250為例) 的外部存儲(chǔ)器進(jìn)行讀寫操作,實(shí)現(xiàn)映像文件燒寫的 USB 下載工具 — MOLY-DO

  MOLY-DO 分為兩個(gè)部分,其一為上位機(jī),即常用的 Windows 應(yīng)用程序,提供對(duì) LPC3250的各種操作;其二為下位機(jī),即可獨(dú)立運(yùn)行在 LPC3250 上的固件程序,它包括 LPC3250 各種外圍設(shè)備的驅(qū)動(dòng)程序以及下位機(jī)主體 USB Device 子系統(tǒng)。

  硬件工具:

  ○ ARM9 參考板一塊(本文以 LPC3250 終端設(shè)備為例);

  ○ 一臺(tái)有串口和 USB 接口的 PC 機(jī);

  ○ 串口線(直連)和 USB 打印線各一根。

  工作原理

  使用串口線和 USB 打印線分別連接LPC3250 終端設(shè)備的 UART5 插槽和 USB-B 型接口到 PC 機(jī)。運(yùn)行上位機(jī) MOLY-DO 彈出一個(gè)登陸框,可選擇串口以及參考板類型,然后連接登錄 MOLY-DO 上位機(jī)主界面,其中在登錄的過程中通過串口下載usb_burn.bin 映像文件到LPC3250 SRAM,此時(shí) LPC3250 終端運(yùn)行 usb_burn.bin 映像中的固件程序,完成 LPC3250 下位機(jī)的初始化。

  在上位機(jī)主界面,可以對(duì)LPC3250 終端設(shè)備上的 SRAM、SDRAM、NANDFlash、NORFlash 以及 SPIFlash 進(jìn)行讀寫操作。如:燒寫一級(jí)啟動(dòng)代碼 restore.bin 到 NANDFlash 的第 0 塊,燒寫 u-boot 映像、linux 內(nèi)核和文件系統(tǒng)映像到 NANDFlash 中。

  1.下位機(jī)

  開發(fā)工具:KEIL MDK 3.22a 或 GCC

  難點(diǎn):LPC3250 中斷處理、USB Device 驅(qū)動(dòng)程序以及 restore 等啟動(dòng)程序的頭文件的燒寫。

  在 IRAM 中運(yùn)行固件程序,自定義 USB Device 類型,配合 PC 機(jī) USB Device 驅(qū)動(dòng)程序與上位機(jī)通信。在下位機(jī)中實(shí)現(xiàn)各種外圍設(shè)備模塊的功能,特別是某種存儲(chǔ)器的讀寫操作。USB Device 子系統(tǒng)

  1.LPC3250 USB 設(shè)備控制器

  USB 是一種 4 線總線,它支持一個(gè)主機(jī)同時(shí)與多個(gè)外設(shè)(最多可達(dá) 127 個(gè))之間的通信。主機(jī)控制器通過基于令牌的協(xié)議給相應(yīng)的設(shè)備分配 USB 帶寬。USB 總線支持設(shè)備的熱插撥和動(dòng)態(tài)配置。所有傳輸都由主機(jī)控制器來啟動(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)傳輸方式。控制傳輸主要用于在設(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)寄存器來指示,產(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è)。

  通過 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等小頁和 K9F1G08、K9F2G08等大頁以及 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上位機(jī)

  開發(fā)工具:Microsoft Visual Studio 2005、BusHound 5.0

  原理:通過串口使用 CComPort 類與 LPC3250 通信,完成固件代碼搬移;配置 USB 設(shè)備驅(qū)動(dòng)程序,查找 LPC3250 USB 設(shè)備,實(shí)現(xiàn)與下位機(jī)通信,完成對(duì)各種存儲(chǔ)設(shè)備的操作。注:有關(guān)UART啟動(dòng)握手,詳見上文或 LPC3250 用戶手冊(cè)。

  難點(diǎn):CComPort類、主界面控件移動(dòng)處理如:CControlPos、CSplitCtrl、CPTabCtrl等類的實(shí)現(xiàn)。

  1.LPC3250 UART5 啟動(dòng)

  LPC3250 支持多種啟動(dòng)方式。啟動(dòng)程序可以識(shí)別、復(fù)制到內(nèi)部 SRAM(IRAM)并從如下外部源上執(zhí)行一個(gè)外部程序:

  ○ 使用UART5 或 USB 收發(fā)器的 UART 啟動(dòng)。

  ○ SLC/MLC NAND Fflash 啟動(dòng)。

  ○ 使用 SSP0 的 SPI 啟動(dòng)。

  UART5 啟動(dòng)

  UART 數(shù)據(jù)下載協(xié)議假設(shè)一個(gè)外部設(shè)備已經(jīng)連接到 UART5 或 設(shè)置為 UART 模式的 USB 收發(fā)器。數(shù)據(jù)下載協(xié)議的第一個(gè)動(dòng)作就是從 UART5 發(fā)送一個(gè) boot_id,外圍設(shè)備預(yù)計(jì)回應(yīng)一個(gè) ‘A’(0x41)。如果收到一個(gè) ‘A’,UART5 再發(fā) boot_id。外圍設(shè)備預(yù)計(jì)回應(yīng)一個(gè) ‘U’(0x55)和一個(gè) ‘3’(0x33)。如果 ‘U’ 和 ‘3’ 被接收到,之后 UART5 回應(yīng)一個(gè) ‘R’(0x52)。外圍設(shè)備然后會(huì)預(yù)計(jì)發(fā)送一個(gè)起始地址(32 位值;以 4 個(gè) UART 字節(jié)連續(xù)發(fā)送),接下來是代碼數(shù)量(32 位值;以 4 個(gè) UART 字節(jié)連續(xù)發(fā)送)的傳輸。在此時(shí),代碼將被傳輸。傳遞的代碼按字節(jié)高低順序存放在起始地址,且當(dāng)接收到正確數(shù)量的代碼后,開機(jī)程序跳轉(zhuǎn)到傳輸代碼的起始地址并退出。開機(jī)程序已經(jīng)放棄控制并轉(zhuǎn)移到開始執(zhí)行下載的程序。

  如果 ‘A’、’U’、’3’ 不是在 1 秒之內(nèi)被接收到,超時(shí),開機(jī)程序跳至正常啟動(dòng)程序。

  主應(yīng)用程序

  MOLY-DO 主窗口類CMOLYDODlg 同樣是一個(gè) CDialog 類。在 CMOLYDODlg 類中,實(shí)現(xiàn) CScrollBar(滾動(dòng)條)、CLRichEditCtrl(控制臺(tái))、CControlPos(控制控件)、CSplitCtrl 等公用子類以及各種存儲(chǔ)器的操作窗口類:CTabNANDDlg、CTabNORDlg、CTabSPIDlg、CTabSDRAMDly、CTabSRAMDlg。

  自定義類 CMainOpt 用于 MOLY-DO 的主操作。在此類中,通過 USB 完成與下位機(jī)的各種通信任務(wù),如:執(zhí)行操作(發(fā)命令字)、發(fā)送文件、接收文件、對(duì)比文件等等。主應(yīng)用程序結(jié)構(gòu)圖如圖3。

此內(nèi)容為AET網(wǎng)站原創(chuàng),未經(jīng)授權(quán)禁止轉(zhuǎn)載。
主站蜘蛛池模板: 日韩 国产 欧美 精品 在线 | 本田岬最猛喷一地在线播放 | 日韩三级一区二区 | caopren免费视频国产 | free极度另类性欧美 | 国产女同志videos | 国产精品成人在线播放 | 激情成人综合网 | 亚洲成a人片在线观看尤物 亚洲成a人片在线观看88 | 成年男女免费视频网站播放 | 亚洲激情一区 | 日韩伦理一区二区三区 | 一级片视频在线观看 | 女人洗澡一级毛片一级毛片 | 色综合成人网 | 一个人看的视频免费高清在线 | 久久99精品波多结衣一区 | 成人欧美视频在线观看播放 | 精品视频一区二区三区在线播放 | 88国产经典欧美一区二区三区 | 男女爽爽无遮拦午夜视频 | 日韩在线国产精品 | 欧美性最xxx | 国产高清在线精品免费 | 97午夜理伦片在线影院 | 日韩免费观看视频 | 啪免费视频 | 国产最新精品2020好看的 | 日本人成免费大片 | 亚洲 国产 日韩 欧美 | 免费成人高清 | 怡红院在线视频观看 | 免费观看60秒做受视频 | 欧美日本黄色 | 久久高清精品 | 老司机精品久久最新免费 | 亚洲国产系列一区二区三区 | 欧美操片在线观看 | 456亚洲人成影视在线观看 | 青草草在线 | 国产在线高清视频 |