娇小w搡bbbb搡bbb,《第一次の人妻》,中国成熟妇女毛茸茸,边啃奶头边躁狠狠躁视频免费观看

IMX257 總線設備驅動模型編程之總線篇(二)

發布者:DreamyEclipse最新更新時間:2024-08-15 來源: cnblogs關鍵字:總線設備 手機看文章 掃描二維碼
隨時隨地手機看文章

前面我們講解了一個簡單的總線驅動程序,目的就是在/sys/bus/下面創建文件,但是這還是不夠的,因為總線也是一個設備,如果想讓系統認識的話,必須要用device_register進行注冊。


此處,我們就開始來注冊一個總線,讓總線下即可以包含屬性文件,也包含設備文件,和驅動程序。

讓驅動程序 和設備文件之間互聯,這才是總線真正的用途。

 

一、程序解析

 

前面已經將的很詳細,我們這兒在前面的基礎上加上一下:

1. 定義總體設備結構體

并且實現 設備的release函數;

 

2. 導出總線設備

 

3. 注冊設備驅動

 

4. 卸載設備

 

二、編譯測試:

加載成功后,因為總線也是一個設備,所以在 /sys/bus/下面有my_bus這個目錄

而在/sys/device/ 下面同樣也生成了一個目錄,名字為我們的my_bus 的init_name

如圖所示

 

 

 

附上my_bus.c驅動程序:


 1 #include

 2 #include

 3 #include

 4 #include

 5 #include

 6 

 7 

 8 static char *Version = '$LoverXueEr : 1.0 $';

 9 

10 //檢測驅動是否匹配設備,dev->bus_id 和 driver->name相等的

11 static int my_match(struct device *dev ,struct device_driver *driver){

12     return !strncmp(dev_name(dev),driver->name,strlen(driver->name));

13 }

14 

15 static void my_bus_release(struct device *dev){

16     printk('

17 }

18   

19 //設置設備的名字  dev_set_name(&dev,'name');

20 struct device my_bus = {

21     .init_name = 'my_bus0',

22     .release = my_bus_release,

23 };

24 

25 struct bus_type my_bus_type = {

26     .name = 'my_bus',

27     .match = my_match,

28 };

29 EXPORT_SYMBOL(my_bus);  //導出符號

30 EXPORT_SYMBOL(my_bus_type);

31 

32 //顯示總線版本號

33 static ssize_t show_bus_version(struct bus_type *bus,char *buf){

34     return snprintf(buf,PAGE_SIZE,'%sn',Version);

35 }

36 

37 //產生后面的 bus_attr_version 結構體

38 static BUS_ATTR(version,S_IRUGO, show_bus_version, NULL);

39 

40 static int __init my_bus_init(void){

41     int ret;

42     /* 注冊總線 */

43     ret = bus_register(&my_bus_type);

44     if(ret)

45         return ret;

46     /*  創建屬性文件 */

47     if(bus_create_file(&my_bus_type, &bus_attr_version))

48         printk('

49 

50     /* 注冊總線設備 */

51     ret = device_register(&my_bus);

52     if(ret)

53         printk('

54     return ret;

55 }

56 

57 static void my_bus_exit(void){

58     bus_unregister(&my_bus_type);

59     device_unregister(&my_bus);

60 }

61 

62 module_init(my_bus_init);

63 module_exit(my_bus_exit);

64 

65 

66 MODULE_AUTHOR('Lover雪兒');

67 MODULE_LICENSE('GPL');


三、錯誤解決:

 

1. error: 'struct device' has no member named 'bus_id'

在新版本的內核中device已經沒有bus_id這個成語了,取而代之的是.init_name.

解決方法:

將device下面的 .bus_id 修改為 .init_name ,如圖所示:

 

 

然后,再將程序中match函數中 dev->bus_id 修改為 dev_name(dev), 就可以了


關鍵字:總線設備 引用地址:IMX257 總線設備驅動模型編程之總線篇(二)

上一篇:IMX257 總線設備驅動模型編程之設備篇
下一篇:IMX257 總線設備驅動模型編程之總線篇

推薦閱讀最新更新時間:2025-06-07 23:40

基于CPCI總線的便攜式電磁閥測試設備設計
  1.?前言   由于某型號電磁閥熱真空試驗需要出廠完成,在試驗過程中需測試閥門響應特性,傳統的測試設備體積無法滿足運輸需求,因此需要配備便于攜帶的電磁閥測試設備。   CompactPCI簡稱CPCI,中文又稱緊湊型PCI,是國際PICMG協會于1994提出來的一種總線接口標準。它將VME密集堅固的封裝和大型設備的極佳冷卻效果以及PC廉價、易采用最新處理能力的芯片結合在一起,既保證了99.999%的高可靠度,又極大降低了硬件和軟件開發成本。其整體機構緊湊,安裝牢固,適應各種運輸條件,可靠性高。各功能板采用CPCI總線的模塊化結構,插拔十分安全方便,特別適合本系統的多種型號測試對象和多種測試工況的要求。   2.
[嵌入式]
小廣播
設計資源 培訓 開發板 精華推薦

最新單片機文章
何立民專欄 單片機及嵌入式寶典

北京航空航天大學教授,20余年來致力于單片機與嵌入式系統推廣工作。

 
EEWorld訂閱號

 
EEWorld服務號

 
汽車開發圈

 
機器人開發圈

電子工程世界版權所有 京ICP證060456號 京ICP備10001474號-1 電信業務審批[2006]字第258號函 京公網安備 11010802033920號 Copyright ? 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
主站蜘蛛池模板: 延长县| 习水县| 荥经县| 江陵县| 论坛| 南木林县| 通城县| 鹤壁市| 迁西县| 福贡县| 德昌县| 双峰县| 淮安市| 民丰县| 南雄市| 大连市| 绥德县| 吉水县| 镇江市| 玛沁县| 广饶县| 沙湾县| 横峰县| 大兴区| 湖北省| 天峨县| 阳原县| 贺州市| 错那县| 岳西县| 临沧市| 咸宁市| 北辰区| 诸暨市| 普宁市| 临城县| 光山县| 海原县| 龙泉市| 利川市| 金寨县|