linux 设备树
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了linux 设备树,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含3333字,纯文字阅读大概需要5分钟。
内容图文
![linux 设备树](/upload/InfoBanner/zyjiaocheng/928/099190f4a9424f00852b5aee42b55d03.jpg)
一、设备树作用
设备树存在的目的是将soc的uart、i2c、spi等外设信息以设备树文件的形式独立出内核,系统启动时,内核会将设备树读入。
二、dts、dtsi、dtb、dtc关系
设备树有.dts和.dtsi两种文件形式,.dtsi是.dts的公共部分,被dts包含。dtc是dts的编译器,将dtsi和dts编译成dtb。最终内核是读取dtb文件将设备树度进内核。dtc工具在linux源码/scripts/dtc 目录下。
三、设备树结构
uart0是节点标签,serial是节点名称,12100000是uart0寄存器首地址,在dts中可以通过@uart0来访问这个节点
下面是hi3559av100-demb.dts的部分设备树
#include "hi3559av100.dtsi"
/ { 以“/”开头
model = "Hisilicon HI3559AV100 DEMO Board"; model指定制造商的设备型号
compatible = "hisilicon,hi3559av100"; compatible指定了系统的名称
aliases {
serial0 = &uart0;
serial1 = &uart1;
i2c0 = &i2c_bus0;
i2c1 = &i2c_bus1;
spi0 = &spi_bus0;
spi1 = &spi_bus1;
gpio0 = &gpio_chip0;
gpio1 = &gpio_chip1;
};
chosen {
bootargs = "mem=512M console=ttyAMA0,115200 clk_ignore_unused root=/dev/mtdblock2 rootfstype=yaffs2 rw mtdparts=hinand:1M(boot),9M(kernel),32M(rootfs),1M(this_bootargs_string_is_reserved_for_bootargs_form_uboot!!!_it_must_be_longer_than_bootargs_form_uboot!!!_this_bootargs_string_is_reserved_for_bootargs_form_uboot!!!_it_must_be_longer_than_bootargs_form_uboot!!!_this_bootargs_string_is_reserved_for_bootargs_form_uboot!!!_it_must_be_longer_than_bootargs_form_uboot!!!_this_bootargs_string_is_reserved_for_bootargs_form_uboot!!!_it_must_be_longer_than_bootargs_form_uboot!!!_this_bootargs_string_is_reserved_for_bootargs_form_uboot!!!_it_must_be_longer_than_bootargs_form_uboot!!!)";
linux,initrd-start = <0x60000040>;
linux,initrd-end = <0x61000000>;
};
cpus {
#address-cells = <2>;
#size-cells = <0>;
cpu@0 {
compatible = "arm,cortex-a53";
device_type = "cpu";
reg = <0x0 0x0>;
enable-method = "psci";
clock-latency = <100000>; /* From legacy driver */
cpu-idle-states = <&CPU_POWERDOWN &CPU_STANDBY>;
};
cpu@1 {
compatible = "arm,cortex-a53";
device_type = "cpu";
reg = <0x0 0x1>;
enable-method = "psci";
clock-latency = <200000>; /* From legacy driver */
cpu-idle-states = <&CPU_POWERDOWN &CPU_STANDBY>;
};
cpu@2 {
compatible = "arm,cortex-a73";
device_type = "cpu";
reg = <0x0 0x100>;
enable-method = "psci";
cpu-idle-states = <&CPU_POWERDOWN &CPU_STANDBY>;
vcc-supply = <&a73_regulator>;
};
cpu@3 {
compatible = "arm,cortex-a73";
device_type = "cpu";
reg = <0x0 0x101>;
enable-method = "psci";
operating-points = <
792000 796000
1296000 888000
1608000 988000
>;
clocks = <&clock HI3559AV100_A73_MUX>,
<&clock HI3559AV100_FIXED_24M>,
<&clock HI3559AV100_APLL_CLK>,
<&clock HI3559AV100_FIXED_1000M>;
clock-names = "a73_mux","24m","apll","1000m";
clock-latency = <400000>; /* From legacy driver */
cpu-idle-states = <&CPU_POWERDOWN &CPU_STANDBY>;
vcc-supply = <&a73_regulator>;
};
};
memory {
device_type = "memory";
reg = <0x0 0x44000000 0x2 0x0>; /* system memory base */
};
};
&uart0 { "&"表示追加节点属性,在"hi3516dv200.dtsi"文件中已经有uart0节点的描述,这里追加一个"status"属性,如果dtsi中已经有status属性,将会替换,如果没有则追加。
status = "okay";
};
&uart1 {
status = "okay";
};
四、设备树在系统中的位置
设备树会被内核解析到/sys/firmware/devicetree/base,以hi3559为例,改目录下的文件如下所示:
内容总结
以上是互联网集市为您收集整理的linux 设备树全部内容,希望文章能够帮你解决linux 设备树所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。