前言
安装环境篇过后的sdk包里实际上并没有kernel的源码,这点和开发说明文档里是有出入的,不过没关系,sdk包里的readme还是给了我们方向
主要参考两个文档
XXX/Hi3559AV100R001C02SPC020/01.software/board/Hi3559AV100_SDK_V2.0.2.0/osdrv/readme_cn.txt; XXX/Hi3559AV100R001C02SPC020/01.software/board/Hi3559AV100_SDK_V2.0.2.0/osdrv/opensource/kernel/readme_cn.txt。
一.源码下载
1)进入网站:www.kernel.org
2)选择HTTP协议资源的https://www.kernel.org/pub/选项,进入子页面
3)选择linux/菜单项,进入子页面
4)选择kernel/菜单项,进入子页面
5)选择v4.x/菜单项,进入子页面
6)下载linux-4.9.37.tar.gz
二.patch补丁
1)将下载的 linux-4.9.37.tar.gz 存放到 osdrv的opensource/kernel目录中
2)在linux服务器中进入 osdrv 的根目录,执行如下命令:
make atf
三.配置内核
步骤 1 手动拷贝.config 文件:
cp arch/arm64/configs/hi3559av100_arm64_xxx_defconfig .config
(注:当启动介质是eMMC、 UFS、 SPI-Nor Flash或SPI-NAND Flash时, 使用hi3559av100_arm64_big_little_defconfig;当启动介质是NAND Flash时, 使用hi3559av100_arm64_big_little_nand_defconfig)
步骤 2 用户通过“make menuconfig” 进行内核配置:
make ARCH=arm64 CROSS_COMPILE=aarch64-himix100-linux- menuconfig
步骤 3 选择需要的模块。
步骤 4 选择完毕后,保存并退出。
四.编译内核
make ARCH=arm64 CROSS_COMPILE=aarch64-himix100-linux- clean make ARCH=arm64 CROSS_COMPILE=aarch64-himix100-linux- menuconfig make ARCH=arm64 CROSS_COMPILE=aarch64-himix100-linux- uImage
五.生成镜像
进入 osdrv/opensource/arm-trusted-firmware/ arm-trusted-firmware 目录,执行 mk.sh 脚本
cd …/…/arm-trusted-firmware/arm-trusted-firmware ./mk.sh
当 linux 目录有变更时,需要修改 mk.sh 中内核路径, 使其指向正确的 linux 目录。
在 osdrv/opensource/ arm-trusted-firmware/arm-trusted-firmware/build/hi3559av100/debug
目录下,生成的 fip.bin 文件就是 ATF+kernel 的镜像 uImage。