基于uClinux嵌入式系統(tǒng)的汽車黑匣子的設(shè)計與開發(fā)
USB 組織現(xiàn)在定義了Mass Storage 協(xié)議傳輸?shù)膬蓚€規(guī)范,即:1. USB Mass Storage Class Control/Bulk/Interrupt (CBI) Transport 2. USB Mass Storage Class Bulk-Only Transport。但是CBI不能用于高速設(shè)備,所以在我們的這個系統(tǒng)中選用第二種傳輸方式Mass Storage Class Bulk-Only。
在這種傳輸模式下,需要注意接口描述符中的一些值的設(shè)定。把bInterfaceClass的值設(shè)為08,代表本設(shè)備為Mass storage Class。把bInterfaceSubClass的值設(shè)為06,這樣表明USB設(shè)備在傳輸中遵循SCSI協(xié)議。這是因為海量存儲設(shè)備(General Mass Storage Device)是隨機存取、基于塊/扇區(qū)存儲的設(shè)備。它只能存儲和取回來自CPU 的數(shù)據(jù)。這種設(shè)備的接口遵循SCSI-2 標(biāo)準(zhǔn)的直接存取存儲設(shè)備(Direct Access Storage Device)協(xié)議。bInterfaceProtocol的值設(shè)為50,即USB設(shè)備為Bulk-Only Transport傳輸模式。
當(dāng)設(shè)備插入到USB 后,USB 即對設(shè)備進行搜索,并要求設(shè)備提供相應(yīng)的描述符。在USB Host 得到上述描述符后,即完成了設(shè)備的配置,識別出為Bulk-Only 的Mass Storage 設(shè)備,然后即進入Bulk-Only 傳輸方式。在這種傳輸方式下,有三種類型的數(shù)據(jù)在USB 和設(shè)備之間傳送,CBW、CSW 和普通數(shù)據(jù)。CBW(Command Block Wrapper,即命令塊包)是從USB Host 發(fā)送到設(shè)備的命令,命令格式遵從接口中的bInterfaceSubClass 所指定的命令塊,這里為SCSI 傳輸命令集。USB設(shè)備需要將SCSI 命令從CBW 中提取出來,執(zhí)行相應(yīng)的命令,完成以后,向Host 發(fā)出反映當(dāng)前
命令執(zhí)行狀態(tài)的CSW(Command Status Wrapper),Host 根據(jù)CSW 來決定是否繼續(xù)發(fā)送下一個CBW 或是數(shù)據(jù)。Host 要求USB 設(shè)備執(zhí)行的命令可能為發(fā)送數(shù)據(jù),則此時需要將特定數(shù)據(jù)傳送出去,完畢后發(fā)出CSW,以使Host 進行下一步的操作。USB 設(shè)備所執(zhí)行的操作可用圖三所示。
在這里需要注意的是Flash的讀寫特點是其可隨機讀,但無法隨機寫。Flash在寫之前必須先擦除,而一擦又必須擦一個Block或者一個sector,因此在擦除某Block或sector 之前必須保存同一個Block或sector 中有關(guān)的數(shù)據(jù)。如果每收到一次數(shù)據(jù)就進行一次擦、保存、寫的操作,系統(tǒng)任務(wù)將十分繁重,無法及時響應(yīng)USB Host 端的請求,因此這個需要通過設(shè)置一定大小的緩沖區(qū)來解決。
3 uClinux操作系統(tǒng)
在進行嵌入式系統(tǒng)設(shè)計中,對操作系統(tǒng)的選擇是至關(guān)重要的,對于系統(tǒng)需求不同需要運用不同的操作系統(tǒng)。本系統(tǒng)考慮的主要是穩(wěn)定性和安全性,所以運用uClinux操作系統(tǒng)。uClinux操作系統(tǒng)是基本上跟Linux操作系統(tǒng)是一樣的。(1)它是免許可證用費同時具有很高的穩(wěn)定性、安全性和可裁剪性。(2)支持強大的網(wǎng)絡(luò)功能,這個使我們的系統(tǒng)有更好的擴展性,比如以后在上面實現(xiàn)GPRS等網(wǎng)絡(luò)功能(3)具有豐富的開放工具,提供C、C++、JAVA以及很多其它的開發(fā)工具,這個為我們的應(yīng)用程序的開發(fā)提供了很大方便。(4)具有大量的文檔可供我們參考。它們之間最大的不同是是uClinux是了為了滿足沒有MMU的處理器而特別設(shè)計的,即uClinux不能使用處理器的虛擬內(nèi)存管理技術(shù)而是采用的是實存儲器管理策略。
這里有主要的三個方面在移植的過程中是需要注意的。1、如果處理器的核不被uClinux支持,這就需要我們在uclinux/linux-2.4.x/arch/中增加一個新的體系結(jié)構(gòu),這個工作量將是巨大的。但在我們的這個系統(tǒng)中ARM7TDMI體系結(jié)構(gòu)已經(jīng)存在uclinux/linux-2.4.x/arch/armnommu/目錄中。2、在相同體系結(jié)構(gòu)目錄中找一個與你的處理器比較接近的處理器的配置文件進行修改,使之適合你的處理器。如果沒有合適的就需要你自己寫,同樣這個工作量也是相當(dāng)大的。3、如果本系統(tǒng)的一些外圍設(shè)備電路不被uClinux所支持,需要自己編寫其的設(shè)備驅(qū)動程序。
4 結(jié)束語
本汽車黑匣是建立在以32位三星的S3C44B0X微處理器為核心及uClinux操作系統(tǒng)的嵌入式系統(tǒng),可以更好的滿足系統(tǒng)穩(wěn)定性和運用程序的多樣性,因此可以更加完整、精確和多樣性的記錄下汽車的行駛狀態(tài),為事故的分析提供準(zhǔn)確的依據(jù),同時也對抑制交通事故起到很大的重要。另外在本系統(tǒng)中我們把整個系統(tǒng)做成U盤,這樣可以把記錄的數(shù)據(jù)方便、迅速的傳輸?shù)接嬎銠C或者PDA上。
評論