文章目录
备注:本文以正点原子imx6ull芯片Alpha开发板为例。参考《正点原子嵌入式linux驱动开发指南V1.4.pdf》整理的笔记。
一、下载源码、编译源码
该步骤的作用是:测试源码是否可以正常编译,如果可以确定自己的源码能够正常编译通过无误,则可以跳过此步骤
-
ARM芯片官网下载对应的U-BOOT,并解压
tar -vxjf uboot-imx-2016.03-2.1.0-g8b546e4.tar.bz2
下表格为常用目录,以及后续修改配置需要打交道的文件夹及含义
目录 含义 configs 各种芯片型号的配置文件均在此文件夹下,根据自己使用的芯片有对应的配置文件
比如:
imx6ull对应的配置文件名称为:mx6ull_xxxx_defconfig
其中:
当板卡为emmc启动方式时使用配置文件mx6ull_14x14_evk_emmc_defconfig
当板卡为nand启动方式时使用配置文件mx6ull_14x14_evk_nand_defconfiginclude/configs 头文件 board/freescale 板级文件 -
安装依赖库
sudo apt-get install libncurses5-dev
-
u-boot根目录下编写shell编译脚本
vim mx6ull_14x14_emmc.sh
文件中写入如下内容:
因为我是用的开发板是emmc启动板卡,所以第二条命令使用配置文件mx6ull_14x14_evk_emmc_defconfig
#!/bin/bash make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- distclean make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- mx6ull_14x14_evk_emmc_defconfig make V=1 ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- -j16
-
赋予脚本可执行权限
chomd 777 mx6ull_14x14_emmc.sh
-
执行脚本,编译u-boot
./mx6ull_14x14_emmc.sh
-
编译完成后终端显示如下镜像信息
...... fg.cfgtmp board/freescale/mx6ullevk/imximage.cfg ./tools/mkimage -n board/freescale/mx6ullevk/imximage.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: 425984 Bytes = 416.00 kB = 0.41 MB Load Address: 877ff420 Entry Point: 87800000
二、修改源码(适配自己的开发板)
修改源码,作用其实是将源码中跟自己板卡最接近的平台的【配置文件】和【头文件】和【板级文件】拷贝一份重命名为自己板卡的对应文件,然后修改里面的源码,在进行编译生成zImage/rootfs等文件。
这里阿尔法开发板芯片为imx6ull,emmc启动方式,所以在后续拷贝文件时,NXP官方evk开发板与阿尔法开发板最为类似,故,拷贝文件名形如【mx6ull_14x14_evk_emmc_xxx】,命名为自己板卡【mx6ull_alientek_emmc_xxx】
2.1 拷贝配置文件
-
拷贝类似平台配置文件,重名民为自己的平台配置文件
cd configs cp mx6ull_14x14_evk_emmc_defconfig mx6ull_alientek_emmc_defconfig
-
修改配置文件
将第1行和第4行的mx6ullevk修改为mx6ull_alientek_emmc
vim mx6ull_alientek_emmc_defconfig 修改为如下内容: CONFIG_SYS_EXTRA_OPTIONS="IMX_CONFIG=board/freescale/mx6ull_alientek_emmc/imximage.cfg,MX6ULL_EVK_EMMC_REWORK" CONFIG_ARM=y CONFIG_ARCH_MX6=y CONFIG_TARGET_MX6ULL_ALIENTEK_EMMC=y CONFIG_CMD_GPIO=y