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