【驱动】【设备树】一个简单的系统级芯片(SoC)的设备树节点

一个简单的系统级芯片(SoC)的设备树节点

`学习设备树

设备树(Device Tree)源代码

soc {
    compatible = "simple-bus";
    #address-cells = <1>;
    #size-cells = <1>;
    ranges = <0x0 0xe0000000 0x00100000>;

    serial@4600 {
        device_type = "serial";
        compatible = "ns16550";
        reg = <0x4600 0x100>;
        clock-frequency = <0>;
        interrupts = <0xA 0x8>;
        interrupt-parent = <&ipic>;
    };
};


节点解释

1、soc 节点

  • compatible = “simple-bus”;

    • 表示该节点是一个简单总线,通常用于描述一个没有复杂总线功能的 SoC。
  • #address-cells = <1>;

    • 指定该节点下的子节点地址的单元数量为 1。这意味着每个子节点的地址由一个单元(32 位)描述。
  • #size-cells = <1>;

    • 指定该节点下的子节点大小的单元数量为 1。这意味着每个子节点的大小由一个单元(32 位)描述。
  • ranges = <0x0 0xe0000000 0x00100000>;

    • 描述设备树中的地址范围映射。格式为 <子设备总线地址 映射到父总线地址 长度>。在这个例子中,设备的地址空间从 0xe0000000 开始,长度为 0x00100000(1 MB)。即子总线上的地址范围从 0x0 开始,映射到父总线上的地址范围从 0xe0000000 开始,长度为 0x00100000(1 MB)。

2、serial@4600 节点

  • device_type = “serial”;

    • 指定该节点描述的是一个串行设备。
  • compatible = “ns16550”;

    • 指定该设备与 ns16550 兼容。ns16550 是一个常见的 UART(通用异步收发传输器)型号。
  • reg = <0x4600 0x100>;

    • 描述设备的寄存器地址和长度。这里,寄存器基地址为 0x4600,寄存器长度为 0x100(256 字节)。
  • clock-frequency = <0>;

    • 描述设备的时钟频率。这里设置为 0,可能表示设备的时钟频率未指定或不适用。
  • interrupts = <0xA 0x8>;

    • 描述设备的中断信息。格式为 <中断编号 中断类型>。0xA 是中断编号,0x8 可能表示中断触发类型或中断优先级。
  • interrupt-parent = <&ipic>;

    • 指定中断控制器的 phandle。&ipic 表示中断控制器的设备树节点句柄(phandle),表明 serial@4600 节点的中断由该中断控制器管理。

总结

这段设备树代码描述了一个 SoC 节点,其中包含一个串行设备(serial@4600)。该设备使用 ns16550 UART 控制器,与 simple-bus 兼容,并定义了寄存器的地址、时钟频率和中断信息。serial@4600 节点的中断由指定的中断控制器管理。

  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

qq2108462953

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值