返回列表 发新帖我要提问本帖赏金: 20.00元(功能说明)

[开发工具] SAMA5D3 Xplained开发板设备树及硬件配置解析

[复制链接]
7091|10
 楼主| poison0 发表于 2024-2-23 14:55 | 显示全部楼层 |阅读模式
本帖最后由 poison0 于 2024-2-23 15:04 编辑

#申请原创# @21小跑堂

SAMA5D3 Xplained 开发板是由 Atmel 公司(现为 Microchip Technology)设计的一款嵌入式系统开发板,使用 SAMA5D3 系列处理器。
各个部位的应用:




设备树文件(at91-sama5d3_xplained.dts)是用于SAMA5D3 Xplained开发板的描述文件,定义了硬件配置和连接信息。
以下是对设备树的简要解析:

  • 硬件配置:

    • 设备树包括了主频、时钟配置、存储器映射等信息,为SAMA5D3 Xplained开发板提供了全面的硬件描述。

  • 外设配置:

    • 配置了多个外设,如MMC、SPI、CAN、Timer、I2C、Ethernet、PWM、USART等,展示了这些外设的初始化和连接方式。

  • 网络配置:

    • 定义了两个以太网接口(macb0和ksz9477),并描述了它们的连接方式、速度、双工模式等信息。

  • 电源管理:

    • 包括了电源管理部分,描述了不同电源的配置,如VCC_1V8、VCC_1V2、VCC_3V3等。

  • 用户接口:

    • 配置了用户接口,包括GPIO按键(PB_USER)和LED灯(d2、d3),并定义了其触发方式和中断设置。

  • 存储器分区:

    • 定义了存储器分区,包括at91bootstrap、bootloader、设备树、内核、根文件系统等。


此解析有助于理解SAMA5D3 Xplained开发板的硬件组成、外设配置和连接方式,为软件开发提供硬件抽象层的基础。

该板子的设备树文件及硬件配置描述了系统的硬件组件和连接关系,为 Linux 内核提供了必要的信息以正确配置和管理硬件。

下面是对该设备树文件的解析:

  1. // SPDX-License-Identifier: GPL-2.0-or-later
  2. /*
  3. * at91-sama5d3_xplained.dts - Device Tree file for the SAMA5D3 Xplained board
  4. *
  5. *  Copyright (C) 2014 Atmel,
  6. *                  2014 Nicolas Ferre <nicolas.ferre@atmel.com>
  7. */
  8. /dts-v1/;
  9. #include "sama5d36.dtsi"
  10. #include <dt-bindings/input/input.h>

  11. / {
  12.         model = "SAMA5D3 Xplained";
  13.         compatible = "atmel,sama5d3-xplained", "atmel,sama5d3", "atmel,sama5";

  14.         // Chosen node specifies the default output path for the console
  15.         chosen {
  16.                 stdout-path = "serial0:115200n8";
  17.         };

  18.         // Memory configuration
  19.         memory@20000000 {
  20.                 reg = <0x20000000 0x10000000>;
  21.         };

  22.         // Clock configuration
  23.         clocks {
  24.                 slow_xtal {
  25.                         clock-frequency = <32768>;
  26.                 };

  27.                 main_xtal {
  28.                         clock-frequency = <12000000>;
  29.                 };
  30.         };

  31.         // Advanced High-performance Bus (AHB) configuration
  32.         ahb {
  33.                 apb {
  34.                         // Configuration for MMC0 (SD Card)
  35.                         mmc0: mmc@f0000000 {
  36.                                 // Pin control configuration for MMC0
  37.                                 pinctrl-0 = <&pinctrl_mmc0_clk_cmd_dat0 &pinctrl_mmc0_dat1_3 &pinctrl_mmc0_dat4_7 &pinctrl_mmc0_cd>;
  38.                                 vmmc-supply = <&vcc_mmc0_reg>;
  39.                                 vqmmc-supply = <&vcc_3v3_reg>;
  40.                                 status = "okay";
  41.                                 slot[url=home.php?mod=space&uid=2514928]@0[/url] {
  42.                                         reg = <0>;
  43.                                         bus-width = <8>;
  44.                                         cd-gpios = <&pioE 0 GPIO_ACTIVE_LOW>;
  45.                                 };
  46.                         };

  47.                         // Configuration for SPI0
  48.                         spi0: spi@f0004000 {
  49.                                 pinctrl-names = "default", "cs";
  50.                                 pinctrl-1 = <&pinctrl_spi0_cs>;
  51.                                 cs-gpios = <&pioD 13 GPIO_ACTIVE_LOW>, <0>, <0>, <&pioD 16 GPIO_ACTIVE_LOW>;
  52.                                 status = "okay";
  53.                         };

  54.                         // Configuration for CAN0
  55.                         can0: can@f000c000 {
  56.                                 status = "okay";
  57.                         };

  58.                         // Configuration for Timer Counter Block 0 (TCB0)
  59.                         tcb0: timer@f0010000 {
  60.                                 timer0: timer[url=home.php?mod=space&uid=2514928]@0[/url] {
  61.                                         compatible = "atmel,tcb-timer";
  62.                                         reg = <0>;
  63.                                 };

  64.                                 timer1: timer[url=home.php?mod=space&uid=2514798]@1[/url] {
  65.                                         compatible = "atmel,tcb-timer";
  66.                                         reg = <1>;
  67.                                 };
  68.                         };

  69.                         // Configuration for I2C0
  70.                         i2c0: i2c@f0014000 {
  71.                                 pinctrl-0 = <&pinctrl_i2c0_pu>;
  72.                                 status = "okay";

  73.                                 // Configuration for Microchip KSZ9477 Ethernet Switch
  74.                                 i2c_ksz9477: ksz9477@5f {
  75.                                         compatible = "microchip,ksz9477";
  76.                                         reg = <0x5f>;

  77.                                         interrupt-parent = <&pioB>;
  78.                                         interrupts = <28 IRQ_TYPE_LEVEL_LOW>;
  79.                                         status = "okay";

  80.                                         ports {
  81.                                                 #address-cells = <1>;
  82.                                                 #size-cells = <0>;

  83.                                                 // Ethernet ports configuration
  84.                                                 port@0 {
  85.                                                         reg = <0>;
  86.                                                         label = "lan1";
  87.                                                         phy-handle = <&swphy_0>;
  88.                                                 };
  89.                                                 port[url=home.php?mod=space&uid=2514798]@1[/url] {
  90.                                                         reg = <1>;
  91.                                                         label = "lan2";
  92.                                                         phy-handle = <&swphy_1>;
  93.                                                 };
  94.                                                 // ... (similar configuration for other ports)
  95.                                                 port@5 {
  96.                                                         reg = <5>;
  97.                                                         label = "cpu";
  98.                                                         ethernet = <&macb0>;
  99.                                                         phy-mode = "rgmii-txid";
  100.                                                         tx-internal-delay-ps = <2000>;
  101.                                                         fixed-link {
  102.                                                                 speed = <1000>;
  103.                                                                 full-duplex;
  104.                                                                 pause;
  105.                                                         };
  106.                                                 };
  107.                                                 // ...
  108.                                         };

  109.                                         // MDIO configuration for Ethernet PHYs
  110.                                         mdio {
  111.                                                 #address-cells = <1>;
  112.                                                 #size-cells = <0>;
  113.                                                 swphy_0: ethernet-phy@0 {
  114.                                                         reg = <0>;
  115.                                                         eee-broken-100tx;
  116.                                                         eee-broken-1000t;
  117.                                                 };
  118.                                                 // ... (similar configuration for other PHYs)
  119.                                                 swphy_4: ethernet-phy[url=home.php?mod=space&uid=26072]@4[/url] {
  120.                                                         reg = <4>;
  121.                                                         eee-broken-100tx;
  122.                                                         eee-broken-1000t;
  123.                                                 };
  124.                                         };
  125.                                 };
  126.                         };

  127.                         // Configuration for I2C1
  128.                         i2c1: i2c@f0018000 {
  129.                                 status = "okay";

  130.                                 // Configuration for PMIC
  131.                                 pmic: act8865@5b {
  132.                                         compatible = "active-semi,act8865";
  133.                                         reg = <0x5b>;
  134.                                         status = "disabled";

  135.                                         regulators {
  136.                                                 // Regulator configurations
  137.                                                 vcc_1v8_reg: DCDC_REG1 {
  138.                                                         regulator-name = "VCC_1V8";
  139.                                                         regulator-min-microvolt = <1800000>;
  140.                                                         regulator-max-microvolt = <1800000>;
  141.                                                         regulator-always-on;
  142.                                                 };
  143.                                                 // ... (similar configuration for other regulators)
  144.                                         };
  145.                                 };
  146.                         };

  147.                         // Configuration for MACB0 (Ethernet)
  148.                         macb0: ethernet@f0028000 {
  149.                                 phy-mode = "rgmii-txid";
  150.                                 #address-cells = <1>;
  151.                                 #size-cells = <0>;
  152.                                 status = "okay";

  153.                                 // Fixed link configuration for MACB0
  154.                                 fixed-link {
  155.                                                                         speed = <1000>;
  156.                                         full-duplex;
  157.                                         pause;
  158.                                 };
  159.                         };
  160.                 };
  161.         };
  162. };




  • Chosen节点: 该节点用于指定默认的控制台输出路径,这里指定为"serial0:115200n8",表示串口输出。
  • Memory节点: 描述内存配置,指定了内存的基地址和大小。
  • Clocks节点: 包含了系统中使用的时钟源的配置,包括慢时钟(slow_xtal)和主时钟(main_xtal)的频率。
  • AHB节点: 包含了高级高性能总线(Advanced High-performance Bus)的配置。

    • MMC0节点: 配置了SD卡(MMC0)的参数,包括引脚控制和供电配置。
    • SPI0节点: 配置了SPI0外设的引脚控制和CS引脚。
    • CAN0节点: 配置了CAN0外设。
    • TCB0节点: 配置了定时器计数器块0,包括两个定时器(timer0和timer1)。
    • I2C0节点: 配置了I2C0外设,以及与之相关的Microchip KSZ9477以太网交换机的信息。包括引脚控制、中断、以及各个端口的配置和PHY(物理层)信息。
    • I2C1节点: 配置了I2C1外设,主要是与PMIC(电源管理集成电路)的通信。
    • MACB0节点: 配置了以太网MACB0,包括PHY模式和固定链接的参数。在这里,apb节点包含了多个外设的配置,如MMC0、SPI0、CAN0、TCB0、I2C0、I2C1、以及MACB0。

这些配置信息在设备树中以一种结构化的方式描述了硬件的连接和配置,使Linux内核能够正确地初始化和使用这些硬件组件。

对于嵌入式系统的开发非常重要,因硬件配置的变化需要修改设备树而不必修改内核源代码。















  

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

×

打赏榜单

21小跑堂 打赏了 20.00 元 2024-02-29
理由:恭喜通过原创审核!期待您更多的原创作品~

评论

很漂亮的一款嵌入式开发板,通过结构化的方式使其开发时不必修改内核源码  发表于 2024-2-29 17:20
实际测量不符 发表于 2024-2-24 11:12 | 显示全部楼层
Chosen 节点:

该节点指定了默认的输出路径为 "serial0:115200n8",表示串口输出,用于控制台信息的显示。这个默认可以改变吗?
OliviaSH 发表于 2024-2-25 20:47 | 显示全部楼层
实际测量不符 发表于 2024-2-24 11:12
Chosen 节点:

该节点指定了默认的输出路径为 "serial0:115200n8",表示串口输出,用于控制台信息的显示。 ...

修改配置文件就可以
单片小菜 发表于 2024-3-1 17:09 | 显示全部楼层
这个板子感觉有FPGA的作用了
勇敢的大白菜 发表于 2024-3-4 10:38 | 显示全部楼层
需要进行配置文件的修改,才是可以的。
小明的同学 发表于 2024-3-26 22:00 | 显示全部楼层
支持网络开发的。
hehhehee 发表于 2024-3-27 00:31 | 显示全部楼层
硬件配置的变化需要修改设备树而不必修改内核源代码
xuanhuanzi 发表于 2024-3-30 15:36 | 显示全部楼层
看着更适合跑OS。
huangcunxiake 发表于 2024-4-13 18:23 | 显示全部楼层
Linux?
天灵灵地灵灵 发表于 2024-4-29 22:41 | 显示全部楼层
官方开发板吗
您需要登录后才可以回帖 登录 | 注册

本版积分规则

82

主题

655

帖子

2

粉丝
快速回复 在线客服 返回列表 返回顶部