MCF51JM128的類U盤方式在線編程設計
2.1.3 SCSI命令集的實現(xiàn)
SCSI有3種字長的命令:6字節(jié)、10字節(jié)和12字節(jié)。Microsoft Windows環(huán)境支持12字節(jié)的命令。SCSI命令集包含了對多種存儲設備的操作命令,對U盤而言,并不是所有的SCSI命令都要進行應答和處理,實際用到的SCSI命令如表1所列。
2.2 FAT16文件系統(tǒng)的實現(xiàn)
當開發(fā)板插入USB總線并枚舉成功后,USB主機會發(fā)送前面提到的SCSI命令。若這些命令的返回結(jié)果正確,主機接下來進入文件識別階段;如果文件系統(tǒng)信息出錯,則會導致USB總線復位,通信中止。
本設計中采用的是FAT16文件系統(tǒng)。FAT即“文件分配表”,是用來記錄存儲器中文件所在位置的表格,一旦文件分配表丟失,存儲器中的數(shù)據(jù)就會因為無法定位而不能使用。FAT16文件系統(tǒng)的磁盤可以分為保留區(qū)、FAT區(qū)、根目錄區(qū)和數(shù)據(jù)區(qū)。其中保留區(qū)的第1個扇區(qū)稱為引導扇區(qū),包含對文件系統(tǒng)進行識別的關鍵信息;FAT區(qū)用來存放文件分配表,由于FAT表非常重要,所以通常在FAT區(qū)之后有1個相同內(nèi)容的備份;根目錄區(qū)中存放目錄項,每個目錄項為32字節(jié),記錄1個文件或目錄的信息;在根目錄區(qū)之后的數(shù)據(jù)區(qū)便是真正意義上的存放文件數(shù)據(jù)或目錄的位置,占據(jù)了存儲器大部分數(shù)據(jù)空間。
本設計功能相對固定,無需實現(xiàn)與普通U盤同樣復雜的文件系統(tǒng),如文件存儲、動態(tài)創(chuàng)建/刪除等功能都可以省略,在實現(xiàn)功能的同時也節(jié)省了代碼空間。筆者利用常量數(shù)組定義了引導扇區(qū)、FAT區(qū)和根目錄區(qū)。
操作系統(tǒng)按簇來分配磁盤空間,F(xiàn)AT表是一一對應數(shù)據(jù)區(qū)簇號的列表,反映了所有簇的使用情況。FAT區(qū)結(jié)構(gòu)如表2所列。在設計FAT區(qū)的數(shù)組時,筆者采取了簡化措施,由于無需在Flash中存儲目標S19文件和磁盤信息,所以僅僅設置了FAT表數(shù)組的表項O和表項1,其余表項做清零處理。
結(jié) 語
MCF51JM128是集成了USB主機、設備和OTG功能的新款MCU,適合數(shù)據(jù)采集、數(shù)據(jù)交換等多個領域,是一款集成度非常高的芯片。利用其集成 USB模塊的特點實現(xiàn)的類U盤方式在線編程系統(tǒng)時,提高了在線編程系統(tǒng)的平臺適應性,提高了易用性,降低了在線編程系統(tǒng)的開發(fā)成本。開發(fā)其他任何帶有 USB模塊的MCU的在線編程系統(tǒng)時,都可借鑒本方法。同時,也可將本方法擴展到各種基于USB的編程器中,如筆者擬開發(fā)的基于MCF51JM128的 Freescale 56F8xxx系列DSP編程器。
評論