如何設(shè)計基于ARM的智能測溫系統(tǒng)?
3.2 溫度傳感器驅(qū)動程序的設(shè)計
在Linux中,為實現(xiàn)模型抽象和統(tǒng)一操作接口,設(shè)備驅(qū) 動程序隱藏了設(shè)備的具體細(xì)節(jié),向用戶提供了統(tǒng)一的設(shè)備接 口。Linux設(shè)備驅(qū)動運行于內(nèi)核中,完成直接硬件操作、設(shè) 備管理等工作,并向用戶提供了統(tǒng)一的接口模型。Linux下 將設(shè)備分為字符、塊和網(wǎng)絡(luò)設(shè)備三類,同樣設(shè)備驅(qū)動也分為 字符驅(qū)動、塊設(shè)備驅(qū)動和網(wǎng)絡(luò)設(shè)備驅(qū)動。字符設(shè)備面向的設(shè) 備是流式設(shè)備,如鼠標(biāo)、鍵盤等;塊設(shè)備面向的是需要隨 機存儲的設(shè)備,它主要包括硬盤、光驅(qū)等存儲設(shè)備;其中 DS18B20屬于字符設(shè)備。
在字符與塊設(shè)備中由一個主設(shè)備號和一個次設(shè)備號(minor number)標(biāo)識驅(qū)動設(shè)備。主設(shè)備號用于標(biāo)識設(shè)備類 型,次設(shè)備號用于識別同類設(shè)備序號。字符驅(qū)動程序通過 file_operaTIons結(jié)構(gòu)的指針向用戶程序提供接口抽象。
其內(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è)備寫*/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è)備打 開*/
void (*release) (struct inode *inode,struct file *filp); /*設(shè)備 關(guān)閉*/
??????
};
在結(jié)構(gòu)file_operations里,指出了設(shè)備驅(qū)動程序所提供的 入口點位置,分別是:
read讀操作,完成由應(yīng)用設(shè)備向應(yīng)用程序傳遞的數(shù)據(jù)。 write寫操作,完成由應(yīng)用程序向設(shè)備發(fā)送的數(shù)據(jù)。 ioctl,進(jìn)行讀、寫以外的其它命令操作。 open,打開設(shè)備準(zhǔn)備進(jìn)行I/O操作。 release,設(shè)備釋放操作。 每一個字符設(shè)備驅(qū)動由一個cdev結(jié)構(gòu)體抽象,具體的驅(qū)動的實現(xiàn)由 file_operations實現(xiàn),用戶程序通過dev_t代表設(shè) 備號查找到內(nèi)核中的cdev,由cdev調(diào)用到file_operations,從 而調(diào)用到實際的硬件操作函數(shù)。
4 結(jié)論
本文以便攜式手持溫度測試儀為技術(shù)、應(yīng)用背景,設(shè)計了一套具備溫度測量、數(shù)據(jù)記錄、LCD顯示以及網(wǎng)絡(luò)通信 功能的溫度測試設(shè)備。
由于便攜式手持溫度測試儀具有體積小、功耗低同時 又具備較高性能的要求,系統(tǒng)采用了ARM微控制器作為系 統(tǒng)的核心控制單元,并在平臺上移植了Linux操作系統(tǒng)以滿 足系統(tǒng)對聯(lián)網(wǎng)、存儲方面的需要。對比眾多的處理器,選用 了三星公司基于Cortex-A8 內(nèi)核的 S5PC100處理器,圍繞核心電路設(shè)計了溫度采集,大容量存儲、人機交互、以及網(wǎng)絡(luò) 通訊等單元電路;在平臺電路的基礎(chǔ)上實現(xiàn)了Linux系統(tǒng)的 移植工作,并完成了這些設(shè)備接口電路的驅(qū)動移植工作; 在Linux系統(tǒng)下實現(xiàn)了DS18B20的驅(qū)動設(shè)計工作,并編寫了基 于液晶顯示的測試程序。經(jīng)過實際測試,應(yīng)用程序能夠在 Linux下采集DS18B20的溫度數(shù)據(jù),并能夠?qū)崿F(xiàn)在LCD上的顯示、存儲功能,存儲文件能夠通過網(wǎng)絡(luò)的NFS服務(wù)導(dǎo)出到PC 端,實現(xiàn)了課題設(shè)計的功能。
評論