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

  • 相关阅读:
    java IO选择流的原则及其与IO流相关类的关系
    图形用户界面(graphical user interface)
    泛型
    流、文件及基于文本的应用
    java线程
    多态与方法调用
    在eclipse中使用javap工具反汇编
    java类的访问控制符与其他几个特殊修饰符的总结
    java中几个特殊的类
    @property在内存管理中的参数问题
  • 原文地址:https://www.cnblogs.com/Mike2019/p/13521925.html
Copyright © 2011-2022 走看看