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