LX800在車載監(jiān)控系統(tǒng)中的應(yīng)用
2 系統(tǒng)軟件設(shè)計(jì)
Linux采用統(tǒng)一的框架對(duì)硬件進(jìn)行管理,從一個(gè)硬件平臺(tái)到另一個(gè)硬件平臺(tái)的改動(dòng)與上層應(yīng)用無(wú)關(guān)。Linux可以隨意地配置,不需要任何許可證或與商家的合作關(guān)系,源代碼可以免費(fèi)得到,這使得采用Linux作為操作系統(tǒng)不會(huì)遇到任何關(guān)于版權(quán)的糾紛。Linux本身內(nèi)置網(wǎng)絡(luò)支持,而目前嵌入式系統(tǒng)對(duì)網(wǎng)絡(luò)支持要求越來(lái)越高,Linux的高度模塊化使添加部件非常容易。Linux是一個(gè)和Unix相似、以內(nèi)核為基礎(chǔ)的、具有完全的內(nèi)存訪問(wèn)控制、支持大量硬件(包括x86、Alpha、ARM等現(xiàn)有的大部分芯片)等特性的一種通用操作系統(tǒng)。其程序源碼全部公開(kāi),任何人可以修改,并在GNU通用公共許可證下發(fā)行。這樣,開(kāi)發(fā)人員可以對(duì)操作系統(tǒng)進(jìn)行定制裁減,適應(yīng)其特殊需要。其強(qiáng)大的語(yǔ)言編譯器GCC、G++等不但成熟完善,而且使用方便。本論文中基于V2.6.27內(nèi)核通過(guò)make menuconfig對(duì)內(nèi)核進(jìn)行部分功能裁減。
軟硬件綜合開(kāi)發(fā)是嵌入式系統(tǒng)的一大特色,軟件設(shè)計(jì)是在緊密聯(lián)系硬件的基礎(chǔ)上來(lái)完成的。本文的車載監(jiān)控系統(tǒng)設(shè)計(jì)遵循嵌入式軟件的體系結(jié)構(gòu)設(shè)計(jì)方法,分為兩個(gè)部分:①相關(guān)驅(qū)動(dòng)的開(kāi)發(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)用程序的開(kāi)發(fā),包括顯示監(jiān)控任務(wù)的實(shí)現(xiàn)、配置文件讀寫實(shí)現(xiàn)等。
2.1 設(shè)備驅(qū)動(dòng)開(kāi)發(fā)
底層接口層封裝監(jiān)控顯示軟件與底層通信硬件接口、操作系統(tǒng)交互等部分的代碼,通過(guò)定義統(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)核注冊(cè)模塊所能提供的所有新功能,即可以由應(yīng)用程序使用的新功能。函數(shù)module_ exit()的任務(wù)是清除掉module_init()所做的一切,保證這個(gè)模塊被安全地卸載。模塊的調(diào)用情況如圖2所示。下面以PCI9054為代表,描述硬件驅(qū)動(dòng)設(shè)計(jì)過(guò)程。本文引用地址:http://butianyuan.cn/article/148218.htm
評(píng)論