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

  • 相关阅读:
    oracle 日期函数
    SharpDevelop学习笔记(5)—— AddIns系统详解
    C#3.0 为我们带来什么(2) —— 自动属性
    SharpDevelop学习笔记(6)—— AddIn构建指南
    SharpDevelp2.0学习笔记(1)——SharpDevelp简单介绍
    对象数组根据某属性列的灵活排序
    SharpDevelop学习笔记(4)——SharpDevelop的核心
    也谈2007
    SharpDevelop学习笔记(2)——体系结构
    C#3.0 为我们带来什么(1) —— LINQ之Lambda
  • 原文地址:https://www.cnblogs.com/Mike2019/p/13521925.html
Copyright © 2011-2022 走看看