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

發(fā)布時(shí)間:2010-1-25 16:36    發(fā)布者:李寬
關(guān)鍵詞: U盤(pán) , 設計 , 在線(xiàn)
引言

在線(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模塊的MCF51JM128芯片上實(shí)現了類(lèi)U盤(pán)方式的在線(xiàn)編程功能:像U盤(pán)一樣直接將目標文件放入便可實(shí)現編程,省卻了PC方程序,方便了用戶(hù)實(shí)際使用。

MCF51JM128(以下簡(jiǎn)稱(chēng)“JM128”)是Freescale半導體公司于2008年推出的一款Coldfire V1內核系列的微控制器,該芯片主要特點(diǎn)是內含一個(gè)集成的USB控制器,支持USB2.0全速主機、設備和On-The-Go。這種配置一般出現在高端微處理器中,在其他微處理器中很少出現,可以說(shuō)是JM128非常有競爭力的特色。

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所示。


2.1.3 SCSI命令集的實(shí)現

SCSI有3種字長(cháng)的命令:6字節、10字節和12字節。Microsoft Windows環(huán)境支持12字節的命令。SCSI命令集包含了對多種存儲設備的操作命令,對U盤(pán)而言,并不是所有的SCSI命令都要進(jìn)行應答和處理,實(shí)際用到的SCSI命令如表1所列。



2.2 FAT16文件系統的實(shí)現

當開(kāi)發(fā)板插入USB總線(xiàn)并枚舉成功后,USB主機會(huì )發(fā)送前面提到的SCSI命令。若這些命令的返回結果正確,主機接下來(lái)進(jìn)入文件識別階段;如果文件系統信息出錯,則會(huì )導致USB總線(xiàn)復位,通信中止。

本設計中采用的是FAT16文件系統。FAT即“文件分配表”,是用來(lái)記錄存儲器中文件所在位置的表格,一旦文件分配表丟失,存儲器中的數據就會(huì )因為無(wú)法定位而不能使用。FAT16文件系統的磁盤(pán)可以分為保留區、FAT區、根目錄區和數據區。其中保留區的第1個(gè)扇區稱(chēng)為引導扇區,包含對文件系統進(jìn)行識別的關(guān)鍵信息;FAT區用來(lái)存放文件分配表,由于FAT表非常重要,所以通常在FAT區之后有1個(gè)相同內容的備份;根目錄區中存放目錄項,每個(gè)目錄項為32字節,記錄1個(gè)文件或目錄的信息;在根目錄區之后的數據區便是真正意義上的存放文件數據或目錄的位置,占據了存儲器大部分數據空間。

本設計功能相對固定,無(wú)需實(shí)現與普通U盤(pán)同樣復雜的文件系統,如文件存儲、動(dòng)態(tài)創(chuàng )建/刪除等功能都可以省略,在實(shí)現功能的同時(shí)也節省了代碼空間。筆者利用常量數組定義了引導扇區、FAT區和根目錄區。

操作系統按簇來(lái)分配磁盤(pán)空間,FAT表是一一對應數據區簇號的列表,反映了所有簇的使用情況。FAT區結構如表2所列。在設計FAT區的數組時(shí),筆者采取了簡(jiǎn)化措施,由于無(wú)需在Flash中存儲目標S19文件和磁盤(pán)信息,所以?xún)H僅設置了FAT表數組的表項O和表項1,其余表項做清零處理。



結語(yǔ)

MCF51JM128是集成了USB主機、設備和OTG功能的新款MCU,適合數據采集、數據交換等多個(gè)領(lǐng)域,是一款集成度非常高的芯片。利用其集成 USB模塊的特點(diǎn)實(shí)現的類(lèi)U盤(pán)方式在線(xiàn)編程系統時(shí),提高了在線(xiàn)編程系統的平臺適應性,提高了易用性,降低了在線(xiàn)編程系統的開(kāi)發(fā)成本。開(kāi)發(fā)其他任何帶有 USB模塊的MCU的在線(xiàn)編程系統時(shí),都可借鑒本方法。同時(shí),也可將本方法擴展到各種基于USB的編程器中,如筆者擬開(kāi)發(fā)的基于MCF51JM128的 Freescale 56F8xxx系列DSP編程器。

參考文獻

1. Freescale.MCF51JM128 Data Sheet 2008
2. Freescale.MCF51JM128 Coldfire Integrated Microcontroller Reference Manual 2008
3. Freescale.AN3748 USB Bootloader for MCF51JM128 2008
4. 王宜懷.劉曉升 嵌入式技術(shù)基礎與實(shí)踐 2007
5. 馬偉 計算機USB系統原理及其主/從機設計 2004

作者:田宏偉 (江蘇省泰州市華通消防裝備廠(chǎng))    劉雪蘭 (江蘇畜牧獸醫職業(yè)技術(shù)學(xué)院)  來(lái)源:《單片機與嵌入式系統應用》2009(6)
本文地址:http://selenalain.com/thread-7982-1-1.html     【打印本頁(yè)】

本站部分文章為轉載或網(wǎng)友發(fā)布,目的在于傳遞和分享信息,并不代表本網(wǎng)贊同其觀(guān)點(diǎn)和對其真實(shí)性負責;文章版權歸原作者及原出處所有,如涉及作品內容、版權和其它問(wèn)題,我們將根據著(zhù)作權人的要求,第一時(shí)間更正或刪除。

相關(guān)在線(xiàn)工具

相關(guān)視頻

關(guān)于我們  -  服務(wù)條款  -  使用指南  -  站點(diǎn)地圖  -  友情鏈接  -  聯(lián)系我們
電子工程網(wǎng) © 版權所有   京ICP備16069177號 | 京公網(wǎng)安備11010502021702
快速回復 返回頂部 返回列表
午夜高清国产拍精品福利|亚洲色精品88色婷婷七月丁香|91久久精品无码一区|99久久国语露脸精品|动漫卡通亚洲综合专区48页