【摘要】本文介紹了建立在以32位三星的S3C44B0X微處理器為核心的嵌入式系統(tǒng)平臺上的汽車黑匣子的設(shè)計(jì)和開發(fā),。本系統(tǒng)主要解決的問題是:1.關(guān)于汽車行駛狀態(tài)信號數(shù)據(jù)的采集和處理,。2.USB接口的設(shè)計(jì),使黑匣子中記錄的數(shù)據(jù)能夠通過USB接口與PC或者PDA進(jìn)行通信,。最后經(jīng)過系統(tǒng)集成,,本系統(tǒng)可以很好的運(yùn)行。另外在本系統(tǒng)設(shè)計(jì)中還采用了嵌入式操作系統(tǒng)uClinux,,并對其移植過程做了一定的研究,。
關(guān) 鍵 詞 S3C44B0X嵌入式處理器; uClinux操作系統(tǒng),; USB接口,; 汽車黑匣子
汽車黑匣子就是汽車行駛記錄儀,它是用來記錄汽車在行駛中的狀態(tài),。隨著黑匣子在飛機(jī)上的成功運(yùn)用,,越來越多的國家也在汽車上運(yùn)用這種技術(shù)。早在1990年以前歐共體就通過了在汽車上安裝黑匣子的立法,,要求歐共體的15個成員國在10年內(nèi)給使用中的900萬輛商用車中安裝這個裝置,。美國、***,、香港及馬來西亞等國家和地區(qū)也相繼廣泛使用汽車黑匣子[1],。從使用的效果來看,汽車黑匣子不但可以在事故放生后準(zhǔn)確的反映當(dāng)時汽車的狀態(tài)同時也在預(yù)防汽車事故方面取的了顯著的效果,。在2004年10月1日,,我國推出了新的《機(jī)動車運(yùn)行安全技術(shù)條件》(GB7428-2004),明確要求用于公路運(yùn)營的載客汽車、重型載貨汽車,、半掛車應(yīng)當(dāng)安裝,、使用符合國家標(biāo)準(zhǔn)的汽車行駛記錄儀,。
目前國內(nèi)生產(chǎn)汽車黑匣子的有60多家通過國標(biāo)檢測的企業(yè),其中2/3是貼牌生產(chǎn),,或代理銷售其它企業(yè)產(chǎn)品,;真正有技術(shù)、有資金,、有生產(chǎn)線的企業(yè)只有18家左右,,其中比較著名的是四川大科星、北京偉航,、惠州銳神等,。但其汽車黑匣子多是運(yùn)用8位或16位單片機(jī)作為處理器,采用匯編語言,,運(yùn)用程序也比較單一,。雖然也有公司研制出了第二代汽車黑匣子,功能也比較多但其還是沒有運(yùn)用操作系統(tǒng)到上面,,所以在擴(kuò)展性和穩(wěn)定性上面還是有缺陷,。在國外,俄羅斯最新研制出來的汽車黑匣子可以當(dāng)事故發(fā)生后,車輛空間運(yùn)動物理量變化將被“黑匣子”記錄得一清二楚,,從而幫助人們分析事故怎樣發(fā)生,,汽車以后可以怎樣改進(jìn)。在嵌入式系統(tǒng)方面,,歐洲的ICE已經(jīng)成功的把嵌入式系統(tǒng)運(yùn)用到了汽車黑匣子上,。
1 系統(tǒng)的總體結(jié)構(gòu)
1.1 需求分析
根據(jù)國家最新出臺的汽車行駛記錄儀的標(biāo)準(zhǔn):要求汽車行駛記錄儀能夠?qū)?shí)時時鐘、日期及駕駛時間的采集,、記錄,、儲存,車輛行駛速度,、里程的測量,、記錄、儲存等,,對于事故疑點(diǎn)數(shù)據(jù),,記錄儀應(yīng)以不大于0.2秒的時間間隔持續(xù)記錄并儲存停車前20秒實(shí)時時間對應(yīng)的車輛行駛速度值及車輛制動狀態(tài)信號[2]。
1.2 系統(tǒng)的結(jié)構(gòu)
本系統(tǒng)采用的主要的硬件是:32位三星的S3C44B0X處理器,、信號處理電路,、RS232型標(biāo)準(zhǔn)接口和USB1.1標(biāo)準(zhǔn)接口、4M Flash,、8M SDRAM,、4K FRAM、操作鍵盤和擴(kuò)展接口,。操作系統(tǒng)用的是uClinux操作系統(tǒng),。系統(tǒng)結(jié)構(gòu)如圖一,。
1.3 結(jié)構(gòu)描述
1、32位三星的S3C44B0X處理器,,其內(nèi)置有RTC(實(shí)時時間芯片)可以實(shí)現(xiàn)北京時間的日期和時鐘,,該日期和時鐘被用于為記錄儀實(shí)現(xiàn)所有功能(記錄、存儲,、輸出等)標(biāo)注日期和時鐘,,同時其強(qiáng)大的其它功能為本系統(tǒng)應(yīng)用和以后的升級或擴(kuò)展提供很好的支持。2,、信號處理電路處理汽車黑匣子采集的信號,,使其滿足我們系統(tǒng)的要求。3,、本系統(tǒng)配置了RS232型標(biāo)準(zhǔn)接口和USB1.1標(biāo)準(zhǔn)接口,,采用USB接口來完成數(shù)據(jù)從汽車黑匣子到計(jì)算機(jī)間的通信,使數(shù)據(jù)間的通信更加的方便和迅速,。4、主要是的存儲單元是4M的Flash用來存儲uClinux操作系統(tǒng)和記錄的數(shù)據(jù),,8M的SDRAM和一塊4K的FRAM,。當(dāng)汽車運(yùn)行時記錄儀以0.2s的時間間隔持續(xù)記錄并儲存停車前20s實(shí)時時間對應(yīng)的車輛行駛速度以及包過制動的8個信號量進(jìn)行記錄,并且把其存儲在FRAM存儲器中,。這些數(shù)據(jù)將作為事故疑點(diǎn)數(shù)據(jù),。同時記錄儀將以0.5min的間隔時間從FRAM中進(jìn)行采樣,把采樣的結(jié)果存進(jìn)Flash存儲器中,。5,、軟件方面采用uClinux操作系統(tǒng),可以更好的滿足系統(tǒng)穩(wěn)定性,、可擴(kuò)展性和運(yùn)用程序的多樣性,。
![]() |
2 關(guān)鍵技術(shù)
2.1 信號數(shù)據(jù)的采集和處理
為了降低成本達(dá)到可實(shí)用性,本系統(tǒng)采用的信號都是從汽車上的各個傳感器上直接采取,。主要采集的信號有車速信號,、制動信號和各個燈光的信號。
2.1.1 車速信號的采集和處理
本系統(tǒng)車速信號的采集是汽車上的ABS輪速傳感器上的信號,。目前ABS傳感器輪速傳感器廣泛采用的是變磁阻式的電磁傳感器,,通過研究發(fā)現(xiàn)ABS傳感器發(fā)出的信號是正弦波信號,并且信號的頻率和汽車的速度成正比關(guān)系,,因此我們需要把信號的頻率轉(zhuǎn)換成相應(yīng)的電壓值,,然后再送入A/D轉(zhuǎn)換器。但同時又由于汽車在行駛的時候?qū)BS傳感器發(fā)出的信號有非常大的干擾,,所以需要在信號進(jìn)行頻壓轉(zhuǎn)換前對信號進(jìn)行處理,。
信號的處理過程為(1)通過限幅電路,。由于車輪的轉(zhuǎn)速越快,正弦波信號的幅值越大,。所以通過兩個穩(wěn)壓二極管將信號的幅值限制到正負(fù)5幅以內(nèi),。(2)通過濾波電路。由于汽車在運(yùn)行的時候會產(chǎn)生很大的高頻干擾信號,,因此采用二階帶反饋的有源濾波器,,去除高頻干擾信號。(3)通過整形電路,,把正弦波信號轉(zhuǎn)換成方波信號,。(4)最后通過頻壓轉(zhuǎn)換電路。轉(zhuǎn)換過程如圖二所示,。
![]() |
圖二 |
2.1.2 制動信號和各個燈光信號的采集和處理
汽車上的制動和燈光信號的采集都是直接通過汽車上的制動電路或者燈光電路采集而得,,其輸出都是一個電壓為12V的地躍信號,因此我們通過一個光電隔離器來實(shí)現(xiàn)抗干擾和穩(wěn)壓,。
2.2 USB接口的設(shè)計(jì)
USB即通用串行總線(Universal serial bus),是一種快速,、靈活的總線接口。與其它通信接口比較,,USB接口最突出的特點(diǎn)是易于使用和傳輸?shù)乃俾士?。所以USB接口被越來越多的系統(tǒng)所采用。為了實(shí)現(xiàn)本系統(tǒng)本項(xiàng)目通過USB接口把汽車黑匣子記錄存儲的數(shù)據(jù)傳送到計(jì)算機(jī)或者PDA上,,我們把整個系統(tǒng)當(dāng)成個U盤來考慮,,這樣就可以方便、快速的實(shí)現(xiàn)數(shù)據(jù)的傳送,。
USB組織按設(shè)備的不同屬性,,定義了一系列設(shè)備類及設(shè)備次類。將這些相同屬性的設(shè)備組合在一起的優(yōu)點(diǎn)是,,可以同時發(fā)展該類以PC主機(jī)為主的驅(qū)動程序,。目前USB中定義了以下類:Audio、Communication,、Display,、Human Interface、Mass storage,、Image,、Printer、Power,、PC Legacy,、Physical interface。因?yàn)槲覀冞@個項(xiàng)目需要做的是把整個系統(tǒng)當(dāng)成一個U盤來進(jìn)行數(shù)據(jù)的傳輸,所以需要我們遵循Mass storage協(xié)議,。同時Microsoft Windows 中提供對Mass storage協(xié)議的支持,,因此USB 移動設(shè)備只需要遵循Mass storage協(xié)議來組織數(shù)據(jù)和處理命令,即可以實(shí)現(xiàn)與PC機(jī)之間的數(shù)據(jù)交換,。同時在Flash的存儲單元組織形式中采用FAT16 文件系統(tǒng),,這樣,就可以直接在Windows 的瀏覽器中通過可移動磁盤來交換數(shù)據(jù),。
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é)議,。這是因?yàn)楹A看鎯υO(shè)備(General Mass Storage Device)是隨機(jī)存取、基于塊/扇區(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è)備進(jìn)行搜索,,并要求設(shè)備提供相應(yīng)的描述符。在USB Host 得到上述描述符后,,即完成了設(shè)備的配置,,識別出為Bulk-Only 的Mass Storage 設(shè)備,然后即進(jìn)入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 進(jìn)行下一步的操作,。USB 設(shè)備所執(zhí)行的操作可用圖三所示。
![]() |
在這里需要注意的是Flash的讀寫特點(diǎn)是其可隨機(jī)讀,,但無法隨機(jī)寫,。Flash在寫之前必須先擦除,而一擦又必須擦一個Block或者一個sector,,因此在擦除某Block或sector 之前必須保存同一個Block或sector 中有關(guān)的數(shù)據(jù),。如果每收到一次數(shù)據(jù)就進(jìn)行一次擦、保存,、寫的操作,,系統(tǒng)任務(wù)將十分繁重,無法及時響應(yīng)USB Host 端的請求,,因此這個需要通過設(shè)置一定大小的緩沖區(qū)來解決,。
3 uClinux操作系統(tǒng)
在進(jìn)行嵌入式系統(tǒng)設(shè)計(jì)中,對操作系統(tǒng)的選擇是至關(guān)重要的,,對于系統(tǒng)需求不同需要運(yùn)用不同的操作系統(tǒng),。本系統(tǒng)考慮的主要是穩(wěn)定性和安全性,所以運(yùn)用uClinux操作系統(tǒng),。uClinux操作系統(tǒng)是基本上跟Linux操作系統(tǒng)是一樣的,。(1)它是免許可證用費(fèi)同時具有很高的穩(wěn)定性、安全性和可裁剪性,。(2)支持強(qiáng)大的網(wǎng)絡(luò)功能,,這個使我們的系統(tǒng)有更好的擴(kuò)展性,比如以后在上面實(shí)現(xiàn)GPRS等網(wǎng)絡(luò)功能(3)具有豐富的開放工具,,提供C,、C++、JAVA以及很多其它的開發(fā)工具,這個為我們的應(yīng)用程序的開發(fā)提供了很大方便,。(4)具有大量的文檔可供我們參考,。它們之間最大的不同是是uClinux是了為了滿足沒有MMU的處理器而特別設(shè)計(jì)的,即uClinux不能使用處理器的虛擬內(nèi)存管理技術(shù)而是采用的是實(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)目錄中找一個與你的處理器比較接近的處理器的配置文件進(jìn)行修改,,使之適合你的處理器。如果沒有合適的就需要你自己寫,,同樣這個工作量也是相當(dāng)大的,。3、如果本系統(tǒng)的一些外圍設(shè)備電路不被uClinux所支持,,需要自己編寫其的設(shè)備驅(qū)動程序,。
4 結(jié)束語
本汽車黑匣是建立在以32位三星的S3C44B0X微處理器為核心及uClinux操作系統(tǒng)的嵌入式系統(tǒng),可以更好的滿足系統(tǒng)穩(wěn)定性和運(yùn)用程序的多樣性,,因此可以更加完整,、精確和多樣性的記錄下汽車的行駛狀態(tài),為事故的分析提供準(zhǔn)確的依據(jù),,同時也對抑制交通事故起到很大的重要,。另外在本系統(tǒng)中我們把整個系統(tǒng)做成U盤,這樣可以把記錄的數(shù)據(jù)方便,、迅速的傳輸?shù)接?jì)算機(jī)或者PDA上,。