内核设备树简介-2
来源:互联网 发布:网上教育软件 编辑:程序博客网 时间:2024/05/17 13:43
设备树组成:
设备树包含 DTC(device tree compiler)、DTS(device tree source)、DTB(device tree blob);
dts & dtsi 通过dtc,生成DTB(device tree blob),设备树二进制文件,BootLoader在引导内核时,会预先读取.dtb到内存,进而由内核解析;
dts和dtsi位于 /kernel/arch/arm/boot/dts/目录下;
dtc将.dts文件编译成.dtb文件,源码位于 kernel/scripts/dtc目录下.
设备树常用的API--OF API
主要文件:
kernel/driver/of
kernel/include/linux/of.h
int of_device_is_compatible(const struct device_node *device,const char *compat)------判断设备结点的compatible属性是否包含 compat 指定的字符串;
struct device_node *of_find_compatible_node(static device_node *from,const char *type,const char *compatible)----根据compatible属性,获得设备结点,遍历设备树中所有的设备结点,看看哪个结点的设备类型,compatible
属性与本函数的输入参数匹配,一般而言,from,type为NULL;
int of_property_read_u8_array(const struct device_node *np,const char *propname,u8 *out_values,size_t sz);
int of_property_read_u16_array(const struct device_node *np,const char *propname,u16 *out_values,size_t sz);
int of_property_read_u32_array(const struct device_node *np,const char *propname,u32 *out_values,size_t sz);
int of_property_read_u64_array(const struct device_node *np,const char *propname,u64 *out_values,size_t sz);
读取设备结点np的---属性名为propname,类型为8,16,32,64位整型数组的属性。
int of_property_read_string(struct device_node *np,const char *propname,const char **out_string);-------------------读取字符串属性
int of_ptoperty_read_string_index(struct device_node *np,const char *propname,int index,const char **output)------读取字符串数组属性中的第index个字符串;
static inline bool_of_property_read_bool(const struct device_node *np,const char *propname);---如果设备节点np含有属性propname,则返回true,否则返回false;
void __iomem *of_iomap(struct device_node *node,int index)---通过设备节点直接进行设备内存区间的ioremap(),index是内存段的索引;
unsigned int irq_of_parse_and_map(struct device_node *node,int index)---解析出中断号
阅读全文
0 0
- 内核设备树简介-2
- 内核设备树简介-1
- Linux内核驱动基础(5)设备树简介
- Linux设备驱动(一)---内核模块简介
- 2-内核的编译_uImag_zimage_设备树
- 设备树和内核
- linux设备驱动程序第二版 Linux内核简介
- 使用设备树启动内核
- 分析内核源码,设备树
- Linux内核设备模型(2)
- 内核简介
- Linux设备驱动构建内核树
- 内核中 设备树的文档
- 内核3.x后设备树机制
- Linux内核移植--设备树支持
- 创建内核设备树(TI TRM)
- Linux设备驱动构建内核树
- Uboot,内核,设备树编译步骤
- C语言基础与提高4——指针函数,函数指针
- Swagger与SpringMVC整合
- BZOJ3728: PA2014Final Zarowki
- 图形学opengl实验二-桌子的矩阵变换
- 如何打开内部编码格式不统一的文件?
- 内核设备树简介-2
- 指针函数的简单例程
- .9.png的区域划分
- centos 更新gdb到v7.6
- MySQL的常用函数
- poj3061 尺取法
- 欢迎使用CSDN-markdown编辑器
- C++信息学奥赛一本通题库1032
- Jzoj5236 利普希茨