<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>
關(guān) 閉

新聞中心

EEPW首頁(yè) > 工控自動(dòng)化 > 設計應用 > MCF51JM128的類(lèi)U盤(pán)方式在線(xiàn)編程設計

MCF51JM128的類(lèi)U盤(pán)方式在線(xiàn)編程設計

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

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

本文引用地址:http://dyxdggzs.com/article/202682.htm

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

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


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

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

評論


相關(guān)推薦

技術(shù)專(zhuān)區

關(guān)閉
国产精品自在自线亚洲|国产精品无圣光一区二区|国产日产欧洲无码视频|久久久一本精品99久久K精品66|欧美人与动牲交片免费播放
<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>