zoukankan      html  css  js  c++  java
  • 设备树2-创建小型模板设备树

      设备树里面描述的内容如下:

    1、I.MX6ULL 这个 Cortex-A7 架构的 32 CPU

    2、I.MX6ULL 内部 ocram,起始地址 0x00900000,大小为 128KB(0x20000)

    3、I.MX6ULL 内部 aips1 域,寄存器起始地址为 0x02000000,大小为 0x100000

    4、I.MX6ULL 内部 aips2 域,寄存器起始地址为 0x02100000,大小为 0x100000

    5、I.MX6ULL 内部 aips3域,寄存器起始地址为 0x02200000,大小为 0x100000

    6、I.MX6ULL 内部 aips1 域下的 ecspi1 外设控制器,寄存器起始地址为 0x02008000,大小为 0x4000

    7、I.MX6ULL 内部 aips2 域下的 usbotg1 外设控制器,寄存器起始地址为 0x02184000,大小为 0x4000

    8、I.MX6ULL 内部 aips3 域下的 rngb 外设控制器,寄存器起始地址为 0x02284000,大小为 0x4000

    注:I.MX6ULL 内部分为三个域: aips1~3,这三个域分管不同的外设控制器。

    /{
        compatible = "fsl, imx6ull-alientek-evk", "fsl, imx6ull";
        //CPU节点
        cpus{
            #address-cells = <1>;
            #size-cells = <0>;
            
            cpu0:cpu@0{
                compatible = "arm, cortex-a7";
                device_type = "cpu";
                reg = <0>;
            };
        }
        
        //soc节点
        soc{
            #address-cells = <1>;
            #size-cells = <1>;
            compatible = "simple-bus";
            ranges;
            
            //ocram节点
            ocram:sram@00900000{
                compatible = "fsl,lpm-sram";
                reg = <0x00900000 0x20000>
            };
            
            //aips1节点
            aips1:aips-bus@02000000{
                compatible = "fsl,aips-bus", "simple-bus";
                #address-cells = <1>;
                #size-cells = <1>;
                reg = <0x02000000 0x100000>;
                ranges;
                
                //ecspi1节点
                ecspi1:ecspi@0x02008000{
                    compatible = "fsl, imx6ul-ecspi", "fsl, imx5l-ecspi";
                    #address-cells = <1>;
                    #size-cells = <1>;
                    reg = <0x02008000 0x4000>;
                    status = "disabled";
                };
            }
            
            //aips2节点
            aips2:aips-bus@02100000{
                compatible = "fsl, aips-bus", "simple-bus";
                #address-cells = <1>;
                #size-cells = <1>;
                reg = <0x02100000 0x100000>
                ranges
                
                //usbotg1节点
                usbotg1:usb@02184000{
                    compatible = "fsl, imx6ul-usb", "fsl, imx27-usb";
                    #address-cells = <1>;
                    #size-cells = <1>;
                    reg = <0x02184000 0x200>;
                    status = "disabled";
                };
            }
            
            //aips3节点
            aips3:aips-bus@02200000{
                compatible = "fsl, aips-bus", "simple-bus";
                #address-cells = <1>;
                #size-cells = <1>;
                reg = <0x02200000 0x100000>
                ranges;
                
                //rngb节点
                rngb:usb@02284000{
                    compatible = "fsl, imx6sl-rng", "fsl, imx-rng", "imx-rng";
                    reg = <0x02284000 0x4000>;
                };
            }
        }
        
    }

     备注:

    1、Linux内核启动时会解析设备各个节点信息,并在/proc/device-tree目录下生成相应的设备树节点文件。

    2、/proc/device-tree下的文件是根节点属性。

    3、/proc/device-tree下的文件夹是根节点“/”的各个子节点。

    4、根节点“/”下的aliases子节点,主要功能是定义别名。不过我们一般会在节点命名的时候加上label,然后通过&label来访问节点。

    5、Linux内核源码中有详细的.txt文件描述了如何添加节点,路径:Linux源码目录/Documentation/devicetree/bindings

  • 相关阅读:
    Python中的赋值与深浅拷贝
    Python面试题解析之前端、框架和其他
    Python面试题解析之数据库与缓存
    Python面试题解析之网络编程与并发
    Python面试题解析之Python基础篇
    2、使用rpm包安装grafana
    1、在Centos上安装Grafana
    MySQL所学所思所想
    运维感悟(信息大爆炸的时代,该学习什么来保持着我们的竞争力)
    C#.NET 中的 Timer 计时器及 3 种使用方法
  • 原文地址:https://www.cnblogs.com/Mike2019/p/13521925.html
Copyright © 2011-2022 走看看