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设备树,暂时还不能烧录。

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

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

相关文章

回归预测模型:MATLAB岭回归和Lasso回归

1. 岭回归和Lasso回归的基本原理 1.1 岭回归: 岭回归(Ridge Regression) 是一种用于共线性数据分析的技术。共线性指的是自变量之间存在高度相关关系。岭回归通过在损失函数中添加一个L2正则项( λ ∑ j 1 n β j 2 \lambda \s…

JavaWeb:关于登录认证的简单拓展

前提介绍 本文基于文章-------JavaWeb:SpringBootWeb登录认证 --黑马笔记 -------再做简单拓展 如果没有关于登录认证知识的基础,可以先看上面所说的的文章,文章在专栏javaweb中,下面我为了大家观看,直接放了链接。…

2024年华为OD机试真题-堆内存申请-Python-OD统一考试(C卷)

题目描述: 有一个总空间为100字节的堆,现要从中新申请一块内存,内存分配原则为优先紧接着前一块已使用内存分配空间足够且最接近申请大小的空闲内存。 输入描述: 输入: 第1行是1个整数,表示期望申请的内存字节数; 第2到N行是用空格分割的两个整数,表示当前已分配的内存…

26. 可变参数和Collection集合工具类

可变参数与Collections 1. 可变参数1. 概述2. 格式3. 代码示例4. 注意事项 2. Collections集合工具类2.1 概述2.2 方法2.3 代码示例2.4 注意事项 1. 可变参数 1. 概述 可变参数(Variable Arguments)是指在参数列表中允许传入不定个数的参数。在许多编程…

《动手学深度学习(PyTorch版)》笔记7.6

注:书中对代码的讲解并不详细,本文对很多细节做了详细注释。另外,书上的源代码是在Jupyter Notebook上运行的,较为分散,本文将代码集中起来,并加以完善,全部用vscode在python 3.9.18下测试通过&…

如何在CentOS7上使用防火墙保护Docker容器的端口

防火墙设置对Docker容器内开放的端口无效? 在主机或虚机上运行Docker容器时,即便主机启用了firewalld服务,仍然存在一些安全隐患,尤其是当Docker容器内打开端口并监听0.0.0.0时,存在即使通过firewall-cmd配置了阻止某…

前端主流框架:项目运行命令 npm 详解

作为一位资深前端开发,我对npm(Node Package Manager)的使用有着深入的了解。npm是Node.js的包管理器,用于安装、管理和删除各种前端库和工具。现在,让我们深入了解npm在Vue、React、Angular和Vue 3项目中的一些基本使…

【软件工程导论】实验二——编制数据字典(数字化校园系统案例分析)

数字化校园系统案例分析 问题定义实验内容编制内容1数据项数据流处理逻辑数据存储 2外部实体 问题定义 数字化校园系统期望以数字化信息和网络为基础,在计算机和网络技术上建立起对教学、科研、管理、技术服务、生活服务等校园信息的收集、处理、整合、存储、传输和…

嵌入式Qt 第一个Qt项目

一.创建Qt项目 打开Qt Creator 界面选择 New Project或者选择菜单栏 【文件】-【新建文件或项目】菜单项 弹出New Project对话框,选择Qt Widgets Application 选择【Choose】按钮,弹出如下对话框 设置项目名称和路径,按照向导进行下一步 选…

EMC学习笔记(二十六)降低EMI的PCB设计指南(六)

降低EMI的PCB设计指南(六) 1.PCB布局1.1 带键盘和显示器的前置面板PCB在汽车和消费类应用中的应用1.2 敏感元器件的布局1.3 自动布线器 2.屏蔽2.1 工作原理2.2 屏蔽接地2.3 电缆屏蔽至旁路2.4 缝隙天线:冷却槽和缝隙 tips:资料主要…

MySQL篇----第二十一篇

系列文章目录 文章目录 系列文章目录前言一、什么是乐观锁二、什么是悲观锁三、什么是时间戳四、什么是行级锁前言 前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家。点击跳转到网站,这篇文章男女通用,看懂了就去分享给你的码吧。 一、…

无人机概述及系统组成,无人机系统的构成

无人机的定义 无人驾驶航空器,是一架由遥控站管理(包括远程操纵或自主飞行)的航空器,也称遥控驾驶航空器,以下简称无人机。 无人机系统的定义 无人机系统,也称无人驾驶航空器系统,是指一架无人…

屏幕字体种类介绍

[ Script and font support in Windows ] [Windows 中的脚本和字体支持] 在Windows 2000 以前,Windows 的每个主要版本都会添加对新脚本的文本显示支持。本文介绍了每个主要版本中的更改。 Since before Windows 2000, text-display support for new scr…

树莓派4B(Raspberry Pi 4B)使用docker搭建springBoot/springCloud服务

树莓派4B(Raspberry Pi 4B)使用docker搭建springBoot/springCloud服务 前提:本文基于Ubuntu,Java8,SpringBoot 2.6.13讲解 准备工作 准备SpringBoot/SpringCloud项目jar包 用 maven 打包springBoot/springCloud项目&…

idea中vue文件如何快捷打出html标签结构,不写<

例如写一个<button></button>标签&#xff1a;快捷键如下 先写一个button&#xff0c;然后再按tab键即可自动生成一对标签。 演示&#xff1a; 步骤一&#xff1a; 步骤二&#xff1a;

PHP中读取(截取substr)字符串前N个字符或者从第几个字符开始取几个字符

html <?php $str "123456789";echo substr($str , 0 , 3);//从左边第一位字符起截取3位字符&#xff1a;结果&#xff1a;123echo substr($str , 3 , 3);//从左边第3位字符起截取3位字符&#xff1a;结果&#xff1a;456?> html <?php$rest substr(&…

【华为OD机试】 最长子字符串的长度(一)【2024 C卷|100分】

【华为OD机试】-真题 !!点这里!! 【华为OD机试】真题考点分类 !!点这里 !! 题目描述 给你一个字符串 s,首尾相连成一个环形,请你在环中找出 o 字符出现了偶数次最长子字符串的长度。 输入描述 输入是一个小写字母组成的字符串 输出描述 输出是一个整数 备注 1 ≤ s.length…

STM32 STD/HAL库驱动W25Q64模块读写字库数据+OLED0.96显示例程

STM32 STD/HAL库驱动W25Q64 模块读写字库数据OLED0.96显示例程 &#x1f3ac;原创作者对W25Q64保存汉字字库演示&#xff1a; W25Q64保存汉字字库 &#x1f39e;测试字体显示效果&#xff1a; &#x1f4d1;功能实现说明 利用W25Q64保存汉字字库&#xff0c;OLED显示汉字的时…

Rust基础拾遗--辅助功能

Rust基础拾遗 前言1.错误处理1.1 panic为什么是 Result 2. create与模块3. 宏4. 不安全代码5. 外部函数 前言 通过Rust程序设计-第二版笔记的形式对Rust相关重点知识进行汇总&#xff0c;读者通读此系列文章就可以轻松的把该语言基础捡起来。 1.错误处理 Rust 中的两类错误处理…