999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

基于Linux的溫度傳感器驅動程序的設計

2011-07-23 00:28:34羅東華李海崗王忠民
關鍵詞:嵌入式設備

羅東華,李海崗,王忠民

(1.山東傳媒職業學院信息工程系,山東濟南250200;2.72946部隊,山東淄博255000;3.山東省科學院自動化研究所,山東濟南250014)

隨著計算機控制技術的不斷發展,嵌入式系統已經廣泛滲透到儀器儀表、工業控制等各個領域,成為備受關注的熱點[1].而Linux作為一個源碼公開、結構清晰、功能強大,且穩定可靠的操作系統,在嵌入式系統中占據主流位置[2].在工業控制與監測領域,溫度監控是一項必不可少的功能模塊.文中介紹了基于模擬量傳輸的溫度傳感器在Linux系統下驅動程序的開發方法,闡述了可動態加載的設備驅動程序的配置、設計和調試步驟.

1 驅動程序的原理

驅動程序的目的是驅動硬件正常工作,所以編寫驅動程序要針對特定的硬件來進行.Linux設備驅動程序是為特定的硬件提供給應用程序的一組標準化接口,它隱藏了設備工作的細節.設備驅動程序從總體上看分為兩部分:驅動程序與Linux內核的接口、驅動程序與設備的接口[3].其代碼結構大致可以分為如下幾個部分:驅動程序的注冊與注銷、設備的打開與釋放、設備的讀寫操作、設備的控制操作、設備的中斷和輪詢處理[4].

Liunx系統的設備分為三種類型:字符設備、塊設備和網絡設備.基于模數轉換模塊(ADC)的溫度傳感器屬于字符設備,其實現流程包括設備的注冊,文件操作結構體(file_operations)賦值,以及編寫文件操作結構體中用到的函數.模數轉換模塊功能非常簡單,所以在文件操作結構體中只需要設置打開函數(open)、釋放函數(release)以及讀取函數(read)的指針,相應的僅需要實現open函數、release函數和read函數.

2 驅動程序的設計

open函數提供給驅動程序以初始化的能力,主要工作內容如下:

1)檢查設備特定的錯誤(諸如設備未就緒或類似的硬件問題).

2)如果設備是首次打開,則對其進行初始化.

3)如果有必要,更新file_operations指針[5].在Linux系統用戶空間的應用程序中,如果要打開溫度傳感器設備,需要調用此內核函數(device_open).另外,還可以在此函數中使用一個全局變量,記錄設備打開次數,以標識設備是否為第一次打開.

release函數作用與open正好相反,它釋放由open分配的所有資源,并關閉設備.同樣的,記錄設備打開次數的全局變量需要在此函數中進行減操作.

read函數的作用是拷貝數據到應用程序空間,其表達式為:

static ssize_t device_read(struct file*file,char*buffer,size_t length,loff_t*offset)

參數file是文件指針,參數buffer是指向用戶空間的緩沖區,參數length是數據長度,參數loff_t是指向長偏移量類型(long offset type)對象的指針.該函數內部的程序流程圖如圖1所示.

圖1 read函數程序流程圖

read函數還檢查用戶空間的指針是否有效,如果指針無效,就不會進行拷貝;如果在拷貝過程中遇到無效地址,則僅僅會復制部分數據.

3 驅動程序的加載和測試

驅動程序編寫完成后,還需要建立該程序的makefile文件,代碼如下:

其中,obj-m是生成目標文件的名稱,KERNELDIR是內核路徑.

有了adcdriver.c和makefile文件,使用make命令即可得到驅動文件adcdriver.ko.然后使用insmod命令動態加載驅動程序,基于模數轉換模塊的溫度傳感器驅動就加載進了Linux內核中.

為了測試該驅動程序,需要編寫Linux系統用戶空間下的應用程序adc.c,程序流程圖如圖2所示.

圖2 應用程序adc.c的流程圖

在Linux的用戶空間運行此應用程序,能夠得到嵌入式處理器S3C2440模數轉換模塊的有效數據,根據溫度傳感器模擬量數值與溫度的對應關系,即可獲取外部環境溫度.

4 結束語

文中介紹了Linux操作系統下驅動程序的基本原理和框架,編寫了基于模數轉換模塊(ADC)的溫度傳感器的驅動程序和應用程序,并給出實際項目中的操作步驟,對實現同類芯片的其他硬件驅動有很好的參考價值.

[1] 張威,黃沖.嵌入式Linux設備驅動的設計方法研究[J] .江西師范大學學報:自然科學版,2007,31(4):391-393.

[2] 巍鶩,張煥強,方貴明.基于Linux的USB驅動程序實現[J] .計算機應用,2002,22(8):17-19.

[3] 李亞峰,歐文盛.ARM嵌入式Linux系統開發從入門到精通[M] .北京:清華大學出版社,2007.

[4] 陳濤,余學才,朱良銷.信號發生模塊的Linux驅動程序設計[J] .化工自動化及儀表,2010,37(11):88-91.

[5] Corbet J,Rubini A,Hartman G K.Linux設備驅動程序[M] .北京:中國電力出版社,2006.

猜你喜歡
嵌入式設備
諧響應分析在設備減振中的應用
TS系列紅外傳感器在嵌入式控制系統中的應用
電子制作(2019年7期)2019-04-25 13:17:14
基于VB6.0+Access2010開發的設備管理信息系統
嵌入式系統通信技術的應用
電子制作(2018年18期)2018-11-14 01:48:16
基于MPU6050簡單控制設備
電子制作(2018年11期)2018-08-04 03:26:08
搭建基于Qt的嵌入式開發平臺
嵌入式軟PLC在電鍍生產流程控制系統中的應用
電鍍與環保(2016年3期)2017-01-20 08:15:32
500kV輸變電設備運行維護探討
工業設計(2016年12期)2016-04-16 02:52:00
如何在設備采購中節省成本
原來他們都是可穿戴設備
消費者報道(2014年7期)2014-07-31 11:23:57
主站蜘蛛池模板: 国产91全国探花系列在线播放 | 成人一区专区在线观看| 亚洲91精品视频| 动漫精品中文字幕无码| 日韩精品无码不卡无码| 久久国产精品嫖妓| 久久影院一区二区h| 免费va国产在线观看| 欧美精品影院| 囯产av无码片毛片一级| 欧美精品一二三区| 国产欧美日韩免费| 波多野结衣在线se| 国产经典三级在线| 日韩 欧美 小说 综合网 另类| 欧美亚洲综合免费精品高清在线观看| 性欧美久久| 久久a级片| 亚洲欧美不卡中文字幕| 久久国产精品77777| 91视频青青草| 国产视频久久久久| 亚洲无码视频图片| 色婷婷综合激情视频免费看| 99久久精品久久久久久婷婷| 九九热精品视频在线| 色婷婷色丁香| 日本免费高清一区| 国产精品永久久久久| 国产毛片高清一级国语| 午夜福利视频一区| 国产第一色| 高清久久精品亚洲日韩Av| 亚国产欧美在线人成| 91娇喘视频| 日本高清有码人妻| 老色鬼欧美精品| 国产精品第一区在线观看| 欧美在线三级| 国产免费自拍视频| 国产成人精品男人的天堂| 亚洲一区二区无码视频| 亚洲不卡无码av中文字幕| 囯产av无码片毛片一级| 99精品在线看| 日本精品中文字幕在线不卡| 91啦中文字幕| 欧类av怡春院| 在线播放精品一区二区啪视频 | 天天躁狠狠躁| 黄色网址手机国内免费在线观看| 色精品视频| 欧美中文一区| 亚洲欧美一级一级a| 免费A∨中文乱码专区| 中文字幕日韩欧美| 制服丝袜无码每日更新| 久久黄色免费电影| 精品国产香蕉伊思人在线| 92精品国产自产在线观看| 成人一区专区在线观看| 国产熟睡乱子伦视频网站| 91精品久久久无码中文字幕vr| 在线观看国产网址你懂的| 亚洲天堂免费| 免费黄色国产视频| 伊伊人成亚洲综合人网7777| 亚洲 成人国产| 成人福利在线观看| 国产亚洲精品91| 国产欧美日韩一区二区视频在线| 久久久久中文字幕精品视频| 欧美中出一区二区| 亚洲人网站| 超清无码熟妇人妻AV在线绿巨人 | 激情無極限的亚洲一区免费| 香蕉视频在线精品| 欧美一级夜夜爽| 青草视频网站在线观看| 青青青草国产| 色哟哟国产精品| 在线国产综合一区二区三区 |