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

          新聞中心

          EEPW首頁(yè) > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > 如何設(shè)計(jì)基于ARM的智能測(cè)溫系統(tǒng)?

          如何設(shè)計(jì)基于ARM的智能測(cè)溫系統(tǒng)?

          作者: 時(shí)間:2018-08-01 來(lái)源:網(wǎng)絡(luò) 收藏

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

          3.2 溫度傳感器驅(qū)動(dòng)程序的設(shè)計(jì)

          在Linux中,為實(shí)現(xiàn)模型抽象和統(tǒng)一操作接口,設(shè)備驅(qū) 動(dòng)程序隱藏了設(shè)備的具體細(xì)節(jié),向用戶(hù)提供了統(tǒng)一的設(shè)備接 口。Linux設(shè)備驅(qū)動(dòng)運(yùn)行于內(nèi)核中,完成直接硬件操作、設(shè) 備管理等工作,并向用戶(hù)提供了統(tǒng)一的接口模型。Linux下 將設(shè)備分為字符、塊和網(wǎng)絡(luò)設(shè)備三類(lèi),同樣設(shè)備驅(qū)動(dòng)也分為 字符驅(qū)動(dòng)、塊設(shè)備驅(qū)動(dòng)和網(wǎng)絡(luò)設(shè)備驅(qū)動(dòng)。字符設(shè)備面向的設(shè) 備是流式設(shè)備,如鼠標(biāo)、鍵盤(pán)等;塊設(shè)備面向的是需要隨 機(jī)存儲(chǔ)的設(shè)備,它主要包括硬盤(pán)、光驅(qū)等存儲(chǔ)設(shè)備;其中 DS18B20屬于字符設(shè)備。

          在字符與塊設(shè)備中由一個(gè)主設(shè)備號(hào)和一個(gè)次設(shè)備號(hào)(minor number)標(biāo)識(shí)驅(qū)動(dòng)設(shè)備。主設(shè)備號(hào)用于標(biāo)識(shí)設(shè)備類(lèi) 型,次設(shè)備號(hào)用于識(shí)別同類(lèi)設(shè)備序號(hào)。字符驅(qū)動(dòng)程序通過(guò) file_operaTIons結(jié)構(gòu)的指針向用戶(hù)程序提供接口抽象。

          其內(nèi)核定義如下:

          struct file_operaTIons

          {

          int (*read) (struct inode *inode,struct file *filp,char *buf,int count); /*設(shè)備讀*/

          int (*write) (struct inode *inode,struct file *filp,char *buf,int

          count); /*設(shè)備寫(xiě)*/int (*ioctl) (struct inode *inode,struct file *filp,unsigned int

          cmd,unsigned int arg); /*I/O控制*/

          int (*open) (struct inode *inode,struct file *filp); /*設(shè)備打 開(kāi)*/

          void (*release) (struct inode *inode,struct file *filp); /*設(shè)備 關(guān)閉*/

          ??????

          };

          在結(jié)構(gòu)file_operations里,指出了設(shè)備驅(qū)動(dòng)程序所提供的 入口點(diǎn)位置,分別是:

          read讀操作,完成由應(yīng)用設(shè)備向應(yīng)用程序傳遞的數(shù)據(jù)。 write寫(xiě)操作,完成由應(yīng)用程序向設(shè)備發(fā)送的數(shù)據(jù)。 ioctl,進(jìn)行讀、寫(xiě)以外的其它命令操作。 open,打開(kāi)設(shè)備準(zhǔn)備進(jìn)行I/O操作。 release,設(shè)備釋放操作。 每一個(gè)字符設(shè)備驅(qū)動(dòng)由一個(gè)cdev結(jié)構(gòu)體抽象,具體的驅(qū)動(dòng)的實(shí)現(xiàn)由 file_operations實(shí)現(xiàn),用戶(hù)程序通過(guò)dev_t代表設(shè) 備號(hào)查找到內(nèi)核中的cdev,由cdev調(diào)用到file_operations,從 而調(diào)用到實(shí)際的硬件操作函數(shù)。

          4 結(jié)論

          本文以便攜式手持溫度測(cè)試儀為技術(shù)、應(yīng)用背景,設(shè)計(jì)了一套具備溫度測(cè)量、數(shù)據(jù)記錄、LCD顯示以及網(wǎng)絡(luò)通信 功能的溫度測(cè)試設(shè)備。

          由于便攜式手持溫度測(cè)試儀具有體積小、功耗低同時(shí) 又具備較高性能的要求,采用了微控制器作為系 統(tǒng)的核心控制單元,并在平臺(tái)上移植了Linux操作以滿(mǎn) 足對(duì)聯(lián)網(wǎng)、存儲(chǔ)方面的需要。對(duì)比眾多的處理器,選用 了三星公司基于Cortex-A8 內(nèi)核的 S5PC100處理器,圍繞核心電路設(shè)計(jì)了溫度采集,大容量存儲(chǔ)、人機(jī)交互、以及網(wǎng)絡(luò) 通訊等單元電路;在平臺(tái)電路的基礎(chǔ)上實(shí)現(xiàn)了Linux系統(tǒng)的 移植工作,并完成了這些設(shè)備接口電路的驅(qū)動(dòng)移植工作; 在Linux系統(tǒng)下實(shí)現(xiàn)了DS18B20的驅(qū)動(dòng)設(shè)計(jì)工作,并編寫(xiě)了基 于液晶顯示的測(cè)試程序。經(jīng)過(guò)實(shí)際測(cè)試,應(yīng)用程序能夠在 Linux下采集DS18B20的溫度數(shù)據(jù),并能夠?qū)崿F(xiàn)在LCD上的顯示、存儲(chǔ)功能,存儲(chǔ)文件能夠通過(guò)網(wǎng)絡(luò)的NFS服務(wù)導(dǎo)出到PC 端,實(shí)現(xiàn)了課題設(shè)計(jì)的功能。


          上一頁(yè) 1 2 3 下一頁(yè)

          關(guān)鍵詞: ARM 智能測(cè)溫 系統(tǒng)

          評(píng)論


          相關(guān)推薦

          技術(shù)專(zhuān)區(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); })();