<meter id="pryje"><nav id="pryje"><delect id="pryje"></delect></nav></meter>
          <label id="pryje"></label>

          新聞中心

          EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > LX800在車載監(jiān)控系統(tǒng)中的應(yīng)用

          LX800在車載監(jiān)控系統(tǒng)中的應(yīng)用

          作者: 時(shí)間:2012-12-07 來源:網(wǎng)絡(luò) 收藏

          2 系統(tǒng)軟件設(shè)計(jì)
          Linux采用統(tǒng)一的框架對硬件進(jìn)行管理,從一個(gè)硬件平臺到另一個(gè)硬件平臺的改動與上層應(yīng)用無關(guān)。Linux可以隨意地配置,不需要任何許可證或與商家的合作關(guān)系,源代碼可以免費(fèi)得到,這使得采用Linux作為操作系統(tǒng)不會遇到任何關(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ū)動的開發(fā),如底層包括擴(kuò)展的驅(qū)動、串口驅(qū)動、CAN驅(qū)動及內(nèi)核自帶的網(wǎng)絡(luò)驅(qū)動、USB、CS5536等設(shè)備驅(qū)動;②應(yīng)用程序的開發(fā),包括顯示監(jiān)控任務(wù)的實(shí)現(xiàn)、配置文件讀寫實(shí)現(xiàn)等。
          2.1 設(shè)備驅(qū)動開發(fā)
          底層接口層封裝監(jiān)控顯示軟件與底層通信硬件接口、操作系統(tǒng)交互等部分的代碼,通過定義統(tǒng)一的接口規(guī)范,實(shí)現(xiàn)上層軟件不依賴具體的硬件平臺,從而實(shí)現(xiàn)軟件易于移植。
          作為底層驅(qū)動模塊的基本結(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所示。下面以為代表,描述硬件驅(qū)動設(shè)計(jì)過程。

          本文引用地址:http://www.ex-cimer.com/article/148218.htm


          d.JPG



          關(guān)鍵詞: 嵌入式Linux LX800 PCI9054

          評論


          相關(guān)推薦

          技術(shù)專區(qū)

          關(guān)閉
          看屁屁www成人影院,亚洲人妻成人图片,亚洲精品成人午夜在线,日韩在线 欧美成人 (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })();