<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>

新聞中心

EEPW首頁(yè) > 嵌入式系統 > 設計應用 > 如何設計基于A(yíng)RM的智能測溫系統?

如何設計基于A(yíng)RM的智能測溫系統?

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

本文引用地址:http://dyxdggzs.com/article/201808/384918.htm

3.2 溫度傳感器驅動(dòng)程序的設計

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

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

其內核定義如下:

struct file_operaTIons

{

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

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

count); /*設備寫(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); /*設備打 開(kāi)*/

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

??????

};

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

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

4 結論

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

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


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

關(guān)鍵詞: ARM 智能測溫 系統

評論


相關(guān)推薦

技術(shù)專(zhuān)區

關(guān)閉
国产精品自在自线亚洲|国产精品无圣光一区二区|国产日产欧洲无码视频|久久久一本精品99久久K精品66|欧美人与动牲交片免费播放
<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>