iMX8MM linux5.15.32移植


我移植的板子是讯为i.MX8MM开发板,参考板为官方 8MMINILPD4-EVK开发板。

  1. iMX8MM uboot2021.04 linux5.15.32移植
  2. iMX8MM启动流程
  3. iMX8MM u-boot2021.04移植
  4. iMX8MM linux5.15.32移植
  5. iMX8MM buildroot-2022.02.5构建根文件系统

1. 添加板子

Linux移植我们只需要添加配置文件和设备树。

1.1 添加配置文件

官方是相同arm架构的板子公用一个配置文件,自己板子的配置文件最好单独存一份,每次修改配置最好保存,在源码目录下执行下列命令创建我们自己板子的配置文件。

$ cd arch/arm64/configs/
$ cp imx_v8_defconfig imx8mm_topeet_defconfig

1.2 添加设备树

复制参考板的设备树文件,在源码目录下执行下列命令创建我们自己板子的设备树文件。

$ cd arch/arm64/boot/dts/freescale/
$ cp imx8mm-evk.dts imx8mm-topeet.dts
$ cp imx8mm-evk.dtsi imx8mm-topeet.dtsi

修改arch/arm64/boot/dts/freescale/imx8mm-topeet.dts文件

// 文件arch/arm64/boot/dts/freescale/imx8mm-topeet.dts

#include "imx8mm-evk.dtsi"
// 改为
#include "imx8mm-topeet.dtsi"

//根节点下的这两个属性改为
/ {
	model = "FSL i.MX8MM TOPEET board";
	compatible = "fsl,imx8mm-topeet", "fsl,imx8mm";
};

修改arch/arm64/boot/dts/freescale/Makefile文件

# 在文件最后加下面一行
dtb-$(CONFIG_ARCH_MXC) += imx8mm-topeet.dtb

2. 修改设备树

这部分和uboot一样,修改网卡和SD卡的一个引脚。

2.1 修改网卡

讯为i.MX8MM开发板使用的phy芯片和官方iMX8MM EVK开发板是同系列,只有设计上略有不同。讯为i.MX8MM开发板的phy芯片复位引脚接到了GPIO2_IO10上,所以要对phy配置复位引脚。因为这个引脚官方开发板被usdhc1用在了WiFi上,我们先不使用WiFi把usdhc1失能掉。

// 文件arch/arm64/boot/dts/freescale/imx8mm-topeet.dtsi

&iomuxc {
	pinctrl_fec1: fec1grp {
		fsl,pins = <
			/* MX8MM_IOMUXC_SAI2_RXC_GPIO4_IO22		0x19 */
			MX8MM_IOMUXC_SD1_RESET_B_GPIO2_IO10		0x19
		>;
	};
};
// 文件arch/arm64/boot/dts/freescale/imx8mm-topeet.dts

&usdhc1 {
	// status这个属性改为disabled
	status = "disabled";
};

2.2 修改SD卡

讯为i.MX8MM开发板和官方iMX8MM EVK开发板SD卡,只有SD2_DET引脚不同。讯为i.MX8MM开发板SD2_DET引脚接到了GPIO2_IO12上,所以要对SD配置CD引脚。

// 文件arch/arm64/boot/dts/freescale/imx8mm-topeet.dtsi

&usdhc2 {
	// 更改cd引脚属性
	cd-gpios = <&gpio2 12 GPIO_ACTIVE_LOW>;
};

&iomuxc {
	pinctrl_usdhc2_gpio: usdhc2grpgpiogrp {
		fsl,pins = <
			MX8MM_IOMUXC_SD2_CD_B_GPIO2_IO12	0x1c4
		>;
	};
};

2.3 关闭屏幕

因为我没有屏幕,所以需要失能屏幕。

// 文件arch/arm64/boot/dts/freescale/imx8mm-topeet.dtsi

&lcdif {
	status = "disabled";
};

&mipi_dsi {
	status = "disabled";
};

3. 编译验证

3.1 编译

利用之前安装的工具链,执行下列命令完成编译。

$ make ARCH=arm64 CROSS_COMPILE=aarch64-linux-gnu- imx8mm_topeet_defconfig
$ make ARCH=arm64 CROSS_COMPILE=aarch64-linux-gnu- menuconfig
$ make ARCH=arm64 CROSS_COMPILE=aarch64-linux-gnu- -j12

3.2 验证

进入uboot命令行设置服务器地址,并保存。

=> setenv serverip 192.168.0.100
=> saveenv

arch/arm64/boot/Imagearch/arm64/boot/dts/freescale/imx8mm-topeet.dtb复制到tftp服务器文件夹中,重启开发板会自动下载linux镜像和设备树并启动。
在这里插入图片描述
linux启动成功,无法挂载NFS文件系统。
在这里插入图片描述

4. 总结

linux移植就完成了,下面将利用buildroot构建一个根文件系统。本文仅供学习参考,如有问题欢迎指正。

移植源码获取:

git clone https://github.com/Sonboy97/linux.git -b imx
版本:21e809b958baca89d0e0e7c1668408e0ae0e00bd
  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Sonboy哦

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值