正点原子IMX6ULL移植Linux(4)---移植Linux

开发板:IMX6ULL ALPHA V2.2
NXP-uboot:2022.04
NXP-linux:6.6
gcc交叉编译器:7.5.0

根目录下增加.vscode目录及settings.json文件

{
    "search.exclude": {
        "**/node_modules": true,
        "**/bower_components": true,
        "** /*.o": true,
        "**/*.su": true,
        "** /*.cmd": true,
        "**Documentation": true,
        /* 屏蔽不用的架构相关的文件 */
        "arch/alpha": true,
        "arch/arc": true,
        "arch/arm64": true,
        "arch/avr32": true,
        "arch/[b-z]*": true,
        "arch/arm/plat*": true,
        "arch/arm/mach-[a-h]*": true,
        "arch/arm/mach-[n-z]*": true,
        "arch/arm/mach-i[n-z]*": true,
        "arch/arm/mach-m[e-v]*": true,
        "arch/arm/mach-k*": true,
        "arch/arm/mach-l*": true,
        /* 屏蔽排除不用的配置文件 */
        "arch/arm/configs/[a-h, j-z]*": true,
        "arch/arm/configs/imxr*": true,
        "arch/arm/configs/i[n,x]*": true,
        /* 屏蔽掉不用的 DTB 文件 */
        "arch/arm/boot/dts/[a-m, o-z]*": true,
        "arch/arm/boot/dts/nxp/imx/imx[0-5,7,9]*": true,
        "arch/arm/boot/dts/nxp/imx/imx6[a-k, m-t, v-z]*": true,
    },
    "files.exclude": {
        "**/.git": true,
        "**/.svn": true,
        "**/.hg": true,
        "**/CVS": true,
        "**/.DS_Store": true,
        "**/*.o": true,
        "**/*.su": true,
        "**/*.cmd": true,
        "**/*.tmp": true,
        "Documentation": true,
        /* 屏蔽不用的架构相关的文件 */
        "arch/alpha": true,
        "arch/arc": true,
        "arch/arm64": true,
        "arch/avr32": true,
        "arch/[b-z]*": true,
        "arch/arm/plat*": true,
        "arch/arm/mach-[a-h]*": true,
        "arch/arm/mach-[n-z]*": true,
        "arch/arm/mach-i[n-z]*": true,
        "arch/arm/mach-m[e-v]*": true,
        "arch/arm/mach-k*": true,
        "arch/arm/mach-l*": true,
        /* 屏蔽排除不用的配置文件 */
        "arch/arm/configs/[a-h, j-z]*": true,
        "arch/arm/configs/imxr*": true,
        "arch/arm/configs/i[n,x]*": true,
        /* 屏蔽掉不用的 DTB 文件 */
        "arch/arm/boot/dts/[a-m, o-z]*": true,
        "arch/arm/boot/dts/nxp/imx/imx[0-5,7,9]*": true,
        "arch/arm/boot/dts/nxp/imx/imx6[a-k, m-t, v-z]*": true,
    },
    "files.associations": {
        "of_gpio.h": "c",
        "smscphy.h": "c",
        "memory": "c",
        "random": "c",
        "array": "c",
        "*.tcc": "c",
        "istream": "c",
        "functional": "c",
        "tuple": "c",
        "utility": "c",
        "etherdevice.h": "c",
        "io.h": "c"
    }
}

“search.exclude”是屏蔽不需要搜索的文件,加快搜索速度,
“files.exclude”是在屏蔽不需要再左侧文件栏显示的文件。

由笔者根据正点原子教程及新版NXP-Linux源码改写而来。

修改顶层Makefile文件

在这里插入图片描述

ARCH 			?= ARM
# 最后无空格
CROSS_COMPILE 	?= arm-linux-gnueabihf-

编译NXP官方Linux镜像

配置文件的位置在 arch/arm/configs/imx_v7_defconfig

生成 .config文件

make imx_v7_defconfig

编译

make -j12

设置uboot参数

设置参数bootcmd

setenv bootcmd mmc dev 1; fatload mmc 1:1 80800000 zImage; fatload mmc 1:1 83000000 my_mx6ull.dtb; bootz 80800000 - 83000000;

bootcmd是默认启动时使用的命令,上述设置的是emmc启动,若想默认从网络启动,更改该参数即可,更改如下:

setenv bootcmd 'tftp 80800000 zImage; tftp 83000000 my_mx6ull.dtb; bootz 80800000 - 83000000'

设置参数bootargs

setenv bootargs 'console=ttymxc0,115200 root=/dev/mmcblk1p2 rootwait rw'

自定义网络启动参数

setenv boottftp 'tftp 80800000 zImage; tftp 83000000 my_mx6ull.dtb; bootz 80800000 - 83000000'

保存设置

saveenv

拷贝及网络启动测试

请先搭建tftp服务器!此处不做展开,可以参考正点原子IMX6ULL手册V1.81 716页

拷贝设备树文件.dtb及linux镜像到tftp文件夹

请自行决定是否要更改文件名称,此处更改了设备树文件名,与上述uboot自定义网络启动参数对应即可。

拷贝设备树
cp arch/arm/boot/dts/nxp/imx/imx6ull-14x14-evk-emmc.dtb /home/oyry/linux/tftpboot/my_mx6ull.dtb
拷贝linux镜像
cp arch/arm/boot/zImage /home/oyry/linux/tftpboot/

网络启动

在uboot页面执行:

run boottftp

启动成功

在这里插入图片描述

修改设备树

我的做法是直接修改官方的设备树文件,不再备份。参考正点原子

设备树的目录为:arch/arm/boot/dts/nxp/imx/

打开 imx6ull-14x14-evk-emmc.dts

修改
在这里插入图片描述

网络和LCD修改

网络修改

设备树的修改可以参考uboot,顶层配置文件可以不增加CONFIG_PHY_SMSC=y,驱动不需要修改,除此之外,还需要修改
https://blog.csdn.net/qq_58967337/article/details/146118337

需要在imx6ul-14x14-evk.dtsi中包含头文件
#include “imx6ull-pinfunc-snvs.h”

需要将compatible = “ethernet-phy-id0022.1560”;屏蔽,否则会偶尔出现网络link is down的问题

在这里插入图片描述

LCD修改

LCD的修改可以参照uboot

https://blog.csdn.net/qq_58967337/article/details/146118337

编译与网络启动

编译Linux镜像和设备树

make -j12

只编译设备树

make dtbs

将编译好的Linux镜像和设备树复制到tftp目录下,使用网络启动

run boottftp

启动后可以使用 ifconfig -a 查看网卡信息

修改ip,eth0为网卡

ifconfig eth0 xxx.xxx.xxx.xxx

修改子网掩码

ifconfig eth0 netmask 255.255.255.0

此时还有一个问题,就是每次重启ip都有一个默认值,如果想使用自定义ip,每次进来都要修改,这就要先移植根文件系统了,有了根文件系统就能够设置开机自动配置了。

持续更新中。。。。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值