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

简介: 【驱动】【设备树】一个简单的系统级芯片(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 节点的中断由指定的中断控制器管理。


相关文章
|
6月前
|
Linux C语言 SoC
嵌入式linux总线设备驱动模型分析
嵌入式linux总线设备驱动模型分析
80 1
|
6月前
|
传感器 芯片
PCF8574芯片介绍及驱动方法
PCF8574芯片介绍及驱动方法
344 0
|
Linux 芯片
Linux驱动分析之SPI设备
前面我们对SPI控制器驱动进行了分析,接下来来分析SPI设备驱动。我们以DS1302驱动作为分析对象。DS1302是一款RTC芯片,估计很多人在学单片机时用到过。RTC芯片算是比较简单的,也方便分析理解。
Linux驱动分析之SPI设备
|
存储 Linux 开发者
【Linux学习笔记】设备驱动模型详解——总线、设备、驱动和类
设备驱动是计算机系统中的重要组成部分,它们允许操作系统与硬件交互。设备驱动模型是一种通用的抽象框架,用于描述操作系统如何管理硬件设备。这里我们将介绍设备驱动模型中的四个关键概念:总线、设备、驱动和类。
LED模板驱动程序的改造:总线设备驱动模型
LED模板驱动程序的改造:总线设备驱动模型
107 0
|
Linux 开发工具 git
嵌入式linux/鸿蒙开发板(IMX6ULL)开发(三十)LED模板驱动程序的改造:总线设备驱动模型
嵌入式linux/鸿蒙开发板(IMX6ULL)开发(三十)LED模板驱动程序的改造:总线设备驱动模型
226 1
嵌入式linux/鸿蒙开发板(IMX6ULL)开发(三十)LED模板驱动程序的改造:总线设备驱动模型
RK3399平台开发系列讲解(高速设备驱动篇)6.51、PCI总线信号定义
RK3399平台开发系列讲解(高速设备驱动篇)6.51、PCI总线信号定义
142 0
RK3399平台开发系列讲解(高速设备驱动篇)6.51、PCI总线信号定义
RK3399平台开发系列讲解(高速设备驱动篇)6.54、PCIe对PCI配置空间的扩展
RK3399平台开发系列讲解(高速设备驱动篇)6.54、PCIe对PCI配置空间的扩展
352 0
RK3399平台开发系列讲解(高速设备驱动篇)6.54、PCIe对PCI配置空间的扩展
RK3399平台开发系列讲解(高速设备驱动篇)6.61、USB如何模拟HID设备
RK3399平台开发系列讲解(高速设备驱动篇)6.61、USB如何模拟HID设备
173 0
RK3399平台开发系列讲解(高速设备驱动篇)6.61、USB如何模拟HID设备