Linux第50步_移植ST公司的linux内核第2步_编译ST公司的linux源码和修改网络驱动

1、修改“linux-5.4.31”目录下的“Makefile

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

2)、点击“linux-5.4.31”目录下的“Makefile

3)、点击“编辑”,点击“查找”,输入“CROSS_COMPILE回车”,找到“ARCH ?= $(SUBARCH)

4)、添加内容如下:

ARCH = arm

CROSS_COMPILE = arm-none-linux-gnueabihf-

见下图:

5)、点击“文件”,点击“保存”;

2、创建脚本文件,命名为“stm32mpl57d_atk.sh

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)、输入“vi stm32mp157d_atk.sh回车

3)、输入内容如下:

#!/bin/sh

make  distclean

#清除工程,删除“.config”文件,执行1次即可,以后就不要再执行了。

make  stm32mp1_atk_defconfig

#设置为默认配置,执行1次即可,以后就不需要执行该语句了。

#“stm32mp1_atk_defconfig”位于“arch/arm/configs”目录下;

make  menuconfig

#打开图形化配置界面

make  uImage dtbs LOADADDR=0XC2000040 -j8

#编译镜像文件和设备树,linux内核在DDR中的加载地址为0XC2000040,-j8表示采用8线程编译

见下图:

4)、按“ESC键”,按“:wq回车”保存脚本文件

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

5)、输入“chmod 777 stm32mp157d_atk.sh回车”,给脚本文件赋予可执行权限

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

3、使用脚本文件“stm32mpl57d_atk.sh”编译linux源码;

1)、输入“./stm32mp157d_atk.sh回车”,执行编译;

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

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

发现生成了uImage文件

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

输入“ls stm32mp*回车”,列出“dts”目录下以“stm32mp”为开头的的文件和文件夹

发现linux设备树文件“stm32mp157d-ed1.dtb

见下图:

4、修改网络驱动

STM32MP157核心板V1.3的网络驱动芯片型号:YT8511,其PHY地址为0x00;

STM32MP157核心板V1.2的网络驱动芯片型号:RTL8211,其PHY地址为0x01;

网络驱动程序名字:phy.c;

网络驱动程序功能:支持YT8511和RTL8211;

正点原子的网络驱动程序路径:

程序源码\08、模块驱动源码\01、YT8511驱动源码\linux内核下修改方法\linux

1)、使用“FileZilla”,将“motorcomm_phy.h”分别拷贝到“/home/zgq/linux/atk-mp1/linux/my_linux/linux-5.4.31/include/linux”目录下

2)、使用“FileZilla”,将“motorcomm.c”拷贝到 Limux 源码下的 “/home/zgq/linux/atk-mp1/linux/my_linux/linux-5.4.31/drivers/net/phy” 目录下

3)、修改“my_linux/linux-5.4.31/drivers/net/phy/”目录下的Makefile文件

使用VSCode打开“linux-5.4.31.code-workspace”,然后点击“drivers”,点击“net”,点击“phy”,找到“Makefile”,打开它,见下图:

4)、在最后一行添加“obj-$(CONFIG_MOTORCOMM_PHY) += motorcomm.o

见下图:

5)、修改“my_linux/linux-5.4.31/drivers/net/phy/”目录下的Kconfig文件,加入如下内容:

config MOTORCOMM_PHY

tristate "Motorcomm PHYs"

---help---

Supports the YT8010, YT8510, YT8511, YT8512 PHYs.

见下图:

6)、输入“cd ..回车”,退回到“boot”目录

输入“cd ..回车”,退回到“arm”目录

输入“cd ..回车”,退回到“arch”目录

输入“cd ..回车”,退回到“linux-5.4.31”目录

输入“make menuconfig回车”,打开linux内核配置界面

移动向下光标键,找到“Device Drivers”

7)、按“回车”进入,移动向下光标键,找到“Network device support”

8)、按“回车”进入,移动向下光标键,找到“PHY Device support and infrastructure”

9)、按“回车”进入,移动向下光标键,找到“Motorcomm PHYs”

10)、按“y”,将YT8511驱动编译进内核

11)、按“ESC”退出,直到出现下图:

12)、按“Y”,保存

输入“make  uImage dtbs LOADADDR=0XC2000040 -j8回车

编译镜像文件和设备树,linux内核在DDR中的加载地址为0XC2000040,-j8表示采用8线程编译

注意:不能使用脚本文件编译,否则会把刚才的配置清除了。

13)、为了防止配置文件丢失,将linux默认配置文件“.config”修改为“./arch/arm/configs/stm32mp1_atk_defconfig”,

注意:make distclean #清除工程,删除“.config”文件,测试OK后,一定要保存。

输入“make menuconfig回车

14)、移动向右光标键至“Save”,按下“回车

15)、输入“./arch/arm/configs/stm32mp1_atk_defconfig

16)、向下移动光标至“Ok”,再按“O”保存

输入“vi  ./arch/arm/configs/stm32mp1_atk_defconfig回车

17)、按“ESC键”,输入“/CONFIG_MOTORCOMM_PHY回车”,搜索“CONFIG_MOTORCOMM_PHY

发现“CONFIG_MOTORCOMM_PHY”,说明备份正确。

18)、按“ESC键”,输入“:q!回车”,不保存退出。

至此,我们得到了ST公司开发板对应的ulmage和stm32mp157d-ed1.dtb设备树,还需要修改linux设备树,暂时还不能烧录。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

SpringCloud-高级篇(二十二)

前面解决了消息的可靠性、消息的延迟问题,消息的堆积的问题,下面研究mq可用性、并发能力问题,这就需要mq集群来实现了 一:集群分类 (1)普通集群 创建一个节点: 8082、8083也可以看到这个队列&…

Qt可视化大屏布局

科技大屏现在非常流行,这里分享一下某个项目的大屏布局(忘了源码是哪个博主的了) 展示 这个界面整体是垂直布局,分为两个部分,标题是一个部分,然后下面的整体是一个layout布局,为另外一部分。 l…

委托和事件详解

委托和事件详解 前言一、委托1.什么是委托2.委托的声明3.Action<T>委托和Func<T>委托4.委托的缺点5.委托与lambda表达式6.委托的使用&#xff08;1&#xff09;模板方法&#xff08;2&#xff09;回调方法 二、事件1.什么是事件2.事件模型的5个步骤和组成部分&…

UE5 播放本地MP3、MP4

1.创建一个媒体播放器 2.如创建视频&#xff0c;勾选。 它会多一个媒体纹理给你 3.1 设置音频 在一个actor上添加“媒体音频组件” “音频媒体播放器”赋值给它 3.2播放音频 添加一个音频媒体播放器变量&#xff0c; 赋值 地址使用绝对地址 4.1设置视频 UI上创建一个imag…

Linux第49步_移植ST公司的linux内核第1步_获取linux源码

已知ST公司的linux源码路径&#xff1a; /home/zgq/linux/atk-mp1/stm32mp1-openstlinux-5.4-dunfell-mp1-20-06-24/sources/arm-ostl-linux-gnueabi/linux-stm32mp-5.4.31-r0 1、创建“my_linux”目录 打开第1个终端 输入“ls回车” 输入“cd linux/回车”&#xff0c;切换…

C语言每日一题(55)另一颗树的子树

力扣 572 另一棵树的子树 题目描述 给你两棵二叉树 root 和 subRoot 。检验 root 中是否包含和 subRoot 具有相同结构和节点值的子树。如果存在&#xff0c;返回 true &#xff1b;否则&#xff0c;返回 false 。 二叉树 tree 的一棵子树包括 tree 的某个节点和这个节点的所…

C#,最大公共子序列(LCS,Longest Common Subsequences)的算法与源代码

1 最大公共子序列 最长的常见子序列问题是寻找两个给定字符串中存在的最长序列。 最大公共子序列算法&#xff0c;常用于犯罪鉴定、亲子鉴定等等的 DNA 比对。 1.1 子序列 让我们考虑一个序列S<s1&#xff0c;s2&#xff0c;s3&#xff0c;s4&#xff0c;…&#xff0c;…

python+django学习交流论坛系统244t6

系统可以提供信息显示和相应服务&#xff0c;其管理员管理用户发布的博客文章以及用户之间的论坛交流信息&#xff0c;管理留言以及文章分类信息。用户在论坛交流模块发布帖子以及评论帖子&#xff0c;在前台查看和评论其他用户发布的博客文章&#xff0c;收藏博客文章&#xf…

给定具体日期 返回给定日期是星期几 calendar.weekday(year,month,day)

【小白从小学Python、C、Java】 【计算机等考500强证书考研】 【Python-数据分析】 给定具体日期 返回给定日期是星期几 calendar.weekday(year,month,day) [太阳]选择题 如果2024年2月12日是星期一&#xff0c;请问最后一个print语句的运行结果是&#xff1f; import calenda…

ubuntu远程桌面配置以及常见问题

ubuntu桌面系统配置 ubuntu远程桌面配置如下 第一步&#xff0c;安装xrdp sudo apt-get isntall xrdp安装完检查一下服务是否可以正常启动&#xff0c; sudo systemctl status xrdp如果看到active应该就正常启动了 第二步&#xff0c;开启Ubuntu桌面共享 好接下来我们测试一…

【玩转408数据结构】线性表——线性表的顺序表示(顺序表)

知识回顾 通过前文&#xff0c;我们了解到线性表是具有相同数据类型的有限个数据元素序列&#xff1b;并且&#xff0c;线性表只是一种逻辑结构&#xff0c;其不同存储形式所展现出的也略有不同&#xff0c;那么今天我们来了解一下线性表的顺序存储——顺序表。 顺序表的定义 …

Linux:信号的处理

文章目录 信号处理 本篇总结的是关于信号的处理 信号处理 在之前有这样的观点&#xff1a;信号在合适的时候被处理好&#xff0c;当进程收到信号后&#xff0c;当前进程可能在做优先级更高的事&#xff0c;所以它来不及处理这个信号&#xff0c;那么就会把这个信号暂时保存起…

Apache 神禹(shenyu)源码阅读(一)——Admin向Gateway的数据同步(Admin端)

源码版本&#xff1a;2.6.1 单机源码启动项目 启动教程&#xff1a;社区新人开发者启动及开发防踩坑指南 源码阅读 前言 开了个新坑&#xff0c;也是第一次阅读大型项目源码&#xff0c;写文章记录。 在写文章前&#xff0c;已经跑了 Divide 插件体验了一下&#xff08;体…

SpringCloud-项目引入Nacos

一、安装Nacos服务 首先&#xff0c;我们需要从 Nacos 的官方网站下载发布版本。下载地址&#xff1a;Releases alibaba/nacos GitHub 选择合适的版本并下载&#xff0c;解压缩得到 Nacos 的安装包。 在解压后的 Nacos 目录中&#xff0c;找到 bin 文件夹。 用写字板编辑…

python学习23

前言&#xff1a;相信看到这篇文章的小伙伴都或多或少有一些编程基础&#xff0c;懂得一些linux的基本命令了吧&#xff0c;本篇文章将带领大家服务器如何部署一个使用django框架开发的一个网站进行云服务器端的部署。 文章使用到的的工具 Python&#xff1a;一种编程语言&…

Centos7离线安装MySQL5.7

卸载mariadb rpm -e --nodeps mariadb-libs可以使用rpm -qa|grep mariadb命令检测是否卸载完成。 关闭selinux 将/etc/selinux/config文件中的SELINUX设置为disabled下载MySql的相关rpm包 打开https://dev.mysql.com/downloads/mysql/ 选择Red Hat Enterprise Linux / Oracle L…

Codeforces Round 924 E. Modular Sequence

E. Modular Sequence 题意 对于一个长度为 n n n 的数组 a a a&#xff0c;定义它是 g o o d good good 的当且仅当&#xff1a; a 1 x a_1 x a1​x a i a i − 1 y a_{i} a_{i - 1} y ai​ai−1​y 或 a i a i − 1 m o d y i ≥ 2 a_{i} a_{i - 1} mod \hspace{…

kali最新最简单安装

之前都是用iso镜像文件的 今年好多东西都删库了&#xff0c;所有还是要主要资源的保存 去官网找下载 一般来说都是用虚拟机的 下载完会是一个压缩文件&#xff0c; 解压&#xff0c;然后操作之前需要先下载虚拟机 打开方式用虚拟机打开 kali就按装好了

【Java EE初阶十二】网络编程TCP/IP协议(一)

1. 网络编程 通过网络&#xff0c;让两个主机之间能够进行通信->就这样的通信来完成一定的功能&#xff0c;进行网络编程的时候&#xff0c;需要操作系统给咱们提供一组API&#xff0c;通过这些API来完成编程&#xff1b;API可以认为是应用层和传输层之间交互的路径&#xf…

STM32 cubemx配置DMA+空闲中断接收不定长数据

文章目录 前言一、串口空闲中断二、DMA空闲中断接收不定长数据实现思路三、STM32Cubemx配置DMA空闲中断接收不定长数据四、代码编写总结 前言 本篇文章给大家讲解一下DMA串口空闲中断接收串口不定长数据&#xff0c;之前我们也是讲解过串口接收不定长数据的&#xff0c;那么本…