
LinuxDTS(设备树)
123456.......
这个作者很懒,什么都没留下…
展开
-
内核对设备树的处理(四)__device_node转换为platform_device
前言:以前写驱动程序时候,一般把驱动程序分成两部分platform_device跟platform_driver这两部分,platform_device:描述硬件使用的资源;在前面文章介绍过设备树dts文件最终在linux内核中会转化成platform_device:dts -> dtb -> device_node -> platform_device本文章主要解...原创 2019-05-19 15:23:45 · 4295 阅读 · 1 评论 -
设备树_dts格式(语法)
在之前提到过设备树就是平台总线中的平台设备的衍生,是用于表述硬件设备资源的,对于ARM平台,设备树文件存放在arch/arm/boot/dts下,绑定文档存在Documentation/devicetree/bindings下。我把jz2440_LED——设备树之点亮LED灯中的设备树文件拷贝过来,进行简单的介绍设备树的格式,/dts-v1/;/ { model = "SMDK24440"...原创 2019-04-29 21:02:17 · 4536 阅读 · 0 评论 -
中断系统中的设备树(五)__内核对设备树中断信息的处理
从硬件结构上看, 处理过程分上下两个层面: 中断控制器, 使用中断的设备从软件结构上看, 处理过程分左右两个部分: 在设备树中描述信息, 在驱动中处理设备树从图中我们可以看到有顶层的中断控制器(interrupt-controller@4a000000),也有下面一级的中断控制器gpg、gpf,对于gpg、gpf这两个中断控制器是pinctr节点里面的子节点,对应的设备树描述如下...原创 2019-06-29 09:50:30 · 804 阅读 · 0 评论 -
中断系统中的设备树(三)__S3C2440上使用设备树描述中断
在前面的文章提到的设备树文件没有涉及到中断本文章会对设备树中的中断简单的介绍,在以前的mach-s3c24xx.c中手动注册了很多平台设备,这些平台设备中指定了很多设备资源,比如i2c控制器提前指定了中断号和内存等资源,这些中断号可以从某个头文件指定。内核不断演变,虚拟中断号和硬件中断号不再绑定,这也就意味着不能在平台资源里事先确定所使用的中断资源,就需要用设备树描述这些中断资源,也就是事先...原创 2019-06-08 12:57:39 · 1150 阅读 · 0 评论 -
中断系统中的设备树(一)__Linux对中断处理的框架分析
.section .vectors, "ax", %progbits.L__vectors_start: W(b) vector_rst W(b) vector_und W(ldr) pc, .L__vectors_start + 0x1000 W(b) vector_pabt W(b) vector_dabt ...原创 2019-06-03 23:34:19 · 1758 阅读 · 1 评论 -
中断系统中的设备树(二)__中断号的演变与irq_domain
在上一节中断系统中的设备树(一)__Linux对中断处理的框架分析提过irq_desc[]下标是中断号virq(虚拟中断号),虚拟中断号和硬件中号是一一对应的,所以根据硬件中断确定是哪个中断发生。以前,对于每一个硬件中断(hwirq)都预先确定它的中断号(virq),这些中断号一般都写在一个头文件里arch\arm\mach-s3c24xx\include\mach\irqs.h我们...原创 2019-06-07 21:19:03 · 2454 阅读 · 1 评论 -
中断系统中的设备树(四)__设备树描述按键中断
前言:使用设备树描述中断时,我们需要在设备树节点里面描述设备使用哪个硬件中断,如下所示是对按键中断的硬件中断的描述(只是起来开门见山的作用),对于理解按键按键中断的硬件中断的描述信息,我会在下面详细介绍,buttons { compatible = "jz2440_button"; eint-pins = <&gpf 0 0>, <...原创 2019-06-12 23:47:28 · 3690 阅读 · 1 评论 -
jz2440_LED_设备树之点亮LED灯
简介:设备驱动程序中,总线驱动模型和设备树的差别在于平台设备的构建不同,在传统平台设备驱动程序写在C文件中,使用设备树时,平台设备之前不存在,在dts文件中构造节点,节点里面含有资源,设备树详细的内容我会在以后的博客中详细介绍。 [点击并拖拽以移动] /* platform_device结构体定义 */struct platform_device { const char *name;...原创 2019-04-28 21:48:33 · 1341 阅读 · 0 评论 -
内核对设备树的处理(一)__bootloader向kernel传递参数
前言:uboot提供两种工作模式:一是启动加载模式(start loading),一是下载模式(downloading)工作在启动加载模式时,uboot会自动执行bootcmd命令,比如:bootcmd=“nand read 0x100000 0x80000000 0x300000; bootm 0x80000000”uboot首先把内核镜像拷贝到内存地址为0x80000000的地方,然后执...原创 2019-05-08 00:18:46 · 2092 阅读 · 2 评论 -
设备树_dtb文件分析
前言:我之前的原计划是没有打算写设备树dtb文件分析,但是情势所迫啊!,学习还是要一步一步来的。在前面的章节提到过.dts文件以文本方式对系统设备树进行描述,经过Device Tree Compiler(dtc)将dts文件转换成二进制文件binary device tree blob(dtb),.dtb文件可由Linux内核解析,有了device tree就可以在不改动Linux内核的情况下,...原创 2019-05-12 17:29:06 · 8478 阅读 · 0 评论 -
内核对设备树的处理(三)__dtb转换为device_node
前言:问题:我们把设备树文件随便放到内存某个地方就可以使用,内核运行过程中却不会覆盖设备树dtb文件所占的那一块内存呢?答:之前说过在设备树文中的[memory reservations]可以指定一块内存(这块内存被保留下来,内核不会占用它)。[memory reservations] // 格式为: /memreserve/ <address> <length&...原创 2019-05-18 12:58:22 · 2031 阅读 · 0 评论 -
bootloader对设备树的支持(一)__传递dtb给内核
在之前的文章中介绍过在启动内核时把设备树的地址写到r2寄存器中,并且设备数在内存中的储存信息空间被保留,有无设备树u-boot启动内核的命令是不同的: bootm <uImage_addr> // 无设备树 bootm <uImage_addr> <initrd_addr> <dtb_addr...原创 2019-05-25 20:59:56 · 1901 阅读 · 0 评论 -
内核对设备树的处理(二)__kernel对dts节点的处理
我们知道设备树只是起到信息传递的作用,所以对配置信息的处理还是相对比较简单的,设备树只不过从dtb文件中把信息给提取出来付给内核中的某个变量就可以了,下面这条命令,就是内核启动时的命令行参数: chosen { bootargs = "noinitrd root=/dev/mtdblock4 rw init=/linuxrc console=ttySAC0,115200"; };...原创 2019-05-08 22:32:22 · 2466 阅读 · 0 评论