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

Sysfs文件系統在嵌入式開發中的應用

2018-05-14 09:06:07劉江
絲路視野 2018年9期
關鍵詞:嵌入式

劉江

【摘要】在嵌入式開發中我們有時需要在用戶層控制內核及其驅動的一些功能。傳統的方法是通過ioctl系統調用實現。而Sysfs為我們提供了一種更為方便的通過讀寫文件的方法。大大方便了嵌入式開發。

【關鍵詞】嵌入式;內核驅動;Sysfs文件系統

Sysfs是一個向用戶空間導出內核數據結構,對象和性質的文件系統,它不僅提供了察看內核內部數據結構的能力,還可以修改這些數據結構。Sysfs已經成為老式的IOCTL機制的一種替代品。向內核發送神秘的ioctl通常需要一個C程序。與之相比,從/向Sysfs文件讀/寫一個值要簡單的多。一個簡單的shell命令就足夠了。

一、建立屬性文件

Sysfs是用于表現設備驅動模型的文件系統,它基于ramfs。要使用Sysfs就需要了解Sysfs提供給外界的API。Sysfs文件系統中提供了四類文件的創建與管理,分別是目錄、普通文件、軟鏈接文件、二進制文件。目錄層次往往代表著設備驅動模型的結構,軟鏈接文件則代表著不同部分間的關系。比如某個設備的目錄只出現在/sys/devices下,其他地方涉及到它時只好用軟鏈接文件鏈接過去,保持了設備唯一的實例。而普通文件和二進制文件往往代表了設備的屬性,讀寫這些文件需要調用相應的屬性讀寫。

我們可以使用DEVICE_ATTR函數宏來建立一個屬性文件。函數宏DEVICE_ATTR原型是DRIVER_ATTR(_name,_mode,_show,_store)。函數宏DEVICE_ATTR內封裝的是__ATTR(_name,_mode,_show,_stroe)方法。_show:表示的是讀方法,_stroe表示的是寫方法。通過以下實例我們可以在Sysfs文件系統中建立一個dev_attr_watchdog的屬性文件。其中wd_show和wd_store分別為讀寫方法。

staticDEVICE_ATTR(watchdog,S_IRUGO|S_IWUSR,wd_show,wd_store);

將_mode設置為S_IRUGO|S_IWUSR使創建的屬性文件為可讀可寫。在驅動的初始化函數中需要調用device_create_file來使屬性文件與驅動設備文件關聯。函數原型為intdevice_create_file(structdevicedev,conststructdevice_attributeattr);

二、屬性的讀寫

注意到它和虛擬字符設備或proc項的read/write的作用很類似,但有一點不同是show/store函數上的buf/count參數是在Sysfs層已作了用戶區/內核區的內存復制,虛擬字符設備上常見的__user屬性在這里并不需要,因而也不需要多一次copy_from_user/copy_to_user,在show/store函數參數上的buf/count參數已經是內核區的地址,可以直接操作。

使用show和store方法時的注意事項:

(1)緩沖區的大小應總是為PAGE_SIZE個字節。多數情況下PAGE_SIZE=4096。

(2)show方法應該返回放入緩沖區的字節數。

(3)store方法應該返回實際使用的字節數。

(4)show和/或者store方法可能會出錯,所以當失敗時,記得返回錯誤值。

三、用戶層操作方法

建立屬性文件后Sysfs會在相應的目錄創建文件,通過讀寫此文件我們就可以直接向驅動層發送和讀取數據。例如上面DEVICE_ATTR調用會創建/sys/devices/platform/omap/omap_wdt/watchdog文件,此文件就是看門狗驅動在Sysfs中的屬性文件。當需要查看看門狗參數時可以使用cat命令讀取watchdog文件實現。修改看門狗參數時可以使用echo命令向watchdog文件寫入內容實現。

屬性文件的創建使用戶層通過驅動控制硬件的方式更加方便,只需使用系統自帶的cat和echo命令就能實現對硬件的控制,極大地方便了嵌入式開發。

四、結語

Sysfs給應用程序提供了統一訪問設備的接口。通過這一接口我們可以使用shell腳本在用戶層實現對內核及其驅動的控制。這一功能極大的方便了嵌入式應用的開發。但是目前Sysfs僅僅是提供了一個可以統一訪問設備的框架,但究竟是否支持Sysfs還需要各設備驅動程序的編程支持。但由于Sysfs強大的功能和用戶空間友好的特性,越來越多的子系統、設備驅動程序逐漸轉向Sysfs。

參考文獻

[1]WolfgangMauerer深入Linux內核架構[M].北京:人民郵電出版社,2010.

[2]JonathanCorber,AlessandroRubini&GregKroan-hartman Linux設備驅動程序[M].北京:中國電力出版社,2005.

猜你喜歡
嵌入式
Focal&Naim同框發布1000系列嵌入式揚聲器及全新Uniti Atmos流媒體一體機
TS系列紅外傳感器在嵌入式控制系統中的應用
電子制作(2019年7期)2019-04-25 13:17:14
基于嵌入式Linux內核的自恢復設計
嵌入式系統通信技術的應用
電子制作(2018年18期)2018-11-14 01:48:16
嵌入式PLC的設計與研究
電子制作(2018年16期)2018-09-26 03:27:18
搭建基于Qt的嵌入式開發平臺
基于嵌入式系統Windows CE的應用程序開發
嵌入式單片機在電機控制系統中的應用探討
電子制作(2017年8期)2017-06-05 09:36:15
嵌入式軟PLC在電鍍生產流程控制系統中的應用
電鍍與環保(2016年3期)2017-01-20 08:15:32
Altera加入嵌入式視覺聯盟
主站蜘蛛池模板: 色欲综合久久中文字幕网| 国产精品久久久久鬼色| 国产成人一区免费观看| 免费看一级毛片波多结衣| 狠狠色综合久久狠狠色综合| 欧美爱爱网| 在线a网站| 中文字幕资源站| 日韩毛片免费| 亚洲欧美不卡视频| 91精品视频播放| 日韩国产 在线| AV在线麻免费观看网站| 日韩精品无码不卡无码| 国产99精品久久| 日本影院一区| 乱码国产乱码精品精在线播放| 国产丝袜第一页| 亚洲精品波多野结衣| 福利在线一区| 亚洲欧美成人在线视频| 午夜视频免费一区二区在线看| 国产精品久久久久久搜索| 在线人成精品免费视频| 99久久国产自偷自偷免费一区| 国产成人亚洲无码淙合青草| 亚洲娇小与黑人巨大交| 亚洲日韩高清在线亚洲专区| 欧美在线精品怡红院| a级毛片在线免费观看| 91免费在线看| 国产精品理论片| 97精品久久久大香线焦| 亚洲天堂视频在线免费观看| 色精品视频| 亚洲国产精品无码久久一线| 国产另类乱子伦精品免费女| 91欧洲国产日韩在线人成| 欧美国产日韩在线| 欧美精品成人| 92精品国产自产在线观看| 精品一区二区三区自慰喷水| 欧美a级在线| 最新加勒比隔壁人妻| 国产精品视频a| 国产女人在线观看| 毛片免费视频| 99免费视频观看| 欧美色综合网站| 久久久久久久蜜桃| 色爽网免费视频| 国产成人欧美| 无码专区在线观看| 欧美亚洲国产精品第一页| 久久综合色天堂av| 亚洲品质国产精品无码| 亚洲天堂成人| 制服丝袜国产精品| 69视频国产| 2021最新国产精品网站| 波多野结衣久久高清免费| 欧美日韩中文字幕在线| 国产精品短篇二区| 国产av色站网站| 成人在线第一页| 国产精品久久国产精麻豆99网站| 亚洲天堂日本| 亚洲娇小与黑人巨大交| 欧美a网站| 久草网视频在线| 高清码无在线看| 日韩无码真实干出血视频| 亚洲精品视频网| 国产精品流白浆在线观看| 99久久无色码中文字幕| 成年人视频一区二区| 亚洲国产综合第一精品小说| 国产97公开成人免费视频| 欧美综合一区二区三区| 午夜福利亚洲精品| 亚洲香蕉在线| 欧美久久网|