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

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

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

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

4)、添加内容如下:

ARCH = arm

CROSS_COMPILE = arm-none-linux-gnueabihf-

见下图:

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

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”目录下的文件和文件夹

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

2)、输入“vi stm32mp157d_atk.sh回车

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

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线程编译

见下图:

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

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

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

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

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

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

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

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

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

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

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

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

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

发现生成了uImage文件

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

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

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

见下图:

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

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”目录下

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

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

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

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

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

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

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

见下图:

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

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.

见下图:

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

12)、按“Y”,保存

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

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

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

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

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

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

输入“make menuconfig回车

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

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

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

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

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

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

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

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

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

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

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

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

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

你可能感兴趣的:(产品研发,linux,服务器,STM32MP157,经验分享,学习)