當(dāng)前位置:首頁 > 嵌入式 > 嵌入式教程
[導(dǎo)讀]LX800在車載監(jiān)控系統(tǒng)中的應(yīng)用

摘要:隨著嵌入式Linux操作系統(tǒng)的迅速發(fā)展,嵌入式Linux已逐漸成為嵌入式操作系統(tǒng)的一個(gè)重要分支。介紹了LX800在車載監(jiān)控系統(tǒng)中的應(yīng)用,實(shí)現(xiàn)了CAN總線實(shí)時(shí)數(shù)據(jù)和視頻的顯示和控制。主要闡述了x86系統(tǒng)平臺(tái)的硬件總體設(shè)計(jì)、PCI9054驅(qū)動(dòng)的實(shí)現(xiàn)及應(yīng)用主程序相關(guān)流程。
關(guān)鍵詞:嵌入式Linux;LX800;PCI9054

引言
    嵌入式系統(tǒng)由于體積小、功耗低、可靠性高、可裁減性強(qiáng)、軟硬件集成度高等特點(diǎn)的被廣泛地應(yīng)用于工業(yè)制造、過程控制、通信、儀器、儀表、汽車、船舶、航空、航天、消費(fèi)類產(chǎn)品等眾多領(lǐng)域。一個(gè)完整的嵌入式Linux解決方案應(yīng)包括嵌入式Linux操作系統(tǒng)內(nèi)核、運(yùn)行環(huán)境、圖形化界面和應(yīng)用軟件等。由于嵌入式設(shè)備的特殊要求,嵌入式Linux解決方案中的內(nèi)核、環(huán)境、GUI等都與標(biāo)準(zhǔn)Linux有很大不同,其主要挑戰(zhàn)是如何在狹小的Flash、ROM和內(nèi)存中,實(shí)現(xiàn)高質(zhì)量的任務(wù)實(shí)時(shí)調(diào)度、圖形化顯示、網(wǎng)絡(luò)通信等功能。本文基于AMD LX800微處理器和Linux操作系統(tǒng)進(jìn)行車載監(jiān)控系統(tǒng)的設(shè)計(jì)。車載監(jiān)控系統(tǒng)是對車輛工作狀態(tài)、運(yùn)行情況進(jìn)行顯示、控制并完成人機(jī)交互的系統(tǒng),實(shí)現(xiàn)系統(tǒng)實(shí)時(shí)響應(yīng)操作、顯示相關(guān)的機(jī)車信息。

1 系統(tǒng)硬件設(shè)計(jì)
    GeodeLX處理器是AMD公司推出的基于x86體系結(jié)構(gòu)的嵌入式處理器,主要用于工業(yè)控制、移動(dòng)設(shè)備等領(lǐng)域。GeodeLX處理器支持i586指令集,并且?guī)в蠱MX和AMD“3DNow!”指令集擴(kuò)展;其CPU頻率在400~500MHz,帶有8級單發(fā)射的指令流水線,64 KB指令L1Cache和64 KB數(shù)據(jù)L1 Cache,128 KB的可配置為指令或數(shù)據(jù)的L2 Cache。處理器內(nèi)部集成了圖形和視頻處理單元,提高了二維圖形和視頻的應(yīng)用加速。
    PCI總線即外圍部件互連總線,是一種先進(jìn)的高性能32/64位地址/數(shù)據(jù)復(fù)用局部總線,可同時(shí)支持多組外圍設(shè)備,并且不受制于處理器,為處理器與高速外圍設(shè)備提供了一座溝通的橋梁,提高了數(shù)據(jù)吞吐量(32位最大可達(dá)132 MB/s),因此是現(xiàn)在PC領(lǐng)域中很流行的總線。P CI總線具有嚴(yán)格的總線規(guī)范,保證了良好的兼容性,符合PCI總線規(guī)范的擴(kuò)展卡可以插入任何PCI系統(tǒng)可靠地工作。因此,和GeodeLX處理器一起使用的CS5536芯片通過PCI總線組提供南橋的功能,如IDE、USB2.0、Flash、AC97和x86的外圍設(shè)備接口。
    為了擴(kuò)展一些用戶接口,如高速串口、CAN總線接口等,需要將復(fù)雜的PCI總線接口轉(zhuǎn)換為相對簡單的用戶接口。本系統(tǒng)采用PLX公司生產(chǎn)的PCI總線通用接口芯片PLC9054,處理器可以通過PCI總線訪問擴(kuò)展資源,如CAN總線、液晶屏數(shù)據(jù)線、按鍵高速串口等其他擴(kuò)展設(shè)備。此款芯片采用先進(jìn)的PLX數(shù)據(jù)管道結(jié)構(gòu)技術(shù),符合PCIV2.1和V2.2規(guī)范;提供了兩個(gè)獨(dú)立的可編程DMA控制器;每個(gè)通道均支持塊和分散/集中的DMA方式;在PCI總線端支持32位數(shù)據(jù)總線,33 MHz時(shí)鐘信號;本地端可以編程實(shí)現(xiàn)8/16/32位的數(shù)據(jù)寬度;傳輸速率最高可達(dá)132 MB/s;本地總線端時(shí)鐘最高可達(dá)50 MHz,支持復(fù)用/非復(fù)用的32位地址數(shù)據(jù)。PCI9054提供了PCI、LOCAL、EEPROM總線3個(gè)接口,作為一種橋接芯片在PCI總線和LOCAL總線之間提供傳遞消息。
    W83627DHG通過LPC接口與CS5536通信,此款LPC接口的I/O芯片除了可以支持傳統(tǒng)的輸入/輸出接口,如鍵盤和鼠標(biāo)、并口、軟盤口、UART、SPI口等,硬件監(jiān)控針對新一代的CPU,提供符合VRD11.0規(guī)格的CPU電壓偵測功能,并且可經(jīng)由鍵盤任一按鍵或是鼠標(biāo)將系統(tǒng)由休眠狀態(tài)喚醒。
    BIOS實(shí)際是一組被固化到電腦中,為電腦提供最基本的硬件控制的程序,它是連通軟件程序和硬件設(shè)備之間的樞紐,負(fù)責(zé)響應(yīng)硬件的即時(shí)要求,并按軟件對硬件的操作要求執(zhí)行。本設(shè)計(jì)BIOS芯片采用LPC Flash可擦寫芯片。


    系統(tǒng)的整體硬件結(jié)構(gòu)如圖1所示,系統(tǒng)由處理器、外圍電路及外圍接口設(shè)備組成。外圍電路包括晶振、電源、復(fù)位電路、串口、網(wǎng)口、PCI總線、USB接口、Flash等。
[!--empirenews.page--]
2 系統(tǒng)軟件設(shè)計(jì)
   
Linux采用統(tǒng)一的框架對硬件進(jìn)行管理,從一個(gè)硬件平臺(tái)到另一個(gè)硬件平臺(tái)的改動(dòng)與上層應(yīng)用無關(guān)。Linux可以隨意地配置,不需要任何許可證或與商家的合作關(guān)系,源代碼可以免費(fèi)得到,這使得采用Linux作為操作系統(tǒng)不會(huì)遇到任何關(guān)于版權(quán)的糾紛。Linux本身內(nèi)置網(wǎng)絡(luò)支持,而目前嵌入式系統(tǒng)對網(wǎng)絡(luò)支持要求越來越高,Linux的高度模塊化使添加部件非常容易。Linux是一個(gè)和Unix相似、以內(nèi)核為基礎(chǔ)的、具有完全的內(nèi)存訪問控制、支持大量硬件(包括x86、Alpha、ARM等現(xiàn)有的大部分芯片)等特性的一種通用操作系統(tǒng)。其程序源碼全部公開,任何人可以修改,并在GNU通用公共許可證下發(fā)行。這樣,開發(fā)人員可以對操作系統(tǒng)進(jìn)行定制裁減,適應(yīng)其特殊需要。其強(qiáng)大的語言編譯器GCC、G++等不但成熟完善,而且使用方便。本論文中基于V2.6.27內(nèi)核通過make menuconfig對內(nèi)核進(jìn)行部分功能裁減。
    軟硬件綜合開發(fā)是嵌入式系統(tǒng)的一大特色,軟件設(shè)計(jì)是在緊密聯(lián)系硬件的基礎(chǔ)上來完成的。本文的車載監(jiān)控系統(tǒng)設(shè)計(jì)遵循嵌入式軟件的體系結(jié)構(gòu)設(shè)計(jì)方法,分為兩個(gè)部分:①相關(guān)驅(qū)動(dòng)的開發(fā),如底層包括擴(kuò)展的PCI9054驅(qū)動(dòng)、串口驅(qū)動(dòng)、CAN驅(qū)動(dòng)及內(nèi)核自帶的網(wǎng)絡(luò)驅(qū)動(dòng)、USB、CS5536等設(shè)備驅(qū)動(dòng);②應(yīng)用程序的開發(fā),包括顯示監(jiān)控任務(wù)的實(shí)現(xiàn)、配置文件讀寫實(shí)現(xiàn)等。
2.1 設(shè)備驅(qū)動(dòng)開發(fā)
   
底層接口層封裝監(jiān)控顯示軟件與底層通信硬件接口、操作系統(tǒng)交互等部分的代碼,通過定義統(tǒng)一的接口規(guī)范,實(shí)現(xiàn)上層軟件不依賴具體的硬件平臺(tái),從而實(shí)現(xiàn)軟件易于移植。
    作為底層驅(qū)動(dòng)模塊的基本結(jié)構(gòu)至少必須包含兩個(gè)函數(shù):module_init()和module_exit()。第一個(gè)函數(shù)是在把模塊加載入內(nèi)核時(shí)調(diào)用的;第二個(gè)函數(shù)則在刪除該模塊時(shí)調(diào)用。module_init()向內(nèi)核注冊模塊所能提供的所有新功能,即可以由應(yīng)用程序使用的新功能。函數(shù)module_ exit()的任務(wù)是清除掉module_init()所做的一切,保證這個(gè)模塊被安全地卸載。模塊的調(diào)用情況如圖2所示。下面以PCI9054為代表,描述硬件驅(qū)動(dòng)設(shè)計(jì)過程。


    PCI9054驅(qū)動(dòng)程序主要實(shí)現(xiàn)PCI9054設(shè)備的中斷使能屏蔽,PCI9054設(shè)備的中斷處理,PCI9054設(shè)備的掛載、卸載、初始化。
2.1.1 定義和注冊PCI9054設(shè)備
   
    [!--empirenews.page--]
2.1.2 PCI9054_probe()函數(shù)任務(wù)
   
對于probe驅(qū)動(dòng)函數(shù),驅(qū)動(dòng)程序的許多任務(wù)及硬件初始化工作都將在此函數(shù)中完成。它主要完成注冊PCI9054時(shí)調(diào)用的函數(shù),完成PCI9054配置信息讀取,取得外設(shè)地址,申請中斷,配置PCI9054的雜項(xiàng)寄存器。探測流程如圖3所示。


2.1.3 pci9054_init_module初始化函數(shù)
   
主要完成PCI的初始化、注冊PCI設(shè)備、使能PCI中斷等。流程圖如圖4所示。


[!--empirenews.page--]
2.1.4 pci9054_cleanup_module注銷函數(shù)
   
用于注銷PCI9054設(shè)備及相關(guān)擴(kuò)展設(shè)備。流程圖如圖5所示。


2.2 應(yīng)用程序的開發(fā)
   
車載監(jiān)控系統(tǒng)應(yīng)用程序的實(shí)現(xiàn)過程主要包括:窗體和各個(gè)信息控件的初始化并顯示窗體實(shí)現(xiàn)人機(jī)交互、對按鍵的響應(yīng)、參數(shù)的存儲(chǔ)、發(fā)送語音消息、圖5 PCI9054設(shè)備的卸載CAN事件數(shù)據(jù)的處理并實(shí)時(shí)刷新屏上信息顯示當(dāng)前設(shè)備的工作狀態(tài)。其程序流程如圖6所示。


2.3 應(yīng)用程序與設(shè)備驅(qū)動(dòng)的關(guān)聯(lián)
   
在Linux系統(tǒng)中,對于一個(gè)硬件設(shè)備對應(yīng)的是/dev目錄下的邏輯設(shè)備節(jié)點(diǎn),這個(gè)節(jié)點(diǎn)以文件的形式存在,但它不是普通意義上的文件,是設(shè)備文件,更確切地說,它是設(shè)備節(jié)點(diǎn)。這個(gè)節(jié)點(diǎn)是通過mknod命令建立的,其中指定了主設(shè)備號和次設(shè)備號。通常而言,主設(shè)備號表明了對應(yīng)著確定的驅(qū)動(dòng)程序;次設(shè)備號由內(nèi)核使用,用于正確確定設(shè)備文件所指的設(shè)備。
    insmod加載驅(qū)動(dòng)程序,設(shè)備號是從/proc/devices文件中獲得的,所以通常是有驅(qū)動(dòng)程序在內(nèi)核中,才有設(shè)備節(jié)點(diǎn)在目錄中。這個(gè)設(shè)備號(這里特指主設(shè)備號)的主要作用,就是聲明設(shè)備所使用的驅(qū)動(dòng)程序。驅(qū)動(dòng)程序和設(shè)備號是一一對應(yīng)的,當(dāng)你打開一個(gè)設(shè)備文件時(shí),操作系統(tǒng)能知道這個(gè)設(shè)備所對應(yīng)的驅(qū)動(dòng)程序的加載。
    設(shè)備節(jié)點(diǎn)文件中的file屬性中指明了驅(qū)動(dòng)程序中fops方法實(shí)現(xiàn)的函數(shù)指針。應(yīng)用程序通過使用open、write、read、ioetl等函數(shù)來訪問設(shè)備節(jié)點(diǎn),進(jìn)行相應(yīng)的工作。

結(jié)語
   
LX800微處理器以其豐富的接口、較快的處理速度、穩(wěn)定性及易擴(kuò)展性而受到嵌入式開發(fā)者的青睞。基于LX800的車載監(jiān)控系統(tǒng)采用Lin ux操作系統(tǒng),使其具備了實(shí)時(shí)多任務(wù)處理的能力。經(jīng)過測試,系統(tǒng)運(yùn)行穩(wěn)定可靠,有較好應(yīng)用前景。

本站聲明: 本文章由作者或相關(guān)機(jī)構(gòu)授權(quán)發(fā)布,目的在于傳遞更多信息,并不代表本站贊同其觀點(diǎn),本站亦不保證或承諾內(nèi)容真實(shí)性等。需要轉(zhuǎn)載請聯(lián)系該專欄作者,如若文章內(nèi)容侵犯您的權(quán)益,請及時(shí)聯(lián)系本站刪除。
換一批
延伸閱讀

9月2日消息,不造車的華為或?qū)⒋呱龈蟮莫?dú)角獸公司,隨著阿維塔和賽力斯的入局,華為引望愈發(fā)顯得引人矚目。

關(guān)鍵字: 阿維塔 塞力斯 華為

加利福尼亞州圣克拉拉縣2024年8月30日 /美通社/ -- 數(shù)字化轉(zhuǎn)型技術(shù)解決方案公司Trianz今天宣布,該公司與Amazon Web Services (AWS)簽訂了...

關(guān)鍵字: AWS AN BSP 數(shù)字化

倫敦2024年8月29日 /美通社/ -- 英國汽車技術(shù)公司SODA.Auto推出其旗艦產(chǎn)品SODA V,這是全球首款涵蓋汽車工程師從創(chuàng)意到認(rèn)證的所有需求的工具,可用于創(chuàng)建軟件定義汽車。 SODA V工具的開發(fā)耗時(shí)1.5...

關(guān)鍵字: 汽車 人工智能 智能驅(qū)動(dòng) BSP

北京2024年8月28日 /美通社/ -- 越來越多用戶希望企業(yè)業(yè)務(wù)能7×24不間斷運(yùn)行,同時(shí)企業(yè)卻面臨越來越多業(yè)務(wù)中斷的風(fēng)險(xiǎn),如企業(yè)系統(tǒng)復(fù)雜性的增加,頻繁的功能更新和發(fā)布等。如何確保業(yè)務(wù)連續(xù)性,提升韌性,成...

關(guān)鍵字: 亞馬遜 解密 控制平面 BSP

8月30日消息,據(jù)媒體報(bào)道,騰訊和網(wǎng)易近期正在縮減他們對日本游戲市場的投資。

關(guān)鍵字: 騰訊 編碼器 CPU

8月28日消息,今天上午,2024中國國際大數(shù)據(jù)產(chǎn)業(yè)博覽會(huì)開幕式在貴陽舉行,華為董事、質(zhì)量流程IT總裁陶景文發(fā)表了演講。

關(guān)鍵字: 華為 12nm EDA 半導(dǎo)體

8月28日消息,在2024中國國際大數(shù)據(jù)產(chǎn)業(yè)博覽會(huì)上,華為常務(wù)董事、華為云CEO張平安發(fā)表演講稱,數(shù)字世界的話語權(quán)最終是由生態(tài)的繁榮決定的。

關(guān)鍵字: 華為 12nm 手機(jī) 衛(wèi)星通信

要點(diǎn): 有效應(yīng)對環(huán)境變化,經(jīng)營業(yè)績穩(wěn)中有升 落實(shí)提質(zhì)增效舉措,毛利潤率延續(xù)升勢 戰(zhàn)略布局成效顯著,戰(zhàn)新業(yè)務(wù)引領(lǐng)增長 以科技創(chuàng)新為引領(lǐng),提升企業(yè)核心競爭力 堅(jiān)持高質(zhì)量發(fā)展策略,塑強(qiáng)核心競爭優(yōu)勢...

關(guān)鍵字: 通信 BSP 電信運(yùn)營商 數(shù)字經(jīng)濟(jì)

北京2024年8月27日 /美通社/ -- 8月21日,由中央廣播電視總臺(tái)與中國電影電視技術(shù)學(xué)會(huì)聯(lián)合牽頭組建的NVI技術(shù)創(chuàng)新聯(lián)盟在BIRTV2024超高清全產(chǎn)業(yè)鏈發(fā)展研討會(huì)上宣布正式成立。 活動(dòng)現(xiàn)場 NVI技術(shù)創(chuàng)新聯(lián)...

關(guān)鍵字: VI 傳輸協(xié)議 音頻 BSP

北京2024年8月27日 /美通社/ -- 在8月23日舉辦的2024年長三角生態(tài)綠色一體化發(fā)展示范區(qū)聯(lián)合招商會(huì)上,軟通動(dòng)力信息技術(shù)(集團(tuán))股份有限公司(以下簡稱"軟通動(dòng)力")與長三角投資(上海)有限...

關(guān)鍵字: BSP 信息技術(shù)
關(guān)閉
關(guān)閉