裝置樹語法及內部構成
裝置樹實戰
裝置樹其實是乙個檔案,這個檔案包含很多的節點,這些節點是專用來描述裝置的資訊,包括cpu的資訊,gpio的資訊等。資訊裡面包括很多的屬性。屬性中包括各種值 value,這些 value 是傳遞給核心使用的。核心可以解析出這些檔案資訊,然後給程式設計師使用。
dtb-$(config_arch_exynos) += exynos4210-origen.dtb \
exynos4210-sndkv310.dtb \
exynos4412-origen.dtb \
cp arch/arm/boot/dts/exynos4410-origen.dts arch/arm/boot/dts/exynos4412-fs4412.dts
vim arch/arm/boot/dts/makefile ,在 exynos4410-origen.dtb \ 下新增如下內容
exynos4412-fs4412.dtb
make dtbs
set bootcmd tftp 0x41000000 uimage \; tftp 0x42000000 exynos4410-fs4412.dtb \; bootm 0x41000000 - 0x42000000
dtb使用的過程
裝置樹語法
(1)節點
(2)屬性
(3)根節點
(4)compatible 屬性
(5)reg 屬性
(6)#address-cells 和 #address-siz 屬性
(7)中斷資訊屬性—interrupts 和 interrupts
/ ;
child-node2;
}; node2;
};};
/ ;
intc:interrupt-controller@10140000;
}
對於arm架構,標誌為具體含義 documentation/devicetree/bindings/arm/gic.txt
test_node@123456 ;
#include
#include
#include
#include
#include
#define u32_data_len 4
static
int is_good;
static
int irqno;
irqreturn_t key_irq_handler
(int irqno,
void
*devid)
static
int __init dt_drv_init
(void
);
*///在**中獲取節點的所有資訊
//先把節點獲取到
struct device_node *np =
null
;struct property *prop =
null;
np =
of_find_node_by_path
("/test_node@123456");
if(np)
else
//獲取到節點中的屬性
prop =
of_find_property
(np,
"compatible"
,null);
if(prop)
elseif(
of_device_is_compatible
(np,
"farsight,test"))
else
//獲取到屬性中整數的陣列
u32 regdata[u32_data_len]
;int ret;
ret =
of_property_read_u32_array
(np,
"reg"
,regdata,u32_data_len);if
(!ret)
}else
//讀取屬性中的字串陣列
const
char
*pstr[3]
;int i;
for(i =
0; i <
3; i++
)else
}//屬性值為空,可以用於設定標誌if(
of_find_property
(np,
" testprop,mytest"
,null))
//獲取到中斷的號碼
irqno =
irq_of_parse_and_map
(np,0)
;printk
("irqno = %d\n"
,irqno)
;//驗證中斷號碼是否有效
ret =
request_irq
(irqno,key_irq_handler,irqf_trigger_falling | irqf_trigger_rising,
"key_irq"
,null);
if(ret)
return0;
}static
void __exit dt_drv_exit
(void
)module_init
(dt_drv_init)
;module_exit
(dt_drv_exit)
;module_license
("gpl"
);
linux裝置樹(裝置驅動)
一 裝置樹的簡單概念 裝置樹 由一系列的節點,屬性組成,節點本身包含子節點 屬性 成對出現的名稱和值 裝置樹可描述的資訊 原先大多數被編碼在核心中 它是電路板上cpu,匯流排,裝置組成的樹,bootloader會將這棵樹傳遞給核心,並根據它展開linux核心中的platform device等裝置。...
Linux裝置驅動之《字元裝置驅動》
linux裝置中最大的特點就是裝置操作猶如檔案操作一般,在應用層看來,硬體裝置只是乙個裝置檔案。應用程式可以像操作檔案一樣對硬體裝置進行操作,如open close read write 等。下面是乙個字元裝置驅動程式的簡單實現test.c 模組分析 1.初始化裝置驅動的結構體 struct fil...
Linux裝置驅動之字元裝置驅動
一 linux裝置的分類 linux系統將裝置分成三種基本型別,每個模組通常實現為其中某一類 字元模組 塊模組或網路模組。這三種型別有 字元裝置 字元裝置是個能夠像位元組流 類似檔案 一樣被訪問的裝置,由字元裝置驅動程式來實現這種特性。字元裝置可以通過檔案系統節點來訪問,比如 dev tty1等。這...