
声明:本次只是记录本人linux学习中留下的痕迹及问题,顺便监督自己的学习。本次学习是根据正点原子的学习视频。在此,感谢原子哥给予的支持!!!多谢!!
开发环境:Ubuntn 16.04 LTS
开发板:飞凌OKMX6UL-C EMMC板
Uboot:u-boot-2016.03 ftp://ftp.denx.de/pub/u-boot/
交叉编译器:gcc-linaro-4.9.4-2017.01
环境变量设置如下:
export PATH=$PATH:/usr/local/arm/gcc-linaro-4.9.4-2017.01-x86_64_arm-linux-gnueabihf/bin
一、UBOOT 移植
在选择Uboot版本中,出现一些小插曲。一开始打算采用最新的uboot的版本,但经过编译后,发现产生的uboot.bin无法使用。因此,最后还是保持2016.03的老版本。其中,比对uboot源码后,也没有找出哪些差别,就没有深入挖掘,等空下来,再研究下!
1.1 解压uboot
tar jxvf u-boot-2016.03.tar.bz2
1.2 编译uboot
(1)mx6ul_forlnx_emmc.sh脚本实现,编译脚本如下
#!/bin/bash make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- distclean make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- mx6ul_14x14_evk_defconfig make V=1 ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- -j16
编译后,工程下将会产生u-boot.bin。此文件是不带IVT和Boot Data,数据段。
(2) BIN引导头部 IMX
本次实验采用的SD/EMMC启动方式,即IVT偏移为1Kbyte,EMMC/SD(1KByte)+ IVT + Boot Data + DCD = 4KByte,因此IVT + Boot Data + DCD = 3KByte
详细了解IVT、BootData、DCD数据内容可以参考正点原子教程,我这边就不班门弄斧了。
本次实验采用的数据如下所示:(此处完全借用正点原子的imxdownload.c和imxdownload.h),只是将ivtdcd数据按照IMX6UL(飞凌开发板、SDRAM 512M、EMMC/SD卡启动)
const int fl_imx6_512mb_ivtdcd_table[256] = {
0x402000D1,0x87800000,0x00000000,0x877FF42C,0x877FF420,0x877FF400,0x00000000,0x00000000,
0x877FF000,0x00051000,0x00000000,0x40F001D2,0x04EC01CC,0x68400C02,0xFFFFFFFF,0x6C400C02,
0xFFFFFFFF,0x70400C02,0xFFFFFFFF,0x74400C02,0xFFFFFFFF,0x78400C02,0xFFFFFFFF,0x7C400C02,
0xFFFFFFFF,0x80400C02,0xFFFFFFFF,0x84400C02,0xFFFFFFFF,0xB4040E02,0x00000C00,0xAC040E02,
0x00000000,0x7C020E02,0x08000000,0x50020E02,0x30000000,0x4C020E02,0x30000000,0x90040E02,
0x30000000,0x88020E02,0x30000000,0x70020E02,0x00000000,0x60020E02,0x30000000,0x64020E02,
0x30000000,0xA0040E02,0x30000000,0x94040E02,0x00000200,0x80020E02,0x38000000,0x84020E02,
0x30000000,0xB0040E02,0x00000200,0x98040E02,0x30000000,0xA4040E02,0x30000000,0x44020E02,
0x30000000,0x48020E02,0x30000000,0x1C001B02,0x00800000,0x00081B02,0x030039A1,0x0C081B02,
0x07000700,0x3C081B02,0x45014941,0x48081B02,0x46454040,0x50081B02,0x4D524040,0x1C081B02,
0x33333333,0x20081B02,0x33333333,0x2C081B02,0x333333F3,0x30081B02,0x333333F3,0xC0081B02,
0x12209200,0x58081B02,0x000F0000,0xB8081B02,0x00080000,0x04001B02,0x2D000200,0x08001B02,
0x0030331B,0x0C001B02,0xF3546B67,0x10001B02,0x830A8EB6,0x14001B02,0xDB00FF01,0x18001B02,
0x40172100,0x1C001B02,0x00800000,0x2C001B02,0xD2260000,0x30001B02,0x23106B00,0x40001B02,
0x4F000000,0x00001B02,0x00001884,0x1C001B02,0x32800002,0x1C001B02,0x33800000,0x1C001B02,
0x31800400,0x1C001B02,0x30802015,0x1C001B02,0x40800004,0x20001B02,0x00080000,0x18081B02,
0x27020000,0x04001B02,0x2D550200,0x04041B02,0x06100100,0x1C001B02,0x00000000,0x00000000,
0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,
0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,
0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,
0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,
0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,
0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,
0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,
0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,
0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,
0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,
0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,
0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,
0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,
0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,
0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000
};
通过编译产生imxdownload,可以用于uboot的SD启动文件load.imx。
gcc -o imxdownload imxdownload.c
将SD卡连接虚拟机后,将会在/dev/sdx设备(本次实验sdb),通过以下命令后,u-boot.bin文件+IVI DCD数据后,烧写到SD卡。
./imxdownload u-boot.bin /dev/sdb
开发板设置SD启动,uboot得以正常启动。
下一节将继续完善 LCD 5.6、网络驱动更改。