海思Hi3559av100 sdk开发环境搭建
SDK阐释
海思官方给的sdk布局,如Hi3559AV100R001C02SPC031,其包含编译工具、硬件设计资料、软件sdk、文档等资料,tree布局可以构建如下形式,但不是必要的。
软件sdk在 01.software中,这个路径下才是真正的软件代码,编译uboot、内核和文件系统都是在这里完成。
编译方法
在安装完交叉编译链之后,osdrv路径下直接make all的话,会出现各种毛病,建议通常先安装模块来编译解决对应问题。
一、hiboot
进入目录 osdrv/opensource/uboot
解压文件:tar -xzf u-boot-2016.11.tgz
cd u-boot-2016.11
即在此目录下打开终端进行编译:
1)拷贝config配置
cp -f ./configs/hi3559av100_defconfig .config
2)menuconfig配置
make ARCH=arm CROSS_COMPILE=aarch64-himix100-linux- menuconfig
若出现报错则要先安装包:sudo apt-get install libncurs*
然后再进行menuconfig的编译:make ARCH=arm CROSS_COMPILE=aarch64-himix100-linux- menuconfig
编译完成就会出现menuconfig的界面,可直接退出:
再进行不要menuconfig的编译:make ARCH=arm CROSS_COMPILE=aarch64-himix100-linux-
编译完成后从osdrv/tools/pc/uboot_tools目录拷贝reg_info.bin到boot源代码目录,重命名为.reg:cp ../../../tools/pc/uboot_tools/reg_info.bin .reg
最后即可编译uboot:make CROSS_COMPILE=aarch64-himix100-linux- u-boot-z.bin
编译完成后,终端出现提示信息:“u-boot-hi3559av100.bin is Ready.”说明已经编译完成,在目录下会生成u-boot-hi3559av100.bin
二、hikernel
1、参考文档 patch
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;
2、交叉编译内核
1)手动拷贝.config 文件:
cp arch/arm64/configs/hi3559av100_arm64_xxx_defconfig .config
(注1:当启动介质是eMMC、UFS、SPI-Nor Flash或SPI-NAND Flash时,使用
hi3559av100_arm64_big_little_defconfig;当启动介质是NAND Flash时,使用
hi3559av100_arm64_big_little_nand_defconfig)
(注2:Hi3559A的defconfig文件在arch/arm64文件夹中,海思Hi35xx系列的其他芯片应该在arch/arm文件夹中)
2)通过“make menuconfig”进行内核配置:make ARCH=arm64 CROSS_COMPILE=aarch64-himix100-linux- menuconfig
3)生成uImage的bin文件:make ARCH=arm64 CROSS_COMPILE=aarch64-himix100-linux- uImage
4)make hikernel 或 make atf
如果只能生成image文件而不无法生成uImage的话,是因为缺少mkimage工具,从uboot下拷贝到/usr/bin或/usr/local/bin目录下即可。
三、hirootfs
在顶层目录编译make hirootfs_build,会出现一些常规头文件缺失的问题,解决即可如下。