關(guān) 閉

新聞中心

EEPW首頁(yè) > 工控自動(dòng)化 > 設(shè)計(jì)應(yīng)用 > MCF51JM128的類U盤方式在線編程設(shè)計(jì)

MCF51JM128的類U盤方式在線編程設(shè)計(jì)

作者: 時(shí)間:2009-07-09 來(lái)源:網(wǎng)絡(luò) 收藏

引 言
在線編程(In-Circuit Programming,ICP)是目前普遍應(yīng)用的一種速度較快的MCU編程方式。對(duì)于筆者使用的Freescale半導(dǎo)體公司的8位MCU來(lái)講,通過(guò)芯片本身的串行通信接口進(jìn)行在線編程的速度比使用芯片自帶的MON08或BDM接口進(jìn)行編程的速度要快得多。除了使用串行通信接口進(jìn)行編程,由于自帶USB 模塊的芯片增多,使用USB接口進(jìn)行在線編程速度更快。同時(shí),由于可以使用USB供電,所以使用的電纜更少。
但筆者也發(fā)現(xiàn),大部分在線編程系統(tǒng)都包含了PC方程序和MCU方程序兩部分,在線編程時(shí)需要運(yùn)行PC方的程序方可進(jìn)行,但很多時(shí)候會(huì)遇到因主機(jī)或操作系統(tǒng)平臺(tái)更換而引起PC方程序無(wú)法運(yùn)行的情況。針對(duì)此種問(wèn)題,筆者嘗試在Freescale半導(dǎo)體公司新推出的帶有USB模塊的芯片上實(shí)現(xiàn)了類U盤方式的在線編程功能:像U盤一樣直接將目標(biāo)文件放入便可實(shí)現(xiàn)編程,省卻了PC方程序,方便了用戶實(shí)際使用。
(以下簡(jiǎn)稱“”)是Freescale半導(dǎo)體公司于2008年推出的一款Coldfire V1內(nèi)核系列的微控制器,該芯片主要特點(diǎn)是內(nèi)含一個(gè)集成的USB控制器,支持USB2.0全速主機(jī)、設(shè)備和On-The-Go。這種配置一般出現(xiàn)在高端微處理器中,在其他微處理器中很少出現(xiàn),可以說(shuō)是JM128非常有競(jìng)爭(zhēng)力的特色。

本文引用地址:http://butianyuan.cn/article/202682.htm

1 設(shè)計(jì)思路
實(shí)現(xiàn)類U盤方式的在線編程功能,主要的工作在于實(shí)現(xiàn)JM128的類U盤功能。筆者在學(xué)習(xí)期間參與過(guò)在線編程系統(tǒng)的開(kāi)發(fā),其中一些已有的功能模塊可以借鑒使用。該設(shè)計(jì)的主要思路是,通過(guò)開(kāi)發(fā)板上的某引腳狀態(tài)判斷是否進(jìn)入在線編程狀態(tài),若進(jìn)入則對(duì)USB模塊進(jìn)行初始化,完成與PC機(jī)的U盤枚舉的交互工作。 JM128不斷查詢PC方對(duì)U盤的操作,用戶此時(shí)可打開(kāi)U盤將目標(biāo)文件粘貼,JM128一邊接收目標(biāo)代碼數(shù)據(jù)包一邊對(duì)數(shù)據(jù)包進(jìn)行分析,若符合要求則對(duì) Flash編程操作,編程結(jié)束后再接收下一包數(shù)據(jù)。這種U盤可以稱為“類U盤”而不是真正的U盤,因其并不具有與U盤相同的存儲(chǔ)功能。

2 軟件設(shè)計(jì)
在線編程系統(tǒng)的軟件部分主要包括Mass Storage類協(xié)議、FAT16文件系統(tǒng)、S19文件解析和Flash驅(qū)動(dòng)模塊的設(shè)計(jì)。Mass Storage類協(xié)議和FAT16文件系統(tǒng)用于實(shí)現(xiàn)U盤功能,是軟件實(shí)現(xiàn)的重點(diǎn)。Flash驅(qū)動(dòng)代碼的編寫可以參考JM128參考手冊(cè)“Flash存儲(chǔ)器”一節(jié)。
2.1 Mass Storage類協(xié)議的實(shí)現(xiàn)
Mass Storage類協(xié)議需要實(shí)現(xiàn)以下部分:一是在設(shè)備枚舉階段,提供Mass Storage-類協(xié)議描述符,這樣主機(jī)就可識(shí)別該設(shè)備為海量存儲(chǔ)型設(shè)備;二是在數(shù)據(jù)傳輸階段,實(shí)現(xiàn)Bulk-Only(批量傳輸)協(xié)議;三是實(shí)現(xiàn)SCSI命令集。
2.1.1 Mass Storage類協(xié)議描述符
USB主機(jī)通過(guò)枚舉過(guò)程獲得的USB設(shè)備描述符來(lái)獲得設(shè)備類型和其他信息,并根據(jù)這些信息建立通信。這些描述符包括:設(shè)備描述符、配置描述符、接口描述符和端點(diǎn)描述符。
JM128芯片USB模塊作為設(shè)備控制器時(shí)共有16個(gè)雙向端點(diǎn)(endpoint),每個(gè)端點(diǎn)的每個(gè)方向都使用雙緩沖區(qū)來(lái)達(dá)到最大的傳輸吞吐量。本設(shè)計(jì)中使用了3個(gè)端點(diǎn)。其中端點(diǎn)0為雙向控制端點(diǎn),用于控制傳輸,枚舉過(guò)程中USB主機(jī)僅與該端點(diǎn)進(jìn)行交互,獲得信息。端點(diǎn)1和端點(diǎn)2用于Bulk-Only傳輸:端點(diǎn)1為IN端點(diǎn),用來(lái)傳輸數(shù)據(jù)至PC方;端點(diǎn)2為OUT端點(diǎn),用來(lái)接收PC方發(fā)送過(guò)來(lái)的數(shù)據(jù)。這些在描述符中都有體現(xiàn)。
2.1.2 批量傳輸協(xié)議的實(shí)現(xiàn)
當(dāng)設(shè)備被識(shí)別為Bulk-Only的海量存儲(chǔ)設(shè)備后即進(jìn)入批量傳輸方式。在此方式下,USB主機(jī)與設(shè)備間的所有數(shù)據(jù)均通過(guò)Bulk-In和Bulk-Out來(lái)進(jìn)行傳輸,不再通過(guò)控制端點(diǎn)傳輸數(shù)據(jù)。
在Bulk-Only傳輸方式中,USB主機(jī)和設(shè)備之間傳送3種數(shù)據(jù),CBW(Command Block Wrapper,命令塊包)、CSW(Command Status Wrapper,命令狀態(tài)包)和普通數(shù)據(jù)。CBW中的命令格式遵從SCSI傳輸命令集,USB設(shè)備需要分解CBW中包含的指令并執(zhí)行相應(yīng)命令,并向主機(jī)返回反映當(dāng)前命令執(zhí)行狀態(tài)的CSW。USB設(shè)備方Bulk-Only傳輸流程如圖1所示。


上一頁(yè) 1 2 下一頁(yè)

關(guān)鍵詞: MCF 128 51 JM

評(píng)論


相關(guān)推薦

技術(shù)專區(qū)

關(guān)閉