謝勤嵐,余曉峰,楊玉甜
(中南民族大學(xué)電子信息工程學(xué)院,武漢430074)
基于ARM 和嵌入式實(shí)時(shí)操作系統(tǒng)的汽車黑匣子設(shè)計(jì)
謝勤嵐,余曉峰,楊玉甜
(中南民族大學(xué)電子信息工程學(xué)院,武漢430074)
提出了一種基于ARM 和嵌入式實(shí)時(shí)操作系統(tǒng)的汽車行使記錄儀(黑匣子)的總體設(shè)計(jì).整個(gè)系統(tǒng)以ARM微控制器核心板為硬件平臺(tái),以uC/OS-Ⅱ?qū)崟r(shí)操作系統(tǒng)為軟件平臺(tái).系統(tǒng)由圖像采集模塊、溫度測量模塊、速度及加速度測量模塊、行車狀態(tài)檢測模塊、數(shù)據(jù)存儲(chǔ)模塊和實(shí)時(shí)時(shí)鐘模塊等功能模塊構(gòu)成.這些模塊在實(shí)時(shí)操作系統(tǒng)的管理下,實(shí)現(xiàn)對車輛運(yùn)行狀態(tài)、故障及事故前后各種數(shù)據(jù)及環(huán)境場景的采集和記錄.系統(tǒng)在實(shí)驗(yàn)室模擬環(huán)境下進(jìn)行了初步測試,基本符合實(shí)際應(yīng)用的大部分要求.
嵌入式系統(tǒng);實(shí)時(shí)操作系統(tǒng);數(shù)據(jù)采集
電子智能化是汽車電子領(lǐng)域不斷發(fā)展的必然趨勢.汽車“黑匣子”可記錄汽車行駛過程中的各種參數(shù),為準(zhǔn)確判定車輛故障及事故的原因提供依據(jù).世界各工業(yè)國也已經(jīng)陸續(xù)制定了有關(guān)“汽車行駛記錄儀”(俗稱“黑匣子”)的行業(yè)標(biāo)準(zhǔn)[1-3].本文提出了一種基于ARM 和嵌入式實(shí)時(shí)操作系統(tǒng)的“黑匣子”,能在交通過程中實(shí)時(shí)采集車輛的各種數(shù)據(jù)并記錄汽車的運(yùn)行狀態(tài),其基本功能包括:
(1)在發(fā)生交通事故時(shí),提供采集的實(shí)時(shí)數(shù)據(jù),為準(zhǔn)確了解和界定交通事故發(fā)生的原因并公正處理提供科學(xué)、權(quán)威的依據(jù);
(2)在車輛正常營運(yùn)中,作為管理部門加強(qiáng)監(jiān)督和管理的工具,幫助管理人員全面了解汽車的運(yùn)行情況;
(3)為汽車的科研、生產(chǎn)、日常維護(hù),以及為及時(shí)查找突發(fā)性交通事故的原因,減少車輛故障提供有效的測試手段;
(4)對各類車輛的完善設(shè)計(jì)、故障分析、成本降低和交通管理具有重要的實(shí)際作用及意義.
圖1為汽車黑匣子設(shè)計(jì)框圖.整個(gè)系統(tǒng)以ARM微控制器核心板為硬件平臺(tái),通過圖像采集模塊、溫度采集模塊、速度采集模塊、加速度采集模塊、行車狀態(tài)采集模塊和實(shí)時(shí)時(shí)鐘模塊等功能模塊,實(shí)現(xiàn)對目標(biāo)汽車故障前后各種數(shù)據(jù)及環(huán)境圖像實(shí)時(shí)的采集和記錄[4,5].
uC/OS-Ⅱ是一個(gè)搶占式多任務(wù)內(nèi)核,實(shí)時(shí)性強(qiáng),可同時(shí)控制多達(dá)64個(gè)任務(wù),適合于工業(yè)控制,可嵌入文件系統(tǒng)保存數(shù)據(jù),可以滿足本系統(tǒng)要求的任務(wù)管理和數(shù)據(jù)記錄[6].
本系統(tǒng)選用S3C44B0微處理器為主芯片,該芯片提供三級(jí)整數(shù)流水線,主頻最高可達(dá)66 M Hz,處理速度達(dá)到1.1 M IPS/M Hz.系統(tǒng)采用FLA SH和SDRAM 存儲(chǔ)數(shù)據(jù).
圖1 汽車黑匣子系統(tǒng)框圖Fig.1 Diagram of Vehicle Black Box
由于S3C44B0微處理器自身不帶有ROM 和RAM,需要外接存儲(chǔ)器.同時(shí)160引腳的S3C44B0具備單獨(dú)的24位地址總線和16位的數(shù)據(jù)總線,擴(kuò)展能力達(dá)到256MB.本系統(tǒng)選用2MB存儲(chǔ)空間的只讀存儲(chǔ)器(ROM)HY29V 160和8MB隨機(jī)可讀寫存儲(chǔ)器(RAM)HY57V 641620.圖2為兩者接口電路圖.
圖2 存儲(chǔ)器擴(kuò)展電路Fig.2 Memory expansion circuit
溫度檢測模塊包括車內(nèi)溫度檢測和輪胎溫度檢測兩個(gè)子模塊.由于輪胎溫度采集涉及到無線收發(fā)模塊,本設(shè)計(jì)暫未涉及.
機(jī)車內(nèi)溫度采集采用DS18B20數(shù)字溫度計(jì)實(shí)現(xiàn).DS18B20可以程序設(shè)定 9~12位的分辨率,精度為±0.5°C.同時(shí)用戶設(shè)定的報(bào)警溫度存儲(chǔ)在EEPROM 中,掉電后依然保存.
DS18B20數(shù)字溫度計(jì)提供9位溫度讀數(shù),溫度信息經(jīng)過單線接口送入DS18B20或從DS18B20送出.因此從中央處理器到DS18B20僅需連接一條數(shù)據(jù)線.
因?yàn)槊恳粋€(gè)DS18B20有唯一的系列號(hào)(silicon serial number),因此多DS18B20可以存在于同一條單線總線.這允許在許多不同的地方放置溫度靈敏器件.
本系統(tǒng)采用典型的三線驅(qū)動(dòng)方案(電源線VDD,串行數(shù)據(jù)線,地線GND).
為了提高記錄精度,實(shí)時(shí)地采集行車數(shù)據(jù),系統(tǒng)采用獨(dú)立的時(shí)鐘模塊.該模塊核心芯片采用美信公司的DS12CR887時(shí)鐘芯片,該器件提供RTC/日歷,定時(shí)鬧鐘,3個(gè)可屏蔽中斷和1個(gè)通用中斷輸出,可編程方波以及114字節(jié)電池備份的靜態(tài)RAM.少于31d的月份,月末日期可自動(dòng)調(diào)整,其中包括閏年補(bǔ)償.該器件還可以工作于24h或帶AM/PM 指示的12h格式.一個(gè)精密的溫度補(bǔ)償電路用來監(jiān)視VCC狀態(tài).如果檢測到主電源故障,該器件可自動(dòng)切換到備用電源供電.V backup引腳用于支持可充電電池或超級(jí)電容,內(nèi)部包括一個(gè)始終有效的涓流充電器.DS12CR887可以通過一個(gè)多路復(fù)用的單字節(jié)接口訪問,該接口支持Intel和Motorola模式.DS12CR887還將石英晶體和電池集成在一起.
從實(shí)際運(yùn)用和成本考慮,顯示模塊被分成兩部分,即模擬監(jiān)視器和點(diǎn)陣液晶屏.當(dāng)攝像頭所采集的圖像流經(jīng)過視頻解碼器進(jìn)行A/D轉(zhuǎn)換后,可以先直接進(jìn)入視頻編碼器SAA 7121H進(jìn)行D/A轉(zhuǎn)換;最后還原回模擬信號(hào),通過監(jiān)視器顯示出來.
通過操作小鍵盤,駕駛員可在點(diǎn)陣顯示屏上查看當(dāng)前時(shí)間、速度、加速度、機(jī)車狀況記錄等一些行車數(shù)據(jù).此處只需顯示一些文字和簡單數(shù)據(jù),所以選用了成本相對較低的128×64點(diǎn)陣液晶屏.
行車狀態(tài)檢測模塊包括轉(zhuǎn)向燈、剎車、酒精檢測等實(shí)時(shí)狀態(tài)的采集.由于這些行車狀態(tài)都是二值信號(hào),本系統(tǒng)將這些二值信號(hào)經(jīng)傳感器轉(zhuǎn)換為高低電平.具體實(shí)現(xiàn)方式是通過檢測處理器I/O端口電平信號(hào)來達(dá)到行車狀態(tài)檢測的目的.
該模塊由信號(hào)輸入、圖像采集、圖像壓縮、CPU控制等部分組成.
(1)信號(hào)輸入.這部分有攝像頭構(gòu)成,用來捕捉視頻圖像.
(2)圖像采集.負(fù)責(zé)與攝像頭相連,采樣模擬圖像數(shù)據(jù)并轉(zhuǎn)換成數(shù)字信號(hào).數(shù)據(jù)采集完成后經(jīng)壓縮芯片負(fù)責(zé)讀取處理,初始化和復(fù)位由CPU負(fù)責(zé)完成.
(3)圖像壓縮.壓縮芯片負(fù)責(zé)對采集的圖像數(shù)據(jù)進(jìn)行壓縮,然后由CPU將壓縮后的數(shù)據(jù)讀取并傳送給CF卡存儲(chǔ).本系統(tǒng)初步設(shè)計(jì)采用M PEG4的壓縮算法.
(4)CPU控制.實(shí)現(xiàn)采集、控制并傳輸圖像數(shù)據(jù)到CF卡的功能.
uC/OS-Ⅱ移植到ARM 處理器上,實(shí)際上是改寫系統(tǒng)軟件中涉及到所選擇CPU硬件結(jié)構(gòu)的幾個(gè)文件,大部分的修改工作集中在3個(gè)和體系結(jié)構(gòu)相關(guān)的文件中[6].這3個(gè)文件是OS-CPU-C.C、OS-CPU.H以及OS-CPU-A.S.下面采用任務(wù)運(yùn)行在SVC狀態(tài)的移植方法.
(1)OS-CPU.H文件.
此文件中給出了多種處理器的結(jié)構(gòu)設(shè)置、變量定義等內(nèi)容,主要是針對一些處理器相關(guān)及編譯器相關(guān)的定義,這部分的修改是與所用的編譯相關(guān)的,不同的編譯器會(huì)使用不同的字節(jié)長度來表示同一數(shù)據(jù)類型.
(2)OS-CPU-C.C文件.
uC/OS-Ⅱ需要用戶改寫OS-CPU-C.C中的幾個(gè)函數(shù).
OSTaskCreate()函數(shù)用來初始化任務(wù)的堆棧.初始狀態(tài)的堆棧模擬發(fā)生一次中斷后的堆棧結(jié)構(gòu).當(dāng)調(diào)用OSTaskCreate()創(chuàng)建一個(gè)新任務(wù)時(shí),需要傳遞的參數(shù)是:任務(wù)代碼的起始地址,參數(shù)指針(pdata),任務(wù)堆棧頂端的地址,任務(wù)的優(yōu)先級(jí).OSTaskStk Init()只需要以上提到的3個(gè)參數(shù)(task,pdata和ptos).初始狀態(tài)的堆棧模擬發(fā)生一次中斷后的堆棧結(jié)構(gòu).在ARM 體系結(jié)構(gòu)下,任務(wù)堆??臻g由高至低依次將保存著pc、lr、r12、r11、r10、…、r1、r0、CPSR、SPSR.
這里需要說明兩點(diǎn):一是完成當(dāng)前任務(wù)堆棧初始化后,OSTaskStk Init返回新的堆棧指針stk,OSTaskCreate()執(zhí)行時(shí)將會(huì)調(diào)用OSTaskStk Init的初始化過程,然后通過OSTCB Init()函數(shù)調(diào)用將返回的sp指針保存到該任務(wù)的TCB塊中;二是初始化狀態(tài)的堆棧其實(shí)模擬了一次中斷發(fā)生后的堆棧結(jié)構(gòu),因?yàn)槿蝿?wù)創(chuàng)建后并不直接獲得執(zhí)行的,而是通過OSSched()函數(shù)進(jìn)行調(diào)度分配,滿足執(zhí)行條件后才能獲得執(zhí)行,為了使這個(gè)調(diào)度簡單一致,需預(yù)先將該任務(wù)的PC指針指向函數(shù)入口,以便被調(diào)度時(shí)從堆棧中恢復(fù)剛開始運(yùn)行的處理器現(xiàn)場.
(3)處理器相關(guān)匯編部分實(shí)現(xiàn).
整個(gè)uC/OS-Ⅱ 移植實(shí)現(xiàn)中,只需要提供一個(gè)匯編語言文件,提供幾個(gè)必須由匯編才能實(shí)現(xiàn)的函數(shù),這些匯編函數(shù)都在OS-CPU-A.S文件中.
OS-TA SK-SW()函數(shù)是任務(wù)級(jí)的上下文切換函數(shù),在任務(wù)因?yàn)楸蛔枞鲃?dòng)請求CPU調(diào)度時(shí)進(jìn)行,由于此時(shí)的任務(wù)切換都是在非異常模式下進(jìn)行的,因此需要區(qū)別于中斷級(jí)別的任務(wù)切換.該函數(shù)主要工作是將當(dāng)前任務(wù)的CPU現(xiàn)場保存到該任務(wù)堆棧中,然后獲得最高優(yōu)先級(jí)任務(wù)的堆棧指針,從該堆棧中恢復(fù)任務(wù)的CPU 現(xiàn)場,使之繼續(xù)執(zhí)行,從而完成一次任務(wù)切換.
(4)S-T ick-ISR()中斷服務(wù)例程.
在ARM 系統(tǒng)中,有7個(gè)異常中斷,定時(shí)器(系統(tǒng)T ick)中斷一般工作在IRQ模式,當(dāng)時(shí)鐘T ick中斷產(chǎn)生,先是IRQ中斷得到響應(yīng),系統(tǒng)進(jìn)入IRQ異常中斷模式,并調(diào)到地址0x0018處開始執(zhí)行(0x0018是ARM 體系中IRQ中斷入口地址).針對S3C44B0處理器,這段代碼在FLA SH中,為了不修改FLA SH就可以復(fù)位各個(gè)ISR,系統(tǒng)在RAM 的高端開辟了一個(gè)向量表,表中的每4個(gè)字節(jié)安置一個(gè)IRQ子中斷源的入口地址.
(5)時(shí)鐘T ick中斷響應(yīng)流程.
當(dāng)時(shí)鐘T ick中斷(它是IRQ中斷類型)產(chǎn)生后,程序?qū)⑻紽LA SH中的0x0018處,在0x0018處有一條跳轉(zhuǎn)指令,接著程序跳轉(zhuǎn)到IRQ SERV ER中斷處理程序的入口,這個(gè)IRQ SERV ER服務(wù)程序是為IRQ子中斷源服務(wù)的,用來獲得T ick中斷服務(wù)程序的入口地址(OS-T ICK-ISR地址),接著就執(zhí)行OS-T ICK-ISR()中斷服務(wù)程序.
DS18B20芯片的驅(qū)動(dòng)程序由初始化、從DS18B20讀數(shù)據(jù)、向DS18B20寫命令和數(shù)據(jù)、溫度讀取等單元程序組成.
其它外圍器件驅(qū)動(dòng)設(shè)計(jì)與DS18B20驅(qū)動(dòng)類似,可根據(jù)器件手冊上的時(shí)序圖寫出各外圍器件的軟件驅(qū)動(dòng).
存儲(chǔ)系統(tǒng)主要由兩部分組成,即汽車行駛的特征數(shù)據(jù)和圖像數(shù)據(jù)流.汽車行駛的特征數(shù)據(jù)包括實(shí)時(shí)時(shí)間、速度、加速度、溫度、開關(guān)量信號(hào)、駕駛員操作信息等.汽車行駛的特征數(shù)據(jù)以文件的形式保存在FLA SH中.圖像數(shù)據(jù)流存放在CF卡中,可以通過U SB以文件的方式把它們傳輸?shù)絇C上,以便于進(jìn)一步使用,如調(diào)查事故發(fā)生的原因等.
為了方便設(shè)計(jì),在采集任務(wù)中定義了一個(gè)數(shù)據(jù)結(jié)構(gòu)體,將每次采集的數(shù)據(jù)全部放在這個(gè)結(jié)構(gòu)體中(除圖像流數(shù)據(jù)),每次采集作為一個(gè)記錄,將先采集的數(shù)據(jù)暫存到內(nèi)存的一個(gè)容量為3 000 byte的struct collect的循環(huán)隊(duì)列中(假定該循環(huán)隊(duì)列名稱為ram-collect),然后根據(jù)要求,選擇其中一部分寫入flash中.這個(gè)結(jié)構(gòu)體如下:Struct collect
按國標(biāo)規(guī)定,記錄儀至少每0.2s采集一次,故1m in要采集300次,每一次采集的數(shù)據(jù)對應(yīng)一個(gè)struct collect,稱作一條記錄.
本文具體分析了自行研制的汽車黑匣子,主要包括其軟硬件的總體設(shè)計(jì).設(shè)計(jì)的重點(diǎn)和關(guān)鍵包括圖像采集、數(shù)據(jù)存儲(chǔ)和操作系統(tǒng)移植等3個(gè)部分.該系統(tǒng)在實(shí)驗(yàn)室環(huán)境下通過模擬測試,基本符合汽車行駛記錄儀國家標(biāo)準(zhǔn)[1].在應(yīng)用于實(shí)際系統(tǒng)之前,還需要進(jìn)一步針對各種環(huán)境進(jìn)行適應(yīng)測試和模擬事故測試.另外,為了提高系統(tǒng)的性能,可以考慮采用性能更高的ARM 芯片.
[1]中國國家標(biāo)準(zhǔn)化管理委員會(huì).汽車行駛記錄儀(GB/T 19056-2003)[S].北京:中國標(biāo)準(zhǔn)出版社,2003.
[2]王力爭.國內(nèi)外汽車行駛記錄儀應(yīng)用概況[J].勞動(dòng)保護(hù),2004(9):70-71.
[3]余 水,鄧 振,蔡洪斌,等.基于ARM+DSP的汽車視頻黑匣子系統(tǒng)的總體設(shè)計(jì)[J].計(jì)算機(jī)應(yīng)用研究,2008,25(2):628-631.
[4]Sam sung Electronics.S3C44B0 microprocessor user′s manual[EB/OL]. (2004-06-15). [2006-03-10].http://www.sam sung.com.
[5]丁 峰,徐 靖,魯 立.ARM 系統(tǒng)開發(fā)從實(shí)踐到提高[M].北京:中國電力出版社,2007.
[6]田 澤.嵌入式系統(tǒng)開發(fā)與應(yīng)用教程[M].北京:北京航空航天大學(xué)出版社,2005.
Design of Vehicle Black Box Based on ARM and Embedded Real-Time Operating System
Xie Qinlan,Yu Xiaofeng,Yang Yutian
(College of Electronics and Information Engineering,South-CentralU niversity for Nationalities,Wuhan 430074,China)
The design of a Vehicle T raveling Data Recorder(Vehicle Black Box)based on ARM and embedded real-t ime operating system is given.ARM is applied as hardware platform of the system and uC/OS-Ⅱis used as the real-time operating system.The system is divided into several function modules,such as image acquisition module,temperature acquisition module,velocity and acceleration acquisition module,road condition acquisition module,data storage module and real-time clock module. These modules are managed under the real-t ime operating system to realize data acquisition of vehicle operation status,and to record the scenes before and after an accident.The system is tested under as imulative condition in laboratory and the result shows that it satisfies the prel im inary requirements of practical applications.
embedded system;real-t ime operation system;data collection
TP311
A
1672-4321(2010)01-0103-04
2010-01-22
謝勤嵐(1968-),男,副教授,碩士,研究方向:模式識(shí)別與圖像處理;E-mail:xieqinlan@126.com
國家民委自然科學(xué)基金資助項(xiàng)目(09ZN 01)