本帖最后由 sumoon_yao 于 2022-4-11 15:58 编辑
官方板一般只做参考,通常我们会根据自己的项目要求重新设计板子,相应的软件系统也会跟随硬件而改变,那就需要获得系统源码重新编译我们需要的运行系统。
首先去NXP官方仓库下载源码,下载内核 此时你所要做的就是耐心等待,取决于你的网速,1小时到数小时不等。 再下载uboot源码: 吐槽一下,这两个源码的版本虽然比较老了,但都在.git/objects/pack目录,linux-imx源码有个近5G的文件,uboot-imx源码有个近200M的文件,这个目录下的文件不是必须的,完全可以从代码仓删除掉啊。不知道其它版本有没有这个问题。
从官网下载交叉编译工具: https://www.linaro.org/downloads/ 实际是从下面这个网站下载的: https://developer.arm.com/tools-and-software/open-source-software/developer-tools/gnu-toolchain/gnu-a/downloads 根据开发平台选择相应的版本,我的系统是X86的ubuntu18.04,下载了下面这个版本: gcc-arm-none-eabi-7-2017-q4-major-linux.tar.bz2 将软件包用tar命令解压缩: sudo tar xvf gcc-arm-none-eabi-7-2017-q4-major-linux.tar.bz2 改目录名:sudo mv gcc-arm--none-eabi-7-2017-q4-major-linux gcc-arm 增加搜索路径:vi ~/.bashrc 在文件最后增加一行:export PATH=~/gcc-arm/bin: $PATH 注意:后面编译的时候要用到root权限,ubuntu18.04或以上版本要使用sudo获得root权限,但环境变量没有继承,需要在/etc/sudoers文件中做设置。
编译环境配置好之后就可以编译内核和uboot了,首先进入前面下载的内核目录linux-imx。 先清理掉中间文件,保证所有文件重新编译: sudo make ARCH=arm CROSS_COMPILE=arm-none-eabi- distclean
使用官方的配置文件作为缺省配置文件: sudo make ARCH=arm CROSS_COMPILE=arm-none-eabi- imx_v7_defconfig
最重要一步,编译内核、设备树和模块文件,这个模块文件是指某些驱动功能不在内核启动时加载,而是在系统启动完成后由用户根据需要手动加载驱动程序。 sudo make ARCH=arm CROSS_COMPILE=arm-none-eabi- 编译完成后在arch/arm/boot目录下就有zImage文件,dts目录下有设备树文件,将zImage文件和imx6ul-14x14-evk.dtb设备树文件拷贝到烧写平台。
接着编译uboot。 进入uboot-imx目录,同样的先清理掉中间文件,保证所有文件重新编译: sudo make ARCH=arm CROSS_COMPILE=arm-none-eabi- distclean 使用官方的配置文件作为缺省配置文件: sudo make ARCH=arm CROSS_COMPILE=arm-none-eabi- mx6ull_14x14_evk_defconfig 编译uboot。 sudo make ARCH=arm CROSS_COMPILE=arm-none-eabi- 编译完成后在当前目录下就得到了系统启动文件uboot.imx,同样的将该文件拷贝到烧写平台。
将设备树文件imx6ul-14x14-evk.dtb改名为zImage-imx6ul-14x14-evk.dtb,将启动文件uboot.imx改名为u-boot-imx6ull14x14evk_sd.imx,内核文件zImage不用改名,将这3个镜像文件覆盖烧写工具目录下Profiles/Linux/OS Firmware/files子目录中的3个同名文件,再次烧写镜像文件,烧写完成后按下板子上的复位按钮,从系统启动信息中我们可以看到新的镜像文件已成功烧写。
|