裝置樹驅動API 原創

2021-09-07 09:29:35 字數 1948 閱讀 7165

1 #include 2 #include 3 #include 4 #include 5 #include 678

#define u32_data_len 4910

static

intis_good;

11static

intirqno;

1213 irqreturn_t key_irq_handler(int irqno, void *devid)

1418

19static

int __init dt_drv_init(void)20

;32*/33

34//

在**中獲取節點的所有資訊

35//

先把節點獲取到

36struct device_node *np =null;

3738

39 np = of_find_node_by_path("

/test_nod@12345678");

40if

(np)else

4950

//獲取到節點中的屬性

51struct property *prop =null;

52 prop = of_find_property(np, "

compatible

",null);

53if

(prop)

54else

6263

if(of_device_is_compatible(np, "

farsight,test"))

6467

68//

讀取到屬性中的整數的陣列

6970

u32 regdata[u32_data_len];

71int

ret;

7273 ret = of_property_read_u32_array(np, "

reg"

, regdata, u32_data_len);

74if(!ret)

75else

8384

//讀取到屬性中的字串的陣列

85const

char *pstr[3

];86

87int

i;88

for(i=0; i<3; i++)

89else97}

9899

//屬性的值為空,實際可以用於設定標誌

100if(of_find_property(np, "

testprop,mytest

", null))

101105

106//

獲取到中斷的號碼

107 irqno = irq_of_parse_and_map(np, 0

);108 printk("

-----irqno = %d\n

", irqno);

109110

//驗證中斷號碼是否有效

111 ret = request_irq(irqno, key_irq_handler, irqf_trigger_falling|irqf_trigger_rising,

112"

key_irq

", null);

113if

(ret)

114118

119120

return0;

121122

}123

124static

void __exit dt_drv_exit(void

)125

129130

131132

133module_init(dt_drv_init);

134module_exit(dt_drv_exit);

135 module_license("

gpl");

linux裝置樹(裝置驅動)

一 裝置樹的簡單概念 裝置樹 由一系列的節點,屬性組成,節點本身包含子節點 屬性 成對出現的名稱和值 裝置樹可描述的資訊 原先大多數被編碼在核心中 它是電路板上cpu,匯流排,裝置組成的樹,bootloader會將這棵樹傳遞給核心,並根據它展開linux核心中的platform device等裝置。...

Linux裝置驅動 DMA 介面API

目錄 dma概述 dma與cache的一致性 相關api dma資料結構 dma是一種無需cpu的參加就可以讓外設與系統記憶體之間進行雙向資料傳輸的硬體機制。它可以使系統cpu從實際的i o資料傳輸過程中擺脫出來,大大提高系統的吞吐率,並且在傳輸期間,cpu還可以併發執行其他任務。cache用作cp...

驅動開發 字元裝置 塊裝置簡介 sky原創

驅動開發 字元裝置,塊裝置,網路裝置 字元裝置 以位元組流的方式訪問,不能隨機訪問 有例外,顯示卡 eeprom可以隨機訪問 eeprom可以擦寫1億次,是一種字元裝置,可以隨機訪問 讀寫是直接訪問硬體的 flash 擦寫次數有限,一百萬次,容易有壞塊 塊裝置 能隨機訪問 以 塊 為單位進行訪問 塊...