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加入嵌入式視覺聯盟
主站蜘蛛池模板: 国产欧美视频综合二区| 中文字幕欧美日韩高清| 亚洲人成网7777777国产| 亚洲无码熟妇人妻AV在线| 无码aaa视频| 国产精品理论片| 国产精品99久久久久久董美香| 99视频在线免费观看| 国产在线小视频| 无码免费视频| 亚洲人成网线在线播放va| 日韩欧美国产精品| 国产情侣一区二区三区| 国产成人1024精品下载| 国产一区二区色淫影院| 激情无码字幕综合| 国产成人做受免费视频| 免费毛片在线| 91免费国产在线观看尤物| 999国内精品视频免费| 日本免费福利视频| 国产噜噜噜| 久久精品人妻中文系列| 波多野衣结在线精品二区| 亚洲精品图区| 精品亚洲欧美中文字幕在线看 | 久久久久人妻一区精品| 毛片国产精品完整版| 日韩成人午夜| 国内熟女少妇一线天| 波多野结衣AV无码久久一区| 国产美女精品一区二区| 欧美日韩国产系列在线观看| a级毛片免费播放| 亚洲国产精品无码久久一线| 九九视频免费看| 中文字幕在线永久在线视频2020| 无码内射在线| 99热国产这里只有精品无卡顿"| 色综合色国产热无码一| 欧美精品啪啪| 日本精品一在线观看视频| 热九九精品| 一级香蕉人体视频| 国产SUV精品一区二区| 精品免费在线视频| 无码'专区第一页| 日韩高清欧美| 亚洲色欲色欲www在线观看| 亚洲欧美另类中文字幕| 狠狠操夜夜爽| 一区二区理伦视频| 亚洲人成网7777777国产| 日韩资源站| 中文字幕免费在线视频| 中文字幕不卡免费高清视频| 欧美成人午夜在线全部免费| 五月婷婷综合色| 亚洲欧美一区二区三区蜜芽| 无码视频国产精品一区二区| 亚洲精品麻豆| 中文字幕一区二区人妻电影| 亚洲无码精彩视频在线观看| 99re在线免费视频| 91精品网站| 国产高颜值露脸在线观看| 欧美国产菊爆免费观看| 精品自拍视频在线观看| 亚洲爱婷婷色69堂| a级毛片免费看| 久久精品亚洲中文字幕乱码| 97国产在线播放| 国产69精品久久久久孕妇大杂乱| 中文字幕亚洲乱码熟女1区2区| 国产成人高清亚洲一区久久| 国产91精品最新在线播放| 欧美一级在线看| 日韩免费无码人妻系列| 色综合久久久久8天国| 久久特级毛片| 不卡的在线视频免费观看| 九九久久99精品|