设备树详细分析
文章平均质量分 82
设备树详细分析,内核版本linux-4.19-rc3。
远近长安
璀璨星河,伴我同行。
展开
-
5.3中断系统中的设备树——中断号的演变与irq_domain
与sub_intc类似,external intc对应intc的m号中断,我们让external intc的0号中断对应数组项的第48项。(想想要定义上千个宏,很恐怖的。如果再加一个中断控制器sub_intc,它也会发出中断,并且sub_intc发出的中断会触发上一级的中断控制器的n号中断。假设只有一个中断控制器,有32个中断,那么中断和irq_desc数组可以一一对应,每一个数组项对应一个中断。假设irq_desc数组项中的第36,37,38,39项,分别对应sub_intc的0,1,2,3号中断。原创 2023-03-06 08:00:00 · 1477 阅读 · 0 评论 -
5.2中断系统中的设备树——Linux对中断处理的框架及代码流程简述
当发生中断时,CPU会跳到一个固定的地址去执行代码,这个固定的地址就被称为中断向量。以ARM920T为例,它的中断向量默认是地址24(0x18)的地方。那么,就可以在这里放一条跳转指令。一系列的跳转指令用来处理各种异常,中断当然也是一种异常。这些指令就被称为vector,异常向量表。对于ARM9来说,vector可以放在0地址,也可以放在0xffff 0000地址(使能MMU,开启虚拟地址之后)。对于其他芯片,vector的存放地址可能不一样。但是不管怎么样,对于大部分的芯片来说,它的软件中都应该保存一个v原创 2023-01-10 22:42:54 · 954 阅读 · 0 评论 -
5.1中断系统中的设备树——中断概念的引入与处理流程
本节主要是简述一下什么是中断和中断的处理流程。原创 2022-12-01 22:50:43 · 229 阅读 · 0 评论 -
4.2uboot对设备树的支持——dtb的修改原理
本节说明。在uboot中,有一些命令支持。当我们想要修改dtb文件时,可以直接,然后生成,再将。或者,我们也可以在中使用,直接修改dtb文件。修改完成后,再将新的dtb文件保存在板子上,以后启动时就可以使用这个新的dtb文件了。实际上,就是fdt命令在最新的uboot版本中已经有支持了,但是还不支持,所以需要修改uboot代码,增加支持fdt指令(从新版本中移植)。在移植之前,先了解一下在fdt指令修改dtb的原理。原创 2022-11-06 14:43:48 · 5152 阅读 · 8 评论 -
4.1uboot对设备树的支持——传递dtb给内核
本节讲述怎么把设备树(dtb)传给内核。uboot只要,然后在时,把这块内存的传给内核(通过寄存器)。原创 2022-10-28 08:30:00 · 3356 阅读 · 0 评论 -
3.8内核对设备树的处理——在根文件系统中查看设备树
当内核启动完成后,会进入根文件系统,本节说明如何。原创 2022-10-26 08:00:00 · 3432 阅读 · 0 评论 -
3.7内核对设备树的处理——内核中设备树的操作函数
本节介绍一下设备树中的常用操作。include/linux/目录下有很多of开头的头文件。原创 2022-10-25 08:00:00 · 431 阅读 · 0 评论 -
3.6内核对设备树的处理——platform_device跟platform_driver的匹配
platform_device跟platform_driver的匹配原创 2022-10-25 00:29:52 · 1316 阅读 · 0 评论 -
3.5内核对设备树的处理——device_node转换为platform_device
本节学习内核如何将转换为。先回顾一下。所谓总线设备驱动模型,就是将设备分为()和()两部分。使用总线设备驱动模型,如果要去修改,就需要,还要。而设备树就是将通过来描述,这样,修改平台设备后就不需要重新编译内核,。使用设备树的流程大致如下:首先,编写dts文件,然后使用dtc工具编译dts文件得到dtb文件,内核解析dtb文件生成device_node,之后再将device_node转换成platform_device。以之前的jz2440.dts为例。依次分析各个节点。原创 2022-10-23 21:46:40 · 2003 阅读 · 0 评论 -
3.4内核对设备树的处理——dtb转换为device_node(unflatten)
本节说明dtb怎么转换为设备节点device_node。事实上,每个设备节点都是一个结构体。问:我们通过uboot中将dtb文件随便的放到内存的某块地方就可以使用,不用担心这块内存被其他程序使用吗,这块内存在内核运行过程中不会被覆盖使用吗?答:在前面讲解设备树文件时知道,可以在dts文件中指定要保留的内存空间的起始地址和大小,这样内核就不会去使用这块内存。实际上,即使没有使用/memreserve/来设置保留内存,当内核启动时也会把dtb所占的区域保留下来。...原创 2022-01-15 23:22:57 · 1671 阅读 · 0 评论 -
3.3内核对设备树的处理——对设备树中运行时配置信息的处理
本节内容主要为对设备树中,运行时配置信息的处理。设备树主要是做一些信息的传递,简单的说就是将信息从设备树中读出出来,再赋给内核中的某个变量。原创 2021-12-21 23:42:03 · 960 阅读 · 0 评论 -
3.2内核对设备树的处理——对设备树中平台信息的处理(选择machine_desc)
本节说明对于平台识别信息,内核是怎么处理的。原创 2021-12-20 23:21:17 · 897 阅读 · 0 评论 -
3.1内核对设备树的处理——从源头分析_内核head.S对dtb的简单处理
本章(第二章)内容是设备树讲解中最重要的一章。设备树文件里面描述的信息可以分为以下三部分:platform identification(平台信息); runtime configuration(运行时的配置信息); device population(设备的特性);实际上,内核对于设备树的处理也会分为三部分:...原创 2021-12-19 22:21:14 · 693 阅读 · 0 评论 -
2.2设备树的规范(dts和dtb)——DTB格式
本节讲述设备的dtb格式。上节讲述了dts格式。回顾上节,在dts文件和dtsi文件中,可以使用C语言的define和include,使用方法和作用也同C语言相同。编写dts文件后,需要使用dtc工具将dts文件编译成dtb文件。dtc工具可以检查dts文件是否存在语法或格式错误,如果发现语法或格式上有错误,那么就会提示修改这些错误。在dts文件中,可以包含一个或多个dtsi文件,通过dtc工具将这些文件编译得到一个dtb文件。同时,可以在dts文件中重新定义覆盖dtsi文件中设置的节点属性。原创 2021-12-16 00:17:31 · 8284 阅读 · 0 评论 -
2.1设备树的规范(dts和dtb)——DTS格式
本节学习设备树的规范。使用设备树时,需要编写dts文件,然后使用dtc编译dts文件,生成dtb文件。所以本节分为两部分,第一部分讲解dts格式,第二部分讲解dtb格式。首先看一下dts文件的布局。DTS文件布局(layout):/dts-v1/; // 表示DTS文件的版本[memory reservations] // 保存的内存区域 格式为: /memreserve/ <address> <原创 2021-12-12 22:24:04 · 9335 阅读 · 0 评论 -
1.6设备树的引进与体验——只想使用设备树不想深入研究怎么办
这节主要讲只想使用设备树但是不想深入研究怎么办,简单记录一下,因为我们还是要深入研究彻底掌握设备树的。如果没有深入研究设备树,那么只能希望写驱动程序的人:提供了文档,程序,并且驱动程序写得好适配性强,这是很不稳定的。以我们之前写的jz2440_led.dts文件为例,我们开始使用的是reg来指定pin脚,这时候如果不做说明后面接手的人就可能会感到疑惑。后面使用pin的话,就比较简单易懂了。 led { compatible = "jz2440_led"; pin = <S3C原创 2021-10-25 22:33:10 · 352 阅读 · 0 评论 -
1.5设备树的引进与体验——使用设备树时对应的驱动编程
最后,在总线设备模型中,有一个platform_device结构体,当使用设备树时,platform_device结构体的dev成员,它由一个成员叫of_node,of_node中则含有属性,含有的属性则取决于设备树,如compatible和pin属性,compatible属性会最先被用来匹配对应的drv程序。其中 of_match_leds 如下,.compatible = "jz2440_led"对应dts文件中led节点的compatible属性的值,data没有用上,设置为NULL。原创 2021-10-25 22:03:14 · 4280 阅读 · 0 评论 -
1.4设备树的引进与体验——总线设备驱动模型
1原创 2021-09-17 00:08:51 · 709 阅读 · 2 评论 -
1.3设备树的引进与体验——字符设备驱动的编译测试
上一节写的led驱动程序包含了很多头文件,这些头文件的支持依赖于内核,所以要测试这个驱动程序,首先要编译内核。原创 2021-09-07 23:03:46 · 761 阅读 · 2 评论 -
1.2设备树的引进与体验——字符类驱动设备的传统写法
1原创 2021-09-01 23:11:15 · 382 阅读 · 0 评论 -
1.1设备树的引进与体验——字符设备驱动程序的三种写法
怎么写一个LED驱动程序?原创 2021-08-23 00:39:52 · 650 阅读 · 0 评论