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