摘? 要:本文以飛思卡爾公司的i.MX6 Dual微處理器為硬件平臺,應用嵌入式Linux系統(tǒng)完成了車載多媒體系統(tǒng)的設計。對Bootloader程序進行了移植,后引導Linux內核編譯以及裁剪移植,最后完成Linux系統(tǒng)文件系統(tǒng)的配置。在系統(tǒng)內核移植成功的基礎上,完成了LCD驅動、觸摸屏驅動、USB驅動等系統(tǒng)各個模塊驅動程序的設計,實現(xiàn)了系統(tǒng)的基本功能。
關鍵詞:車載多媒體;嵌入式Linux;移植
中圖分類號:TN919.82;U463.6? ? ? 文獻標識碼:A 文章編號:2096-4706(2019)24-0036-04
Abstract:Based on the i.MX6 Dual microprocessor of Freescale company as the hardware platform,this paper completed the design of vehicle multimedia system by using embedded Linux system. After porting the Bootloader program,booting the Linux kernel to compile and prune the porting program,and finally completing the configuration of the Linux system file system. On the basis of the successful transplantation of the system kernel,the design of LCD driver,touch screen driver,USB driver and other modules of the system is completed,and the basic functions of the system are realized.
Keywords:vehicle multimedia;embedded Linux;porting
0? 引? 言
目前,國內生產(chǎn)的產(chǎn)品功能上多數(shù)比較單一,結構相對簡單。比較常見為車載的多媒體播放器、車載電話以及倒車雷達等產(chǎn)品。國內汽車電子產(chǎn)品中很少有整合了可視的倒車系統(tǒng)、音樂廣播的播放以及智能導航的多媒體信息平臺。目前國內的多功能車載多媒體系統(tǒng)總體還不穩(wěn)定,而國內大型汽車電子廠商自主研發(fā)的產(chǎn)品無論在功能上還是在性能上與國外產(chǎn)品都有較大差距。
由于Linux系統(tǒng)是完全開源的操作系統(tǒng),開發(fā)人員可以根據(jù)項目的實際需要來進行系統(tǒng)的裁剪以及移植,滿足相關專業(yè)用戶對自己的汽車多媒體操作系統(tǒng)的定制需求,而Linux操作系統(tǒng)的開源性質,會大大降低汽車多媒體系統(tǒng)的制作成本。本文以飛思卡爾公司的i.MX6 Dual微處理器為硬件平臺,應用嵌入式Linux系統(tǒng)完成了車載多媒體軟件設計與實現(xiàn)。
1? 系統(tǒng)軟件總體設計
系統(tǒng)軟件框架圖如圖1所示,本設計以嵌入式Linux軟件為系統(tǒng)軟件,在此基礎上進行相關應用程序、驅動程序的開發(fā)。后續(xù)工作包括嵌入式Linux內核的裁剪以及移植,LCD驅動、USB驅動、音頻驅動以及藍牙驅動的設計以及修改。最終完成相關應用軟件對硬件的操作控制。
2? 嵌入式Linux軟件平臺建立
在嵌入式Linux系統(tǒng)開發(fā)中由于目標機的容量通常比較小,在嵌入式軟件開發(fā)當中通常遵循宿主機搭建交叉編譯環(huán)境和TFTP以及NFS環(huán)境的搭建,在將相關項目編譯完成后下載至目標機進行軟件運行。本設計采用的宿主機為Ubuntu18.04系統(tǒng)。
2.1? 交叉編譯環(huán)境的搭建
交叉編譯是指在某個主機平臺上通常開發(fā)都在PC端進行,采用交叉編譯器編譯出可以在ARM平臺上運行的代碼過程。本文應用交叉編譯器的相關版本arm-linux-gcc-4.5.1.tgz,在硬件方面應用基于ARM Cortex-A9為核心的硬件系統(tǒng)。下載好的arm-linux-gcc-4.5.1.tgz經(jīng)過U盤拷貝至系統(tǒng)目錄當中,應該放置在根目錄之下。
2.2? 搭建TFTP傳輸?shù)沫h(huán)境
TFTP是基于傳統(tǒng)C/S的模式進行工作的,TFTP的開發(fā)環(huán)境構建分為兩個部分:其一是宿主機端的tftp-server的支持;其二是目標板的tftp-client的支持。
2.3? NFS的開發(fā)環(huán)境搭建
首先進行NFS服務器的安裝,其次對服務器端的防火墻進行關閉。再則對NFS服務器進行配置,用root的身份登錄到主機端。應用vi的編輯器進行/etc/exports文件的編輯。其次,建立目標機NFS開發(fā)環(huán)境。如果目標機對NFS不支持,那么應在交叉編譯的環(huán)境中重新進行內核的編譯,并增加支持的選項。
3? Linux內核在i.MX6 Dual上的移植
3.1? 嵌入式Linux系統(tǒng)組成
嵌入式Linux系統(tǒng)內核是一個穩(wěn)定性的代碼,也是整個系統(tǒng)的核心軟件。內核要為多個程序進行服務,為了程序的穩(wěn)定運行,防止因為某個程序代碼出錯而影響其他程序,內核向所有的應用程序提供函數(shù)接口,為符合接口函數(shù)的應用程序提供服務。嵌入式Linux系統(tǒng)內核可以分為進程管理、內存管理、文件系統(tǒng)、設備控制、網(wǎng)絡接口五部分,具體組成結構圖如圖2所示。
3.1.1? 進程管理
進程管理主要擔負著創(chuàng)建進程和銷毀進程的職責,與此同時會處理進程和外部通訊之間的信息。不同進程之間通信通過進程調度來完成處理。從基本機理上講進程調度實際上是進程管理中的一部分。
3.1.2? 內存管理
內存作為計算機的核心資源,其是決定系統(tǒng)的性能優(yōu)劣的關鍵性因素。在嵌入式的Linux系統(tǒng)當中支持虛擬內存,也允許有多個進程一起共享主內存的區(qū)域。Linux系統(tǒng)的內存管理可以分為硬件相關的部分和硬件無關的部分。對于硬件無關的部分為系統(tǒng)邏輯內存的對換和提供的進程映射的部分,而硬件相關的部分為內存管理相關硬件提供虛擬接口。
3.1.3? 文件系統(tǒng)
Linux和Unix差不多,它們均把對象當中文件來進行操作,其中包含了FAT、EXT2/EXT3等相關邏輯文件的系統(tǒng),同時包括了設備驅動程序。
3.1.4? 設備控制
系統(tǒng)操作很多時候都需要相關指令映射到對應的設備上,相關外設設備需要有相關的驅動程序來作為控制指令進行相關工作。在嵌入式系統(tǒng)中的每個外部的設備要實現(xiàn)正常的功能,都應有相應的驅動程序。
3.1.5? 網(wǎng)絡接口
網(wǎng)絡接口的主要作用是保存互聯(lián)網(wǎng)各種網(wǎng)絡標準,并對相應的網(wǎng)絡硬件正常工作提供相應的支持,這種接口包含了網(wǎng)絡驅動的程序以及網(wǎng)絡協(xié)議兩部分。操作系統(tǒng)負責管理這些接口,來實現(xiàn)應用程序和網(wǎng)絡接口之間的數(shù)據(jù)傳遞。
3.2? Linux系統(tǒng)內核下載
本設計采用Git工具在Linux內核源代碼的倉庫來下載Linux內核源碼,Linux內核源碼主目錄簡介如表1所示。
在嵌入式系統(tǒng)中存儲空間較小,而系統(tǒng)內核需要在內存空間進行程序的調度以及相關的控制,系統(tǒng)內核大小對目標系統(tǒng)的運行效率和穩(wěn)定起到了很重要的作用。本文使用的是含有設備樹的Linux內核,因此在內核移植時就不需要在內核源碼目錄arch/arm/plat-xxx以及arch/arm/mach-xxx修改相關板級的硬件信息,Linux內核通過eg和interrupts設備樹文件節(jié)點屬性,可以得到硬件設備的相關信息。所以,在移植設計的ARM Linux內核時,只要添加相關的配置文件,而不用根據(jù)硬件信息修改內核源碼目錄下大量的板級文件,這樣可以大量減少Linux內核移植的工作量。
本文使用的Exyson4412芯片屬于Exyson4系列的產(chǎn)品。而4.4.4版本的Linux內核已經(jīng)對Exyson4系列的芯片相關硬件支持較為完善。在進行相關移植時有些代碼可以直接復用。在將Linux-4.4.4內核移植到相關目標板之前,需要在Linux內核的源碼下增加目標板相關的設備樹文件以及目標板的配置文件。相對于ARM架構系列的芯片,相關的設備樹文件被存放在Linux內核的源碼根目錄下arch/arm/boot/dts的目錄下,而目標板配置文件被存放在Linux內核的源碼根目錄下的arch/arm/configs的目錄下。
4? 各模塊驅動設計
4.1? LCD 驅動程序的實現(xiàn)
Linux為顯示的設備提供了幀緩沖的接口。該接口是一個抽象內存的設備。通過該接口,上層應用程序在圖形模式下運行,直接讀寫顯示緩沖區(qū)。應用程序開發(fā)人員不關心顯示頁面更改機制和實際物理現(xiàn)有位置。具體操作全部由Framebuffer設備驅動來實現(xiàn)。
Framebuffer設備的驅動程序一般使用文件層-驅動器層相關接口的模式。系統(tǒng)文件層應用和其他的字符設備相同的文件操作界面。如果涉及硬件有關驅動的程序層,則要定義函數(shù)指針以及數(shù)據(jù)結構。幀緩沖的設備最終將通過它們實現(xiàn)底層相關的顯示驅動的程序。Linux 4.4.4內核當中提供了LCD驅動程序相應的接口函數(shù),幀緩沖的設備給LCD 驅動提供了相應文件操作的接口。
本文采用的LCD屬于彩色反射有源矩陣TFT寬視角、高亮度液晶的模塊。每個像素由RGB三種顏色組成,每種顏色是6位,最大顯示為260,000種顏色。方法是:
(1)對$KERNEL/arch/arm/mach-exynos4412/mach -smdk4412.c進行修改,并添加LCD寄存器相關頭文件。
(2)添加LCD初始化的代碼,設置LCD的控制寄存器。完成LCD驅動程序代碼修改后,還應將LCD驅動程序代碼添加到內核中。在系統(tǒng)當中,LCD顯示器將在系統(tǒng)啟動時連續(xù)工作,并且沒有加載LCD設備驅動程序的問題。因此選擇將LCD驅動程序靜態(tài)編譯到內核中,從而提高系統(tǒng)的效率。
4.2? USB 接口驅動移植
Linux內核系統(tǒng)提供了與USB設備驅動程序開發(fā)直接相關的核心數(shù)據(jù)結構,它在整個設備驅動程序的框架中起著重要作用。linux/fs.h中定義的File_operation數(shù)據(jù)結構為內核的其余部分提供了標準接口。
與此同時,在Linux kernel源碼的driver/usb/usb-skeleton.c目錄中為設計開發(fā)人員,提供了一個最基礎的USB驅動程序,可以稱為USB骨架。通過對USB骨架少量的修改,就可以完成本設計的對USB設備驅動的需求。它提供了USB驅動的file_operations函數(shù)具體實現(xiàn),從而有效降低了USB驅動程序的開發(fā)難度。本設計的USB驅動開發(fā)在它的基礎上進行相關改進設置,僅需要對USB進行必要的初始化就可以使用。
4.3? 觸摸屏驅動的實現(xiàn)
本設計采用電容式五點觸控觸摸屏,采用IIC接口管理芯片為FT5206來連接4412的核心板,F(xiàn)T5206觸摸芯片與核心板之間通過三條線數(shù)據(jù)線進行連接:兩條為用于IIC數(shù)據(jù)傳輸,另外一條為中斷引腳。由于,驅動觸摸芯片與主機之間是通過IIC接口進行連接的,因此需要采用IIC驅動框架;同時考慮到觸摸屏最終是經(jīng)過輸入子系統(tǒng)的方式進行輸入事件的上報,因此還需要采用輸入子系統(tǒng)的驅動框架。
5? 結? 論
綜上所述,隨著汽車行業(yè)的快速發(fā)展,對車載多媒體技術提出了更高的要求。在這種技術發(fā)展背景基礎上,本文設計了一種基于以飛思卡爾公司的i.MX6 Dual微處理器為硬件平臺嵌入式Linux車載多媒體系統(tǒng)。該系統(tǒng)集合了車載多媒體、導航系統(tǒng)、倒車影像系統(tǒng)等功能,最大程度的闡述整個車載多媒體系統(tǒng)的實現(xiàn)過程,為實際車載多媒體系統(tǒng)的開發(fā)和設計提供基本框架。
參考文獻:
[1] Paul Scherz,Simon Monk. Practical Electronics for Inventors,Second Edition [M].USA:McGraw-Hill/TAB Electronics,2016.
[2] 譚沛錕.A汽車影音業(yè)務競爭戰(zhàn)略研究 [D].廣州:廣東工業(yè)大學,2014.
[3] 魏政典.汽車駕駛多媒體教學系統(tǒng)的交互界面設計與開發(fā) [D].上海:上海交通大學,2014.
[4] LOPATTANAKIJ P,TIWATTHANONT P. Development of seismic data acquisition based on ARM-Linux [C]//Electric Information and Control Engineering (ICEICE),2011 International Conference on. IEEE,2011.
[5] CAO J,YIN L,ZHAO H. Design and Development of Embedded Multimedia Terminal [C]//電子商務、工程及科學領域的分布計算和應用國際會議,2010.
[6] MOSNEANG C,MISCHIE S,PAZSITKA R. Integrating the accelerometer of the AM335X Sitara Starter Kit in a QT application [C]//Education & Research Conference. IEEE,2014.
[7] RUBANOV V,SILAKOV D . Ensuring portability of Linux applications through standardization and knowledge base driven analysis [J].Science of Computer Programming,2014,91:234-248.
作者簡介:王松(1983-),男,漢族,湖北襄陽人,開放工程師,碩士,研究方向:集成電路工程。