设备树
奇小葩
学习,思考,总结
展开
-
Linux设备树详解(一) 基础知识
1. 前言关于设备树,之前就经过详细的系统培训,但是本着会用就行的原则,对各个知识点都没有进行系统的总结。都是用到哪里学哪里,时间长了,基本也忘记了。所以对于后期知识各个知识点进行总结。2. 为什么要引入DTS在传统Linux内核中,ARM架构的板极硬件细节过多地被硬编码在arch/arm/plat-xxx和arch/arm/mach-xxx,比如板上的platform设备、resource...原创 2019-07-30 21:58:47 · 51689 阅读 · 4 评论 -
Linux设备树详解(二)文件构成
设备树就是描述单板资源以及设备的一种文本文件。至于出现的原因,基本的语法和使用方法,上一章节做了基本的介绍。本篇文章主要是更深层次的探讨设备文件的构成。1. devie tree的编译Device Tree文件的格式为dts,包含的头文件格式为dtsi,dts文件是一种人可以看懂的编码格式。但是uboot和linux不能直接识别,他们只能识别二进制文件,所以需要把dts文件编译成dtb文件。d...原创 2019-07-29 09:43:35 · 6665 阅读 · 1 评论 -
Linux设备树详解(三)u-boot设备树的传递
前面两节介绍了设备的基本概念、编译、结构的组成,本章节开始来梳理下,当我们写好了dts文件,经过编译生成了dtb,那么dtb如何通过Bootloader引导程序加载到内核,如何解析dtb的内容是否合法,bootloader支持哪些对于dtb的操作。1. 传递dtb给内核对于传统bootloader提供两种工作模式:一是启动加载模式(start loading),一是下载模式(downloa...原创 2019-07-29 09:42:28 · 9421 阅读 · 1 评论 -
Linux设备树详解(四)kernel的解析
uboot将一些参数,设备树文件传给内核,那么内核如何处理这些设备树文件呢?本章就kernel解析设备树的过程和原理。1. head.S开始从上一章我们已经知道fdt的地址是作为参数传递到kernel。下面看一下kernel阶段怎么获取这个地址值的。bootloader启动内核时,会设置r0,r1,r2三个寄存器,r0一般设置为0;r1一般设置为machine id (在使用设备树时该参...原创 2019-07-30 21:59:11 · 7974 阅读 · 3 评论 -
Linux设备树详解(五)设备树的使用
对于Linux来说,一切皆是文件的思想,本章是基于此,来套路设备树与文件系统的关系,在Linux系统起来后,会将解析完成的设备树导出到用户空间。kernel启动在of_init()函数中在sys/firmware/devicetree/base目录下面为设备树展开成sysfs的目录和二进制属性文件,所有的node节点就是一个目录,所有的property属性就是一个二进制属性文件。static ...原创 2019-07-30 21:59:29 · 5592 阅读 · 2 评论