由于本人只在一个主机(ubuntu14.04)上进行开发项目,所以以下的配置基于全局。
1、交叉编译环境搭建
(1)解压gcc-linaro-arm-linux-gnueabihf-4.9-2014.09_linux.tar.gz到/opt目录下。
(2)在/etc/environmentzh中添加交叉编译工具链
PATH="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/opt/gcc-4.4.4-glibc-2.11.1-multilib-1.0/arm-fsl-linux-gnueabi/bin:/opt/gcc-linaro-arm-linux-gnueabihf-4.9-2014.09_linux/bin"
然后退出后source /etc/environment,使配置环境生效。
(3)在终端上输入arm-linux-gnueabihf-,然后按键盘的TAB键,可以看到he很多以arm-linux-gnueabihf-开头的命令。安装完毕后,如果使用交叉编译工具编译C程序时出现No such file or directoryshi时,则需要安装ia32-libs,具体操作如下:
sudo apt-get install ia32-libs
2、固件编译方法:
2.1 uboot编译:
U-boot的源码包是:uboot-src-d09434a.tar.gz
注:文件命名d09434a,表示源码提交版本。
(1)首先将该源码包复制到Ubuntu系统中,然后进行解压缩。
解压缩命令: tar zxvf uboot-src-d09434a.tar.gz
(2)进入uboot-imx目录,运行built-uboot-zlg-test.sh脚本
即可进行uboot的编译。需要注意的是,该脚本必须携带
参数运行,支持的编译选项如下所示:
mx6g2c_nand_128m_defconfig
mx6g2c_nand_256m_defconfig
mx6g2c_sd_128m_defconfig
mx6g2c_sd_256m_defconfig
a6g2c_nand_128m_defconfig
a6g2c_nand_256m_defconfig
a6g2c_sd_128m_defconfig
a6g2c_sd_256m_defconfig
这些选项的构成为“型号(_nand/sd)_内存容量_defconfig”。
其中,
nand —— 代表固件将被烧写到NAND Flash,系统将从NAND启动;
sd —— 代表固件将被烧写到SD卡上,系统将直接从SD卡启动。
用户根据所购产品的型号确定好相应的选项后,可参考下面的
命令开始编译:
./built-uboot-zlg-test.sh mx6g2c_nand_128m_defconfig
(3)编译完毕后,生成的uboot固件存放路径为:
mx6g_built/*_defconfig/u-boot.imx
2.2 内核编译方法
内核的源码包是:linux-src-a0722e0.tar.gz
注:文件命名a0722e0,表示源码提交版本。
(1)首先将该源码包复制到Ubuntu系统中,然后进行解压缩:
解压缩命令: tar zxvf linux-src-a0722e0.tar.gz
(2)进入A7-linux-src目录,运行下面的命令编译生成内核以及设备树文件。
./built-zImage.sh
所有型号的产品都共用一份zImage,但设备树文件需要依据产品型号正确选择。iMX6系列产品的设备树文件如下所示:
arch/arm/boot/dts:
imx6g2c-128m.dtb
imx6g2c-csi-128m.dtb
imx6g2c-800x480-128m.dtb
imx6g2c-256m.dtb
imx6g2c-csi-256m.dtb
imx6g2c-800x480-256m.dtb
a6g2c-wifi-128m.dtb
a6g2c-wifi-bt-128m.dtb
a6g2c-wifi-256m.dtb
a6g2c-wifi-bt-256m.dtb
命名构成:(产品系列)处理器型号-特性-内存大小.dtb。
其中,
800x480 屏幕分辨率
wifi-bt 支持wifi和bluetooth;
csi 支持camera功能。
用户依据所购产品的型号确定好相应的设备树文件后,将其复制到windows主机中,重命名为烧写工具目录中同名设备树文件,并替换设备树。即可使用固件烧写工具进行固件的更新。
注意1:使用A6G2C系列产品的客户,在编译内核之前请先修改build-zImage.sh脚本,将
make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- epc_m6g2c_defconfig &&
注释掉,然后将下面的代码取消注释
#make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- epc_m6g2c_wifi_defconfig &&
然后再执行built-zImage.sh脚本进行内核编译。
注意2:
#make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- epc_m6g2c_no_encrypt_defconfig &&
#make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- epc_m6g2c_wifi_no_encrypt_defconfig &&
上述两个指令只适合进行芯片级开发的用户,因为原始的处理器没有进行过授权操作,是无法烧写致远的固件的。
对于此类用户,请根据是否使用WIFI/蓝牙功能来进行选择使用其中一个编译指令。具体做法请参考“注意1”。
3、其它工具的编译方法
QT编译工具:qt-m6g2c.tar.bz2
解压命令:sudo tar jxvf qt-m6g2c.tar.bz2 -C /opt
触摸屏校准软件和库:tslib.tar.bz2
解压命令:sudo tar jxvf tslib.tar.bz2 -C /opt
其它说明:
qt-m6g2c.tar.bz2和tslib.tar.bz2编译时指定的安装路径为/opt目录。如果要直接使用这两个工具的
话,请不要修改上面解压命令的指定路径。
参考:周立功资料包