一文解析Linux驅(qū)動(dòng) | 在驅(qū)動(dòng)中創(chuàng)建sysfs接口
前言
在一些linux開發(fā)板中,經(jīng)??梢钥吹酵ㄟ^echo的方式來直接控制硬件或者修改驅(qū)動(dòng),例如:
這是怎么做到呢?
實(shí)際上,這是因?yàn)樵隍?qū)動(dòng)中提供了sysfs
接口給用戶使用,使得用戶可以通過cat
或者echo
命令來查看和修改驅(qū)動(dòng)中某些變量的值。
下面介紹驅(qū)動(dòng)中創(chuàng)建sysfs接口的方法。
sysfs接口創(chuàng)建
基本步驟:
1、使用DEVICE_ATTR
聲明一個(gè)sys
節(jié)點(diǎn)
led_status
:在sys接口中顯示的節(jié)點(diǎn)名字
0600
:表示操作這個(gè)led_status節(jié)點(diǎn)的權(quán)限
led_status_show
:使用cat
命令查看sys接口時(shí)調(diào)用的函數(shù)
led_status_store
:使用echo
命令往sys接口寫入內(nèi)容時(shí)調(diào)用的函數(shù)
2、完成sys節(jié)點(diǎn)的讀寫函數(shù)
示例中,led_status_show()
函數(shù)和led_status_store()
函數(shù)的作用分為打印led變量的值和修改led變量的值.
3、定義struct attribute
和struct attribute_group
數(shù)組
上述使用了DEVICE_ATTR
聲明節(jié)點(diǎn)名字為led_status
, 則struct attribute
名字應(yīng)為:dev_attr_ + (節(jié)點(diǎn)名) + .attr
。所以名字為dev_attr_led_status.attr
。
【文章福利】小編推薦自己的Linux內(nèi)核技術(shù)交流群:【749907784】整理了一些個(gè)人覺得比較好的學(xué)習(xí)書籍、視頻資料共享在群文件里面,有需要的可以自行添加哦?。。。ê曨l教程、電子書、實(shí)戰(zhàn)項(xiàng)目及代碼)? ?


4、在probe函數(shù)中調(diào)用sysfs_create_group()
函數(shù)注冊sysfs
接口
完整例子
設(shè)備樹:
驅(qū)動(dòng):
驅(qū)動(dòng)加載后,就可以在linux終端中,使用cat
和echo
命令來查看和修改驅(qū)動(dòng)中led
變量的值。例如:
原文作者:嵌入式Linux充電站
