亚洲免费av电影一区二区三区,日韩爱爱视频,51精品视频一区二区三区,91视频爱爱,日韩欧美在线播放视频,中文字幕少妇AV,亚洲电影中文字幕,久久久久亚洲av成人网址,久久综合视频网站,国产在线不卡免费播放

        ?

        Sysfs文件系統(tǒng)在嵌入式開發(fā)中的應用

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

        劉江

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

        【關鍵詞】嵌入式;內核驅動;Sysfs文件系統(tǒng)

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

        一、建立屬性文件

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

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

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

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

        二、屬性的讀寫

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

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

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

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

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

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

        三、用戶層操作方法

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

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

        四、結語

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

        參考文獻

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

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

        猜你喜歡
        嵌入式
        Focal&Naim同框發(fā)布1000系列嵌入式揚聲器及全新Uniti Atmos流媒體一體機
        TS系列紅外傳感器在嵌入式控制系統(tǒng)中的應用
        電子制作(2019年7期)2019-04-25 13:17:14
        基于嵌入式Linux內核的自恢復設計
        嵌入式系統(tǒng)通信技術的應用
        電子制作(2018年18期)2018-11-14 01:48:16
        嵌入式PLC的設計與研究
        電子制作(2018年16期)2018-09-26 03:27:18
        搭建基于Qt的嵌入式開發(fā)平臺
        基于嵌入式系統(tǒng)Windows CE的應用程序開發(fā)
        嵌入式單片機在電機控制系統(tǒng)中的應用探討
        電子制作(2017年8期)2017-06-05 09:36:15
        嵌入式軟PLC在電鍍生產流程控制系統(tǒng)中的應用
        Altera加入嵌入式視覺聯(lián)盟
        国产女优一区在线观看| 久久半精品国产99精品国产| 无码91 亚洲| 乳乱中文字幕熟女熟妇| 中国少妇×xxxx性裸交| 亚洲av综合色区无码一二三区| 国产精品深夜福利免费观看| 亚洲一区二区av免费观看 | 国产freesexvideos中国麻豆| 欧美jizzhd精品欧美| 国产自产c区| 精品不卡视频在线网址| 丰满大爆乳波霸奶| 装睡被陌生人摸出水好爽| 精品国产高清a毛片| 一本色道久久88加勒比综合| 亚洲女同一区二区| 亚洲av熟妇高潮30p| 亚洲国产精品成人久久av| 风韵人妻丰满熟妇老熟女视频| 日韩放荡少妇无码视频| 国产无套露脸| 国产大片在线观看91| 后入内射国产一区二区| 在线精品国产亚洲av蜜桃| 人人妻人人爽人人澡人人| jjzz日本护士| 国产成人亚洲综合二区| 国产97色在线 | 国产| 色一情一区二| 色老汉亚洲av影院天天精品 | 91久久精品国产性色tv| 青青草免费在线爽视频| 少妇下蹲露大唇无遮挡| 亚洲视频高清| 免费人成黄页网站在线一区二区| 狠狠的干性视频| 国产在线播放网址| 国产精品无码久久久久久蜜臀AV| 极品夫妻一区二区三区| 老师露出两个奶球让我吃奶头|