基于嵌入式Linux的機房遠程監測系統研究
遠程網(wǎng)絡(luò )上的監控端為通用的PC 機和IE 瀏覽器,B /S 模式架構為人機交互提供了友好的交互平臺,用戶(hù)通過(guò)Internet 進(jìn)行遠程監控。
2. 3 系統軟件平臺
系統采用源碼開(kāi)放、安全性及可靠性好、具有廣泛硬件和網(wǎng)絡(luò )支持及完整開(kāi)發(fā)工具的Linux 系統作為嵌入式系統平臺。
嵌入式系統的開(kāi)發(fā)通常采用宿主機- 目標機的交叉編譯調試方式。系統構建主要包括: 交叉編譯器的選擇和安裝; NFS 網(wǎng)絡(luò )文件系統的配置; 內核、Bootloader 和文件系統的編譯和移植等。內核采用Linux -2. 6. 30. 4 版本; 系統引導加載程序采用U - boot - 1. 1. 6; 文件系統采用可靠性和可移植性好的YAFFS 文件系統。
3 驅動(dòng)程序設計開(kāi)發(fā)
在搭建好嵌入式Linux 系統平臺基礎上,進(jìn)行機房遠程監測系統數據采集相關(guān)開(kāi)工作。主要包括溫度數據采集和圖像采集驅動(dòng)程序的設計和采集程序的設計與實(shí)現。設備驅動(dòng)程序是操作系統內核與機器硬件之間的接口,它為應用程序屏蔽了硬件的細節。
3. 1 DS18B20 驅動(dòng)程序設計
DS18B20 通過(guò)溫度對振蕩器的頻率影響來(lái)測量溫度,而傳感器對溫度的采集則由ARM 控制DS18B20完成。由于DS18B20 采用單總線(xiàn)數據傳輸方式,所以ARM 芯片對DS18B20 的每步操作都要保證特定的讀寫(xiě)時(shí)序,按照單總線(xiàn)的操作協(xié)議來(lái)進(jìn)行。
首先初始化總線(xiàn),跳過(guò)Rom( 總線(xiàn)上只有一個(gè)DS18B20) ,啟動(dòng)DS18B20 進(jìn)行溫度轉換,復位,繼續跳過(guò)Rom,發(fā)讀溫度指令,讀取溫度數據,最后進(jìn)行溫度的進(jìn)一步處理及轉換。溫度采集驅動(dòng)中用到的主要函數:
( 1) 初始化函數unsigned char DS18B20 Init ( void) ,此函數復位DS18B20 數據線(xiàn),檢測溫度傳感器DS18B20 的存在,主CPU 發(fā)送500 微秒的低電平信號后釋放,檢測到總線(xiàn)上脈沖的上升沿后,DS18B20 等待50 微秒,發(fā)出200 微秒低脈沖,CPU 收到此信號表示復位成功。
( 2) void DS18B20 WriteOneByte( unsigned char data) 或數據到溫度芯片DS18B20,即發(fā)送一個(gè)字節。
( 3) unsigned char DS18B20 ReadOneByte( void) ,從溫度芯片DS18B20 讀配置或數據,即讀一個(gè)字節。
( 4) unsigned int DS18B20 ReadTemperature( void) 讀溫度函數。如果電路中只有一個(gè)DS18B20,則不需要多個(gè)器件的ID 識別,直接進(jìn)行溫度轉換,DS18B20 溫度轉換需要時(shí)問(wèn),所以此處需要延時(shí)一定時(shí)間。
其基本處理流程如圖2 所示。
驅動(dòng)程序與硬件設備的接口由file_operation 結構定義,其結構如下:
static struct file_operations s3c2440_18b20_fops = {
. owner = THIS_MODULE,
. open = s3c2440_18b20_open,
. read = s3c2440_18b20_read,
. write = s3c2440_18b20_write,
. release = s3c2440_18b20_release,
} ;
struct file_operations 這個(gè)結構的每一個(gè)成員都對應一個(gè)_系統調用,用戶(hù)進(jìn)程利用系統調用對設備文件進(jìn)行操作,系統調用通過(guò)設備文件的主設備號找到相應的設備驅動(dòng)程序,讀取這個(gè)數據結構里面相應的函數指針,把控制權交給該函數。
linux操作系統文章專(zhuān)題:linux操作系統詳解(linux不再難懂)
評論