一、准备工作
1、源码获取。
- 飞凌提供:
飞凌以NXP适配后的uboot,linux为基础自己适配了一个版本的,可参考飞凌提供的手册下载。 - NXP官方:
uboot: https://source.codeaurora.org/external/imx/uboot-imx
linux: https://source.codeaurora.org/external/imx/linux-imx
2、交叉编译器。
同样可以从飞凌提供手册上找到下载路径,或NXP官网下载。
fsl-imx-x11-glibc-x86_64-meta-toolchain-qt5-cortexa9hf-neon-toolchain-4.1.15-2.1.0.sh
3、mfgtool2下载工具。
NXP提供的一种通过OTG下载的工具。
4、开发环境虚拟机下安装的ubuntu(环境搭建略)。
5、安装交叉编译链。
- 工作目录新建imx6q/cross_compile
- chmod +x 为下载好的交叉编译器添加执行权限
- 执行安装到第一步创建的目录中。
6、解压源码。
- 把第一步下载好的源码放到 imx6q 目录下
- tar -xjvf uboot-2016.tar.bz2
- tar -xjvf linux-4.1.15.tar.bz2
7、imx6q目录结构如下:
hs:~/imx6q$ tree -L 1
.
├── cross_compile
├── linux-4.1.15
└── u-boot-2016.03-r0
二、开始上手编译
1、编译uboot
hs:~/imx6q/u-boot-2016.03-r0$ source ../cross_compile/environment-setup-cortexa9hf-neon-poky-linux-gnueabi
hs:~/imx6q/u-boot-2016.03-r0$ make mx6q-c-sabresd_defconfig
#
# configuration written to .config
#
hs:~/imx6q/u-boot-2016.03-r0$ make -j5
这里省略了编译输出。
- 执行的第一个命令设置了相关环境变量,最重要的是CROSS_COMPILE
- 配置uboot, mx6q-c-sabresd_defconfig 在 configs/下。是飞凌添加的。
- make 编译。
1.2、编译结果,uboot目录下的 u-boot.imx。
2、编译 linux
hs:~/imx6q/linux-4.1.15$ source ../cross_compile/environment-setup-cortexa9hf-neon-poky-linux-gnueabi
hs:~/imx6q/linux-4.1.15$ make imx_v7_defconfig
hs:~/imx6q/linux-4.1.15$ make zImage -j8
hs:~/imx6q/linux-4.1.15$ make dtbs
2.1、编译结果
- arch/arm/boot/zImage
- arch/arm/boot/dts/imx6q-c-sabresd.dtb
三、下载到板卡
- 解压mfgtool2。
- 替换 mfgtools\Profiles\Linux\OS Firmware\files\okmx6-c 的 u-boot-6q.imx, zImage
- 点击 mfgtool2-mx6qdl-c-sabresd-emmc.vbs
- 板卡拨码开关打到OTG模式,usb连接PC,上电自动下载。