
设备树
文章平均质量分 66
设备树
四季帆
汽车电子、bsp
展开
-
aliases节点分析
比如SoC上有多个i2c控制器,alias相当于给每个i2c控制器分配一个唯一的编号,如上面的i2c2对应的alias是i2c2,那么这个编号就是2,将来就可以在/dev下看到名为i2c-2的设备节点。原创 2022-08-08 19:30:00 · 764 阅读 · 0 评论 -
pinctrl
1. pinctrl简介pinctrl子系统管理的Pin可以用作iic,也可以用作gpio;但是gpio子系统管理的pin只能用作输出或输入等功能(用作gpio的pin也是通过pinctrl子系统来管理的)。2. pinctrl使用方法1、其他驱动(除了IOMUX驱动本身或者说是pinctrl子系统本身外)通过pinctrl子系统提供的接口改变设备状态的接口如下,通常都是如下三个步骤:1>pinctrl=devm_pinctrl_get(struct ......原创 2022-07-19 22:00:00 · 822 阅读 · 0 评论 -
设备树属性
1. ranges属性ranges属性值可以为空或者按照 (child-bus-address,parent-bus-address,length) 格式编写的数字矩阵, ranges 是一个地址映射/转换表, ranges 属性每个项目由子地址、父地址和地址空间长度这三部分组成:节点 soc 定义的 ranges 属性,值为 <0x0 0xe0000000 0x00100000>,此属性值指定了一个 1024KB(0x00100000) 的地址范围,子地...原创 2022-05-25 22:45:00 · 2606 阅读 · 0 评论 -
设备树(4) - 应用案例
1. 前言使用设备树之前,关于设备的硬件信息都是在arch/arm/plat-xxx和arch/arm/mach-xxx下通过填充结构体的方式进行硬编码,当硬件有小改动时,我们需要修改硬件信息,然后编译内核,在调试阶段反复编译内核是一个很烦、很耗时、没有技术含量的事情;然后设备树出现了,使用设备树的情况下,当硬件有小改动时,只需要重新编译设备树文件就好了,不用重新编译内核;按道理来说,设备树的机制已经很完美了,但是现在有这样一个任务,一块设备上焊接了两个摄像头芯片,分别是高清和标清,需求:在ke原创 2021-05-15 21:31:23 · 934 阅读 · 0 评论 -
设备树(2) - 构成部分
1. 设备树文件的格式2. dtb 二进制分布2.1 分布图设备树文件(dts)被编译成dtb文件以后,dtb内部的二进制分布情况如下:2.2 dtb 的起始段struct fdt_header { uint32_t magic; //魔数,此字段应该应包含值0xd00dfeed(大端存储) uint32_t totalsize; //device tree的整体大小(包括标题、内存预留块、结构块、字符串块、自由空间等) uint原创 2021-05-15 21:29:42 · 312 阅读 · 0 评论 -
设备树(3) - dtb解析过程
代码分析及注释删掉了很多未注释的代码,只保留了小编认为重要的部分。从setup_arch()函数开始分析,想知道该函数之前的调用关系,可以看小编的另一篇博客《Linux kernel启动过程》void __init setup_arch(char **cmdline_p){ mdesc = setup_machine_fdt(__atags_pointer); //根据设备树信息匹配最合适的mach_desc if (!mdesc) //如果匹配失败,则使用传统的方法setup_machin原创 2021-05-15 21:30:37 · 816 阅读 · 0 评论 -
设备树(1) - 概述
1. 确认手中机器使用的设备树文件arch/arm/boot/dts 目录下有很多 dts 和 dtsi 文件,如何确定板子使用的是哪一个 dts 文件?1> 板子启动后,在串口终端使用命令:dmesg | grep "Machine:"2> 搜索出来的内容即板子对应使用的 dts 文件根目录下的 model 属性或者 compatible 属性。3> 在源码 arch/arm/boot/dts 目录下搜索上面得到的字符串,对应的文件即板子正在使用的 dts 文件2. 设原创 2021-05-15 21:28:48 · 581 阅读 · 0 评论