目录
一、U-Boot和Linux版本问题
- NXP官方原版:不适配正点原子的板子:A盘\1、例程源码\4、NXP官方原版Uboot和Linux
- Linux内核工程:linux-imx-rel_imx_4.1.15_2.1.0_ga.tar.bz2
- Uboot源码工程:uboot-imx-rel_imx_4.1.15_2.1.0_ga.tar.bz2
- 正点原子已经修改好完整的:A盘\1、例程源码\3、正点原子Uboot和Linux出厂源码
- Linux内核工程:linux-imx-4.1.15-2.1.0-gb8ddbbc-v1.3.tar.bz2
- Uboot源码工程:uboot-imx-2016.03-2.1.0-g4475ea1-v1.3.tar.bz2
- 未全部改好的用于学习中修改的:A盘\1、例程源码\11、开发板教程对应的uboot和linux源码
- Linux内核工程:linux-imx-rel_imx_4.1.15_2.1.0_ga_alientek.tar.bz2
- Uboot源码工程:uboot-imx-rel_imx_4.1.15_2.1.0_ga_alientek.tar.bz2
二、初次编译Linux
编译正点原子完整Linux内核:linux-imx-4.1.15-2.1.0-gb8ddbbc-v1.3.tar.bz2
- 文件目录:
A盘\1、例程源码\3、正点原子Uboot和Linux出厂源码
- 解压:
tar -vxjf linux-imx-4.1.15-2.1.0-gb8ddbbc-v1.3.tar.bz2
-
- 解压:
tar -vxf linux-imx-4.1.15-2.1.0-gb8ddbbc-v1.3.tar
- 解压:
- 编写编译脚本文件:imx6ull_liefyuan_emmc.sh
imx6ull_liefyuan_emmc.sh
#!/bin/sh
make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- distclean
make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- imx_v7_defconfig
make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- menuconfig
make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- all -j16
- 修改权限:
sudo chmod 777 imx6ull_liefyuan_emmc.sh
- 编译内核:
./imx6ull_liefyuan_emmc.sh
- 出现对话框:按两下ESC键
编译成功后最后几行信息:
LD [M] fs/binfmt_misc.ko
LD [M] drivers/usb/serial/usbserial.ko
LD [M] drivers/usb/serial/ftdi_sio.ko
LD [M] drivers/video/fbdev/mxc/mxc_dcic.ko
LD [M] fs/fat/msdos.ko
LD [M] fs/configfs/configfs.ko
LD [M] lib/crc-itu-t.ko
LD [M] fs/nls/nls_iso8859-15.ko
LD [M] sound/core/snd-rawmidi.ko
LD [M] lib/libcrc32c.ko
LD [M] sound/usb/snd-usb-audio.ko
LD [M] sound/usb/snd-usbmidi-lib.ko
LD [M] fs/udf/udf.ko
LD [M] sound/core/snd-hwdep.ko
LD [M] lib/crc7.ko
LD [M] fs/isofs/isofs.ko
AS arch/arm/boot/compressed/piggy.lzo.o
LD arch/arm/boot/compressed/vmlinux
OBJCOPY arch/arm/boot/zImage
Kernel: arch/arm/boot/zImage is ready
编译出来的文件
- 目录:arch/arm/boot
- zImage文件就是最终烧录的内核压缩文件
三、初次编译Uboot
编译正点原子完整Uboot内核:uboot-imx-2016.03-2.1.0-g4475ea1-v1.3.tar.bz2
- 文件目录:
A盘\1、例程源码\3、正点原子Uboot和Linux出厂源码
- 解压:
tar -vxjf uboot-imx-2016.03-2.1.0-g4475ea1-v1.3.tar.bz2
- 解压:
tar -vxf uboot-imx-2016.03-2.1.0-g4475ea1-v1.3.tar
- 执行编译命令:
make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- distclean
make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- mx6ull_14x14_ddr512_emmc_defconfig
make V=1 ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- -j16
编译完成最后几段信息:
arm-linux-gnueabihf-gcc -E -Wp,-MD,board/freescale/mx6ullevk/.imximage-ddr512.cfg.cfgtmp.d -nostdinc -isystem /usr/local/arm/gcc-linaro-4.9.4-2017.01-x86_64_arm-linux-gnueabihf/bin/../lib/gcc/arm-linux-gnueabihf/4.9.4/include -Iinclude -I./arch/arm/include -include ./include/linux/kconfig.h -D__KERNEL__ -D__UBOOT__ -D__ARM__ -marm -mno-thumb-interwork -mabi=aapcs-linux -mword-relocations -fno-pic -mno-unaligned-access -ffunction-sections -fdata-sections -fno-common -ffixed-r9 -msoft-float -pipe -march=armv7-a -x c -o board/freescale/mx6ullevk/imximage-ddr512.cfg.cfgtmp board/freescale/mx6ullevk/imximage-ddr512.cfg
./tools/mkimage -n board/freescale/mx6ullevk/imximage-ddr512.cfg.cfgtmp -T imximage -e 0x87800000 -d u-boot.bin u-boot.imx
Image Type: Freescale IMX Boot Image
Image Ver: 2 (i.MX53/6/7 compatible)
Mode: DCD
Data Size: 385024 Bytes = 376.00 kB = 0.37 MB
Load Address: 877ff420
Entry Point: 87800000
为了执行编译Uboot方便,将三个命令写成一个.sh文件
imx6ull_liefyuan_emmc.sh
make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- distclean
make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- mx6ull_14x14_ddr512_emmc_defconfig
make V=1 ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- -j16
要想执行这个shell文件需要给予其权限。
- 给予权限:
chmod 777 imx6ull_liefyuan_emmc.sh
- 执行脚本:
./imx6ull_liefyuan_emmc.sh
编译出来的文件
本目录下就会出现新的有用文件:
- uboot.bin:编译出来的 uboot二进制文件,uboot是个裸机程序,因此需要在其前面加上头部(IVT、DCD等数据)才能在I.MX6U上执行
- uboot.imx:添加头部以后的 u-boot.bin,u-boot.imx 就是我们最终要烧写到开发板中的 uboot 镜像文件