林彥廷,師文慶
(廣東海洋大學 電子與信息工程學院,湛江 524088)
汽車,是人們?nèi)粘I钪械某S么焦ぞ咧唬矊⑹俏覈粋€新的家庭消費熱點,汽車的潛在市場、經(jīng)濟利益巨大[1]。隨著國內(nèi)汽車使用量增加,汽車電子在未來汽車產(chǎn)業(yè)中的地位越來越重要,近年來最為突出的是智能車載系統(tǒng),隨著人工智能進入人類視野,人們對于無人駕駛車載系統(tǒng)越發(fā)感興趣,對智能車載系統(tǒng)的各種需求也會大大增加,就像當年智能手機一樣,逐漸融入人們的生活。對于人們的生活來說,汽車早已不再滿足于一種單一的交通工具,汽車的數(shù)字化、多媒體化、多功能化、智能化將是未來汽車電子產(chǎn)品的必然趨勢,汽車導航、多媒體功能以及網(wǎng)絡通信系統(tǒng)成為未來汽車的必備[2]。隨著物聯(lián)網(wǎng)等互聯(lián)技術在汽車領域的發(fā)展及應用,智能汽車及智能車載系統(tǒng)已經(jīng)是一個重要的研究方向[3]。為此,文中提出了基于嵌入式的智能車載多媒體控制終端設計,基于安全、實用、娛樂理念設計了4項功能:①可視化倒車雷達報警;②天氣預報;③音樂播放器;④系統(tǒng)硬件控制。
目前,電子信息技術飛速發(fā)展,出現(xiàn)一些處理能力強、外設接口豐富的處理器芯片,比如ARM架構(gòu)系列處理器,為開發(fā)多功能的車載終端提供了硬件技術基礎[4]。此外,由于Linux操作系統(tǒng)的開源性,每年開發(fā)人員的大量投入,平臺日漸成熟穩(wěn)定,且所支持的外設驅(qū)動豐富,被高端消費電子產(chǎn)品廣泛應用,也為該終端的設計開發(fā)提供了強大的軟件系統(tǒng)支撐。
按照所設計的車載多媒體控制終端的需求分析以及現(xiàn)有材料,采用S5P681處理器為核心板,應用軟件運行以嵌入式Linux為平臺為主,基于Cortex-A53和Linux嵌入式技術,通過LCD觸摸屏實現(xiàn)音頻播放終端控制、可視倒車、倒車距離實時報警、實時天氣預報等,使用方便,交互界面清晰簡潔。
在智能車載多媒體控制終端的設計方案中,智能多媒體車載控制終端的硬件平臺主要以ARM處理器為主,由S5P6818處理器核心板、超聲波模塊、攝像頭模塊和LCD觸摸屏人機交互模塊等部分組成,系統(tǒng)硬件結(jié)構(gòu)如圖1所示。各模塊與Linux系統(tǒng)構(gòu)成了完整的智能多媒體控制終端。模塊完成功能,Linux系統(tǒng)進行調(diào)度。
圖1 智能多媒體車載控制終端的系統(tǒng)結(jié)構(gòu)Fig.1 System structure of intelligent multimedia on-board control terminal
不同嵌入式系統(tǒng)的開發(fā)有自身不同的的開發(fā)特點,從而構(gòu)成嵌入式系統(tǒng)的多樣性和復雜性。嵌入式系統(tǒng)是面向特定應用的系統(tǒng),一般先進行硬件功能的開發(fā),再根據(jù)設計需求分析移植對應操作系統(tǒng),最后對底層的硬件驅(qū)動程序進行設計。設計中首先構(gòu)建嵌入式操作系統(tǒng),在64位Cortex-A53平臺上構(gòu)建起完整的嵌入式開發(fā)系統(tǒng),在此基礎上進行音頻、攝像頭等各個模塊的開發(fā)設計,通過交叉編譯,生成可應用軟件,然后應用在ARM平臺上,通過Linux系統(tǒng)進行調(diào)度[5]。
嵌入式操作系統(tǒng)的嵌入式開發(fā)的高效率,不僅僅體現(xiàn)在減少了系統(tǒng)的開發(fā)工作量,還體現(xiàn)在系統(tǒng)合理地調(diào)度多任務,合理利用系統(tǒng)資源、系統(tǒng)函數(shù)以及接口,提高嵌入式軟件的可移植性。嵌入式Linux系統(tǒng)是一個完全內(nèi)存保護、多任務、多線程的操作系統(tǒng),是完成開源的,可以減少大量開發(fā)費用[6],同時也促進了促進了嵌入式的發(fā)展。
嵌入式Linux系統(tǒng)從軟件的角度一般分為以下四方面:
1)Bootloader Bootloader啟動引動程序,是系統(tǒng)啟動加載的第一段匯編代碼,主要負責系統(tǒng)硬件的初始化,引導并加載Linux內(nèi)核參數(shù),最后根據(jù)參數(shù)啟動Linux內(nèi)核。
2)Linux內(nèi)核 Linux內(nèi)核面向不同的場景,在不同嵌入式系統(tǒng)設計中會對內(nèi)核進行裁剪、定制和移植,制作適合用戶需要的嵌入式內(nèi)核,包括內(nèi)存管理、進程管理、虛擬文件系統(tǒng)等。
8.請附作者簡介,包括姓名(使用筆名者請附真實姓名),出生年月,性別,民族(漢族可省略),籍貫,職稱,學位,簡歷及論著情況(任選),工作單位,通訊地址,聯(lián)系電話,郵政編碼。
3)根文件系統(tǒng) Linux系統(tǒng)的宗旨是“一切皆文件”,根文件系統(tǒng)就是Linux掛載在虛擬文件系統(tǒng)的第1個文件系統(tǒng),根文件系統(tǒng)和Linux內(nèi)核配合使用,建立在動態(tài)隨機存儲器上的根文件系統(tǒng)和建立在Flash設備上的文件系統(tǒng),通常用動態(tài)隨機存儲器上的文件系統(tǒng)為根文件系統(tǒng)[7]。
4)用戶應用程序 應用程序、Linux系統(tǒng)和硬件平臺之間的關系如圖2所示。Linux驅(qū)動的設計大大降低了應用層和硬件平臺之間的耦合度,應用軟件只需調(diào)用系統(tǒng)提供的接口即可控制硬件,無需關心硬件如何工作,大大提高了應用程序的可移植性以及開發(fā)人員的開發(fā)效率。
圖2 系統(tǒng)關系邏輯Fig.2 Logical diagram of system
應用軟件設計的基本過程如圖3所示。由車載系統(tǒng)智能終端的需求分析以及設計總體框架開始,到系統(tǒng)移植、各模塊的集成,再到功能模塊測試階段,最后完成設計。
圖3 應用軟件設計的基本過程Fig.3 Brief process of APP design
雖然Linux系統(tǒng)自帶Media Player播放器,但由于系統(tǒng)自帶的播放軟件所支持的多媒體格式非常有限,所以在程序設計時,移植了第三方多媒體播放軟件Mplayer[8]。音頻播放器設計原理如圖4所示。Mplayer一大特點是支持廣泛的輸出設備。設計中最重要的是MPlayer還支持通過硬件MPEG解碼卡顯示。
圖4 音視頻軟件模塊工作流程Fig.4 Flow chart of audiovisual software modules
該軟件模塊的工作流程如圖5所示。這一模塊主要分為攝像頭采集一幀一幀的圖片數(shù)據(jù)和超聲波的測量距離顯示到LCD屏上,提醒用戶。用戶空間要控制這2個硬件模塊需要對其設計相應的驅(qū)動程序,如超聲波驅(qū)動、蜂鳴器驅(qū)動和攝像頭驅(qū)動等。當超聲波測出的距離小于設定的距離,LCD屏上開始顯示距離,同時蜂鳴器報警。
圖5 可視化倒車工作流程Fig.5 Flow chart of visualized backing off
設計中集成了LED驅(qū)動模塊、蜂鳴器驅(qū)動模塊、超聲波驅(qū)動模塊。在此,以超聲波模塊的設計為例,給出其驅(qū)動程序的設計流程。基于嵌入式系統(tǒng)的應用程序開發(fā),如圖2所示,應用程序不能直接訪問硬件,故設計了驅(qū)動程序,以此作為中間橋梁,給應用層提供訪問硬件的接口,通過驅(qū)動程序來對系統(tǒng)內(nèi)核訪問硬件寄存器從而達到控制硬件的效果。
超聲波模塊驅(qū)動程序的編寫以及設計使用混在設備驅(qū)動模型,大致流程如下:
1)定義文件操作集file_operations和混雜設備miscdevice,將文件操作集放到混雜設備中。
3)編寫文件操作集file_operations里面各個函數(shù)指針所指的具體函數(shù)如 read,write,ioctl,等,即為系統(tǒng)調(diào)用接口函數(shù)。
同樣地,由于Linux系統(tǒng)集成了攝像頭的驅(qū)動,應用程序只要通過系統(tǒng)調(diào)用函數(shù)打開攝像頭設備,即可訪問攝像頭采集的圖像數(shù)據(jù)。Linux內(nèi)核中采用V4L2的機制來管理攝像頭圖像信息。V4L2的運行原理如圖6所示,通過完成1個隊列來存儲攝像頭采集到的視頻數(shù)據(jù),申請3個或者3個以上內(nèi)核數(shù)據(jù)緩存,并將它們依次插入到隊列中,然后將緩存區(qū)通過系統(tǒng)調(diào)用函數(shù)mmap將緩存映射到用戶空間,這樣就可以采集圖像數(shù)據(jù)并進行操作或顯示,攝像頭每采集1幀數(shù)據(jù)就做1個出隊操作,讀取數(shù)據(jù)后再入隊,如此循環(huán)往復[10]。
圖6 攝像頭的V4L2的運行原理Fig.6 Operation principle of V4L2 of camera
天氣查詢Api是一個HTTP接口的簡單應用,根據(jù)請求輸入的報文頭信息,查詢當前/未來的天氣狀況,服務器會返回Json數(shù)據(jù),在程序中對其進行解析出天氣數(shù)據(jù),從而應用自己編寫的程序中,獲得的實際效果如圖7所示。天氣預報模塊的工作流程如圖8所示。
1)購買天氣預報查詢接口Api,在此為阿里云全國天氣預報查詢(免費版)Api;
2)應用Qt中的QNetwork類實現(xiàn)http獲取實時天氣預報;
3)發(fā)送請求,請求方式為GET;
netrequest->setUrl (QUrl("http://jisutqybmf.market.alicloudapi.com/weather/query?city="+city));
netrequest->setHeader (QNetworkRequest::UserAgentHeader,"RT-Thread ART");
httpManager->get(*netrequest);
4)返回類型為Json數(shù)據(jù),并對Json數(shù)據(jù)進行解析。
圖7 天氣預報的實際效果Fig.7 Visual effect of weather forecast program
圖8 網(wǎng)絡實時獲取天氣預報工作流程Fig.8 Flow chart of obtaining weather forecasts in real-time from the web
所設計的基于嵌入式Linux系統(tǒng)的車載終端控制系統(tǒng),自動掃描U盤中MP3文件進行音頻播放,可控制LED燈和蜂鳴器,可通過http協(xié)議訪問實時天氣預報,利用攝像頭和超聲波模塊實現(xiàn)可視倒車及倒車距離報警等功能,實現(xiàn)了集娛樂、安全、網(wǎng)絡為一體的智能車載多媒體終端控制系統(tǒng)。