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”。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/680117.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【stomp实战】Springboot+Stomp协议实现聊天功能

本示例实现一个功能&#xff0c;前端通过websocket发送消息给后端服务&#xff0c;后端服务接收到该消息时&#xff0c;原样将消息返回给前端。前端技术栈htmlstomp.js&#xff0c;后端SpringBoot 前端代码 关于stomp客户端的开发&#xff0c;如果不清楚的&#xff0c;可以看…

机器学习10-特征缩放

特征缩放的目的是确保不同特征的数值范围相近&#xff0c;使得模型在训练过程中更加稳定&#xff0c;加速模型收敛&#xff0c;提高模型性能。具体而言&#xff0c;零均值和单位方差的目标有以下几点好处&#xff1a; 1. 均值为零&#xff08;Zero Mean&#xff09;&#xff1a…

15 ABC基于状态机的按键消抖原理与状态转移图

1. 基于状态机的按键消抖 1.1 什么是按键&#xff1f; 从按键结构图10-1可知&#xff0c;按键按下时&#xff0c;接点&#xff08;端子&#xff09;与导线接通&#xff0c;松开时&#xff0c;由于弹簧的反作用力&#xff0c;接点&#xff08;端子&#xff09;与导线断开。 从…

【开源】SpringBoot框架开发天沐瑜伽馆管理系统

目录 一、摘要1.1 项目介绍1.2 项目录屏 二、功能模块2.1 数据中心模块2.2 瑜伽课程模块2.3 课程预约模块2.4 系统公告模块2.5 课程评价模块2.6 瑜伽器械模块 三、系统设计3.1 实体类设计3.1.1 瑜伽课程3.1.2 瑜伽课程预约3.1.3 系统公告3.1.4 瑜伽课程评价 3.2 数据库设计3.2.…

牛客周赛 Round 32 F.小红的矩阵修改【三进制状态压缩dp】

原题链接&#xff1a;https://ac.nowcoder.com/acm/contest/75174/F 时间限制&#xff1a;C/C 1秒&#xff0c;其他语言2秒 空间限制&#xff1a;C/C 262144K&#xff0c;其他语言524288K 64bit IO Format: %lld 题目描述 小红拿到了一个字符矩阵&#xff0c;矩阵中仅包含&q…

java 执行方式和类加载过程

java默认属于混合执行&#xff1a; 编译和解释并存 java先进行解释执行&#xff0c;遇到多次重复的代码会把它编程成可执行文件&#xff0c;方便下次直接执行。 可以通过VM参数来修改执行方式。 类加载过程

Nacos、Eureka、Zookeeper、Consul对比

开发中&#xff0c;经常需要对微服务进行管理&#xff0c;所以需要引入一些服务治理的中间件&#xff0c;用于注册、发现服务&#xff0c;常见的服务治理中间件为 服务治理中间件 【1】Nacos 【2】Eureka 【3】Zookeeper 【4】Consul&#xff08;Consul 所在的 HashiCorp 公司…

从完成[flutter竖向显示文字]到对实现方式[Rich Text和Text Span]的一些整理

前言 完成的需求是竖向显示文字&#xff0c;而已有的RotatedBox虽然可以让文字内部控件进行指定角度的旋转&#xff0c;但是不能保持文字仍正常显示&#xff08;它会因为旋转横着&#xff09;&#xff0c;遂尝试Rich Text和Text Span的方式&#xff0c;这两个我曾在android有略…

红队笔记Day2 -->上线不出网机器

今天就来讲一下在企业攻防中如何上线不出网的机器&#xff01;&#xff01; 1.基本网络拓扑 基本的网络拓扑就是这样 以下是对应得的P信息&#xff0c;其中的52网段充当一个内网的网段&#xff0c;而111充当公网网段 先ping一下&#xff0c;确保外网ping不通内网&#xff0c;内…

文档类图像的智能识别,百度、阿里、华为腾讯开放接口

文档类图像的智能识别是指利用人工智能技术对文档图像进行自动识别和信息提取。在我国&#xff0c;百度、阿里、华为和腾讯等科技巨头都提供了相应的开放接口&#xff0c;方便开发者集成和使用文档类图像识别功能。以下是这些公司提供的相关开放接口&#xff1a; 1. 百…

微信小程序(四十一)wechat-http的使用

注释很详细&#xff0c;直接上代码 上一篇 新增内容&#xff1a; 1.模块下载 2.模块的使用 在终端输入npm install wechat-http 没有安装成功vue的先看之前的一篇 微信小程序&#xff08;二十&#xff09;Vant组件库的配置- 如果按以上的成功配置出现如下报错先输入以下语句 …

leetcode 24

24. 两两链表交换链表中的节点 已经给出了链表节点结构类&#xff1a; public class ListNode {int val;ListNode next;ListNode() {}ListNode(int val) { this.val val; }ListNode(int val, ListNode next) { this.val val; this.next next; }} 简而言之&#xff0c;我们…

DS:单链表实现队列

创作不易&#xff0c;友友们来个三连支持吧&#xff01; 一、队列的概念 队列&#xff1a;是只允许在一端进行插入数据操作&#xff0c;在另一端进行删除数据操作的特殊线性表&#xff0c;队列具有先进先出FIFO(First In First Out)的特点。 入队列&#xff1a;进行插入操作…

leetcode题目记录

文章目录 单调栈[127. 单词接龙](https://leetcode.cn/problems/word-ladder/)[139. 单词拆分](https://leetcode.cn/problems/word-break/)[15. 三数之和](https://leetcode.cn/problems/3sum/)[140. 单词拆分 II](https://leetcode.cn/problems/word-break-ii/)[113. 路径总和…

《数字孪生城市建设指引报告(2023年)》指引智慧城市行动方向

2023年12月27日&#xff0c;中国信息通信研究院&#xff08;简称“中国信通院”&#xff09;产业与规划研究所、中国互联网协会数字孪生技术应用工作委员会和苏州工业园区数字孪生创新坊联合发布《数字孪生城市建设指引报告&#xff08;2023年&#xff09;》。该报告提出了三大…

PostgreSQL的学习心得和知识总结(一百二十八)|构建 PostgreSQL 负载测试器

目录结构 注:提前言明 本文借鉴了以下博主、书籍或网站的内容,其列表如下: 1、参考书籍:《PostgreSQL数据库内核分析》 2、参考书籍:《数据库事务处理的艺术:事务管理与并发控制》 3、PostgreSQL数据库仓库链接,点击前往 4、日本著名PostgreSQL数据库专家 铃木启修 网站…

Linux:docker在线仓库(docker hub 阿里云)基础操作

把镜像放到公网仓库&#xff0c;这样可以方便大家一起使用&#xff0c;当需要时直接在网上拉取镜像&#xff0c;并且你可以随时管理自己的镜像——删除添加或者修改。 1.docker hub仓库 2.阿里云加速 3.阿里云仓库 由于docker hub是国外的网站&#xff0c;国内的对数据的把控…

.NET Core 3 foreach中取索引index

for和foreach 循环是 C# 开发人员工具箱中最有用的构造之一。 在我看来&#xff0c;迭代一个集合比大多数情况下更方便。 它适用于所有集合类型&#xff0c;包括不可索引的集合类型&#xff08;如 &#xff0c;并且不需要通过索引访问当前元素&#xff09;。 但有时&#xf…

Verilog刷题笔记30

题目&#xff1a; You are provided with a BCD one-digit adder named bcd_fadd that adds two BCD digits and carry-in, and produces a sum and carry-out. 解题&#xff1a; module top_module( input [399:0] a, b,input cin,output cout,output [399:0] sum );reg [99…

代码随想录day20--二叉树的应用8

LeetCode669.修剪二叉搜索树 题目描述&#xff1a; 给你二叉搜索树的根节点 root &#xff0c;同时给定最小边界low 和最大边界 high。通过修剪二叉搜索树&#xff0c;使得所有节点的值在[low, high]中。修剪树 不应该 改变保留在树中的元素的相对结构 (即&#xff0c;如果没…