Linux设备树 创建小型模板设备树 特殊节点
创建小型模板设备树
内容:
I.MX6ULL 这个 Cortex-A7 架构的 32 位 CPU
I.MX6ULL 内部 ocram,起始地址 0x00900000,大小为 128KB(0x20000)
I.MX6ULL 内部 aips1 域下的 gpr外设控制器,寄存器起始地址为 0x020e4000,大小为 0x4000。
I.MX6ULL 内部 aips2 域下的 usbmisc 外设控制器,寄存器起始地址为 0x02184800,大小为 0x200
I.MX6ULL 内部 aips3 域下的 iomuxc_snvs外设控制器,寄存器起始地址为 0x02290000 ,大小为 0x4000
// linux-5.5.4/arch/arm/boot/dts/imx6ul.dtsi
/ // 根节点
{
#address-cells = <1>;
#size-cells = <1>;
/*
* The decompressor and also some bootloaders rely on a
* pre-existing /chosen node to be available to insert the
* command line and merge other ATAGS info.
* 解压程序和一些引导加载程序依赖于预存/选择的节点来添加命令行并合并其他ATAGS信息
*/
chosen {};
compatible = "fsl,imx6ull-alientek-evk","fsl-imx6ull";
cpus // CPU节点, 描述 SOC 内部的所有 CPU
{
#address-cell = <1>;
#size-cells = <0>;
cpu0 : cpu@0 // cpu0 子节点
{
copmpatible = "arm, cortex-a7"; // Cortex-A7 架构
device_type = "cpu";
reg = <0>;
};
};
soc // soc 节点
{
#address-cells = <1>; // 起始地 占用 一个字长
#size-cells = <1>; // 地址空间长度 占用 一个字长
compatible = "simple-bus";
ranges; // 子空间和父空间地址范围相同
ocram: sram@900000 // 子节点 @后为起始地址
{
compatible = "mmio-sram";
reg = <0x00900000 0x20000>; // 大小为 128KB(0x20000)
};
aips1: aips-bus@2000000
{
compatible = "fsl,aips-bus","simple-bus";
#address-cells = <1>;
#size-cells = <1>;
reg = <0x02000000 0x100000>;
gpr: imomuxc-gpr@20e4000 //外设控制器节点
{
compatible = "fsl, imx6ul-iomuxc-gpr","fsl, imx6q-iomuxc-gpr","syscon";
reg = <0x020e4000 0x4000>;
};
};
aips2: aips-bus&2100000
{
compatibele = "fsl, aips-bus","simple-bus";
#address-cells = <1>;
#size-cells = <1>;
reg = <0x02100000 0x100000>;
ranges;
usbmisc: usbmisc@2184800 //外设控制器节点
{
#index-cells =<1>;
compatible = "fsl,imx6ul-usbmisc","fsl, imx6q-usbmisc";
reg = <0x02184800 0x200>;
};
};
};
};
// linux-5.5.4/arch/arm/boot/dts/imx6ull.dtsi
#include "imx6ul.dtsi"
/
{
soc
{
aips3: aips-bus@2200000
{
compatible = "fsl, aips-bus", "simple-bus";
#address-cells = <1>;
#size-cells = <1>;
reg = <0x02200000 0x100000>;
ranges;
iomuxc_snvs: iomuxc-snvs@2290000 //外设控制器节点
{
compatible = "fsl, imx6ull-iomuxc-snvs";
reg = <0x02290000 0x40000>;
};
};
};
};
特殊节点
aliases子节点
// linux-5.5.4/arch/arm/boot/dts/imx6ul.dtsi
/ // 根节点
{
aliases // 定义别名,为了方便访问节点
{
ethernet0 = &fec1;
ethernet1 = &fec2;
gpio0 = &gpio1;
gpio1 = &gpio2;
gpio2 = &gpio3;
gpio3 = &gpio4;
gpio4 = &gpio5;
i2c0 = &i2c1;
//....
};
};
chosen子节点
// linux-5.5.4/arch/arm/boot/dts/imx6ul.dtsi
/
{
chosen{}; // 为了 uboot 向 Linux 内核传递数据, 带 bootargs 参数
};
为了 uboot 向 Linux 内核传递数据