Linux第51步_移植ST公司的linux内核第3步_添加修改设备树

1、设备树文件的路径

1)、创建linux中的设备树头文件

在“my_linux/linux-5.4.31/arch/arm/boot/dts/”目录中,以“stm32mp15xx-edx.dtsi”为蓝本,复制一份,并命名为 “stm32mp157d-atk.dtsi”,这就是我们开发板的设备树头文件。

2)、创建linux中的设备树文件

在“my_linux/linux-5.4.31/arch/arm/boot/dts/”目录中,以“stm32mp157d-ed1.dts”为蓝本,复制一份,并命名为 “stm32mp157d-atk.dts”,这就是我们开发板的设备树文件。

2、添加设备树

1)、打开终端

输入“ls回车

输入“cd linux/回车”,切换到“linux”目录

输入“ls回车”,列出“linux”目录下的文件和文件夹

输入“cd atk-mp1/回车”,切换到“atk-mp1”目录

输入“ls回车”,列出“atk-mp1”目录下的文件和文件夹

输入“cd linux/回车”,切换到“linux”目录

输入“ls回车”,列出“linux”目录下的文件和文件夹

输入“cd my_linux/回车”,切换到“my_linux”目录

输入“ls回车”,列出“my_linux”目录下的文件和文件夹

输入“cd linux-5.4.31/回车”,切换到“linux-5.4.31”目录

输入“ls回车”,列出“linux-5.4.31”目录下的文件和文件夹

2)、输入“cd arch/回车”,切换到“arch”目录

输入“ls回车”,列出“arch”目录下的文件和文件夹

输入“cd arm/回车”,切换到“arm”目录

输入“ls回车”,列出“arm”目录下的文件和文件夹

输入“cd boot/回车”,切换到“boot”目录

输入“ls回车”,列出“boot”目录下的文件和文件夹

输入“cd dts/回车”,切换到“dts”目录

输入“ls回车”,列出“dts”目录下的文件和文件夹

发现ST公司开发板的设备树头文件“stm32mp15xx-edx.dtsi

3)、输入“cp stm32mp15xx-edx.dtsi  stm32mp157d-atk.dtsi回车”,以“stm32mp15xx-edx.dtsi”为蓝本,复制一份,并命名为 “stm32mp157d-atk.dtsi

输入“ls stm32mp157d-at*回车

输入“cp stm32mp157d-ed1.dts  stm32mp157d-atk.dts回车”,以“stm32mp157c-ed1.dts”为蓝本,复制一份,并命名为 “stm32mp157d-atk.dts

输入“ls stm32mp157d-at*回车

至此,设备树文件和头文件添加成功。

5、修改设备树文件“stm32mp157d-atk.dts

1)、使用VSCode打开“linux-5.4.31.code-workspace”,然后点击“arch”,点击“arm”,点击“boot”,点击“dts”,找到“stm32mp157d-atk.dts”,见下图:

2)、将“stm32mp15xx-edx.dtsi”修改为“stm32mp157d-atk.dtsi”,

见下图:

6、修改设备树头文件“stm32mp157d-atk.dtsi

1)、使用VSCode打开“linux-5.4.31.code-workspace

点击“转到”,点击“转到文件”,在搜索框中,输入“stm32mp157d-atk.dtsi”就可打开搜索到的文件;

见下图:

文件打开如下:

2)、添加头文件,内容如下:

#include "stm32mp157-m4-srm.dtsi"

#include "stm32mp157-m4-srm-pinctrl.dtsi"

见下图

3)、删除下面的“led”节点和“sd_switch”节点,见下图:

删除后,文件如下:

4)、删除下面的“vin”节点,见下图:

删除后,文件如下:

5)、在59行开始处,添加“vddcore”和“v3v3

vddcore: buck1 {

compatible = "regulator-fixed";

regulator-name = "vddcore";

regulator-min-microvolt = <1200000>;

regulator-max-microvolt = <1350000>;

regulator-always-on;

regulator-boot-on;

};

v3v3: regulator-3p3v {

compatible = "regulator-fixed";

regulator-name = "v3v3";

regulator-min-microvolt = <3300000>;

regulator-max-microvolt = <3300000>;

regulator-always-on;

regulator-boot-on;

};

见下图:

6)、删除adc节点,见下图:

 

删除后,文件如下:

7)、删除dac节点

删除后文件如下:

8)、添加“ethernet0”节点

 ðernet0 {

 status = "okay";

 pinctrl-0 = <ðernet0_rgmii_pins_a>;

 pinctrl-1 = <ðernet0_rgmii_pins_sleep_a>;

 pinctrl-names = "default", "sleep";

 phy-mode = "rgmii-id";

 max-speed = <1000>;

 phy-handle = <&phy0>;

 mdio0 {

 #address-cells = <1>;

 #size-cells = <0>;

 compatible = "snps,dwmac-mdio";

 phy0: ethernet-phy@0 {

 reg = <0>;

};

};

};

添加“ethernet0”节点后,见下图:

9)、删除“i2c4”节点,删除后见下图:

10)、删除“m4_rproc”和“pwr_regulators”,见下图:

删除后,见下图:

11)、使用下面的内容替换sdmmc1节点

&sdmmc1 {

pinctrl-names = "default", "opendrain", "sleep";

pinctrl-0 = <&sdmmc1_b4_pins_a>;

pinctrl-1 = <&sdmmc1_b4_od_pins_a>;

pinctrl-2 = <&sdmmc1_b4_sleep_pins_a>;

broken-cd;

st,neg-edge;

bus-width = <4>;

vmmc-supply = <&v3v3>;

status = "okay";

};

替换sdmmc1节点后,见下图:

12)、使用下面的内容替换“sdmmc2”

&sdmmc2 {

pinctrl-names = "default", "opendrain", "sleep";

pinctrl-0 = <&sdmmc2_b4_pins_a>;

pinctrl-1 = <&sdmmc2_b4_od_pins_a>;

pinctrl-2 = <&sdmmc2_b4_sleep_pins_a>;

non-removable;

st,neg-edge;

bus-width = <8>;

vmmc-supply = <&v3v3>;

keep-power-in-suspend;

status = "okay";

};

替换后,见下图:

13)、删除“timers6”节点

删除“timers6”节点后,见下图:

14)、删除“usbotg_hs”,“usbphyc_port0”和“usbphyc_port1

/* Copyright (C) STMicroelectronics 2017 - All Rights Reserved

 * Author: Ludovic Barre <ludovic.barre@st.com> for STMicroelectronics.

 */

#include "stm32mp157-m4-srm.dtsi"

#include "stm32mp157-m4-srm-pinctrl.dtsi"

#include <dt-bindings/gpio/gpio.h>

#include <dt-bindings/mfd/st,stpmic1.h>

/ {

memory@c0000000 {

device_type = "memory";

reg = <0xC0000000 0x40000000>;

};

reserved-memory {

#address-cells = <1>;

#size-cells = <1>;

ranges;

mcuram2: mcuram2@10000000 {

compatible = "shared-dma-pool";

reg = <0x10000000 0x40000>;

no-map;

};

vdev0vring0: vdev0vring0@10040000 {

compatible = "shared-dma-pool";

reg = <0x10040000 0x1000>;

no-map;

};

vdev0vring1: vdev0vring1@10041000 {

compatible = "shared-dma-pool";

reg = <0x10041000 0x1000>;

no-map;

};

vdev0buffer: vdev0buffer@10042000 {

compatible = "shared-dma-pool";

reg = <0x10042000 0x4000>;

no-map;

};

mcuram: mcuram@30000000 {

compatible = "shared-dma-pool";

reg = <0x30000000 0x40000>;

no-map;

};

retram: retram@38000000 {

compatible = "shared-dma-pool";

reg = <0x38000000 0x10000>;

no-map;

};

};

    vddcore: buck1 {

compatible = "regulator-fixed";

regulator-name = "vddcore";

regulator-min-microvolt = <1200000>;

regulator-max-microvolt = <1350000>;

regulator-always-on;

regulator-boot-on;

};

v3v3: regulator-3p3v {

compatible = "regulator-fixed";

regulator-name = "v3v3";

regulator-min-microvolt = <3300000>;

regulator-max-microvolt = <3300000>;

regulator-always-on;

regulator-boot-on;

};

};

&cpu0{

cpu-supply = <&vddcore>;

};

&crc1 {

status = "okay";

};

&dma1 {

sram = <&dma_pool>;

};

&dma2 {

sram = <&dma_pool>;

};

&dts {

status = "okay";

};

 ðernet0 {

 status = "okay";

 pinctrl-0 = <ðernet0_rgmii_pins_a>;

 pinctrl-1 = <ðernet0_rgmii_pins_sleep_a>;

 pinctrl-names = "default", "sleep";

 phy-mode = "rgmii-id";

 max-speed = <1000>;

 phy-handle = <&phy0>;

 mdio0 {

 #address-cells = <1>;

 #size-cells = <0>;

 compatible = "snps,dwmac-mdio";

 phy0: ethernet-phy@0 {

 reg = <0>;

};

};

};

&hash1 {

status = "okay";

};

&ipcc {

status = "okay";

};

&iwdg2 {

timeout-sec = <32>;

status = "okay";

};

&rng1 {

status = "okay";

};

&rtc {

status = "okay";

};

&sdmmc1 {

pinctrl-names = "default", "opendrain", "sleep";

pinctrl-0 = <&sdmmc1_b4_pins_a>;

pinctrl-1 = <&sdmmc1_b4_od_pins_a>;

pinctrl-2 = <&sdmmc1_b4_sleep_pins_a>;

broken-cd;

st,neg-edge;

bus-width = <4>;

vmmc-supply = <&v3v3>;

status = "okay";

};

&sdmmc2 {

pinctrl-names = "default", "opendrain", "sleep";

pinctrl-0 = <&sdmmc2_b4_pins_a>;

pinctrl-1 = <&sdmmc2_b4_od_pins_a>;

pinctrl-2 = <&sdmmc2_b4_sleep_pins_a>;

non-removable;

st,neg-edge;

bus-width = <8>;

vmmc-supply = <&v3v3>;

keep-power-in-suspend;

status = "okay";

};

&sram {

dma_pool: dma_pool@0 {

reg = <0x50000 0x10000>;

pool;

};

};

&uart4 {

pinctrl-names = "default", "sleep", "idle";

pinctrl-0 = <&uart4_pins_a>;

pinctrl-1 = <&uart4_sleep_pins_a>;

pinctrl-2 = <&uart4_idle_pins_a>;

pinctrl-3 = <&uart4_pins_a>;

/delete-property/dmas;

/delete-property/dma-names;

status = "okay";

};

7、修改arch/arm/boot/dts/目录中的“Makefile

1)、打开arch/arm/boot/dts/Makefile到“dtb-$(CONFIG_ARCH_STM32)”配置项

2)、添加配置项stmm32mp157d-atk.dtb”,修改后,见下图:

3)、保存arch/arm/boot/dts/目录中的“Makefile”。

最近更新

  1. TCP协议是安全的吗?

    2024-02-13 05:34:02       18 阅读
  2. 阿里云服务器执行yum,一直下载docker-ce-stable失败

    2024-02-13 05:34:02       19 阅读
  3. 【Python教程】压缩PDF文件大小

    2024-02-13 05:34:02       19 阅读
  4. 通过文章id递归查询所有评论(xml)

    2024-02-13 05:34:02       20 阅读

热门阅读

  1. 时间序列预测——Encoder-Decoder CNN模型

    2024-02-13 05:34:02       19 阅读
  2. re:从0开始的CSS学习之路 11. 盒子垂直布局

    2024-02-13 05:34:02       32 阅读
  3. 状态模式:灵活管理对象状态的设计策略

    2024-02-13 05:34:02       35 阅读
  4. 设计模式-状态模式 State

    2024-02-13 05:34:02       26 阅读
  5. Spark编程实验五:Spark Structured Streaming编程

    2024-02-13 05:34:02       28 阅读
  6. re:从0开始的CSS之旅 12. 轮廓、阴影、圆角

    2024-02-13 05:34:02       29 阅读
  7. django实现外键

    2024-02-13 05:34:02       29 阅读
  8. COMP 636: Web App

    2024-02-13 05:34:02       28 阅读
  9. 3.3 Binance_interface APP U本位合约行情-实时行情

    2024-02-13 05:34:02       27 阅读
  10. dolphinDB使用select筛选时间字段

    2024-02-13 05:34:02       28 阅读
  11. 【leetcode】动态规划——序列问题总结

    2024-02-13 05:34:02       31 阅读
  12. Leetcode 3033. Modify the Matrix

    2024-02-13 05:34:02       38 阅读