海思Hi3559AV100 SDK完整编译流程

前言:

从海思Hi3516到Hi3519再到Hi3559,笔者已经编译了很多次海思SDK,但是每次编译都不得不从一个文档看到另一个文档,再是另一个文档……这一过程实在是繁琐之至。为了是这一过程清晰并且一目了然,在此写出整个编译过程(以Hi3559AV100为例),给自己也给其他用到海思SDK的人提供方便之门。

话不多说,言归正传。

一、一切从这里开始

一切从《Hi3559A╱C V100 开发环境用户指南.pdf》开始,这个文档在“XXX/ReleaseDoc\zh\01.software\board\OSDRV”目录下。直接看第二章:首次安装SDK(这里假定开发环境已经建立好)。

1. Hi3559AV100 SDK安装包位置

拿到SDK安装包之后,一般是压缩格式,先解压,解压之后生成“Hi3559AV100R001C02SPC020”文件夹(如果是010版本则生成“Hi3559AV100R001C02SPC010”文件夹)。进入此文件夹,可以看到三个文件夹,分别为:00.hardware、01.software、02.only for reference。进入“01.software”文件夹,再进入其下的“board”文件夹,可以看到其下有一个“Hi3559AV100_SDK_V2.0.2.0.tgz”文件(如果是010版本则名称为“Hi3559AV100_SDK_V2.0.1.0.tgz”,以下仅以020举例,010步骤类似),该文件就是Hi3559AV100的软件开发包。

2. 解压缩SDK包

运行以下命令解压缩SDK包:

tar -zxf Hi3559AV100_SDK_V2.0.2.0.tgz

解压之后,生成“Hi3559AV100_SDK_V2.0.2.0”文件夹。

3. 展开SDK包内容

进入上一步生成的“Hi3559AV100_SDK_V2.0.2.0”文件夹,运行./sdk.unpack命令,展开SDK包内容。成功后终端提示如下:

Unpacking SDK
WARN: Be sure you have installed the cross-compiler. if not, install it first!
WARN: ALL THE SOUCE FILES WILL BE OVERWRITED, FILES YOU MOTIFIED WILL BE LOST !!!

OS_TYPE  =
SDK_CHIP =hi3559av100
unpacking osal
run_command_progress_float: 'tar -xvzf package/osal.tgz'
[100%]##################################################|
unpacking hisyslink
run_command_progress_float: 'tar -xvzf package/hisyslink.tgz'
[100%]##################################################|
unpacking osdrv
run_command_progress_float: 'tar -xvzf package/osdrv.tgz'
[100%]##################################################|
unpacking mpp
mkdir: created directory ‘mpp’
run_command_progress_float: 'tar -xvzf package/mpp.tgz'
[100%]##################################################|
unpacking drv
mkdir: created directory ‘drv’
run_command_progress_float: 'tar -xvzf package/drv.tgz'
[100%]##################################################|

4. 安装交叉编译器

此步在此不详述,《指南》中讲得很详细,参照其说明进行即可。

二、编译osdrv

参考文档:

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. 从linux开源社区下载v4.9.37版本的内核
    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(或linux-4.9.37.tar.xz)

2. 打补丁
    1) 将下载的 linux-4.9.37.tar.gz 存放到 osdrv的opensource/kernel目录中(XXX/Hi3559AV100R001C02SPC020/01.software/board/Hi3559AV100_SDK_V2.0.2.0/osdrv/opensource/kernel);
    2) 在linux服务器中进入 osdrv 的根目录,执行如下命令:
        cd opensource/kernel
        tar -zxf linux-4.9.37.tar.gz
        mv linux-4.9.37 linux-4.9.y
        cd linux-4.9.y
        patch -p1 < ../linux-4.9.37.patch
        cd ../
        tar -czf linux-4.9.y.tgz linux-4.9.y
        cd ../../

3. 编译整个osdrv

    从以下命令中选择一个适合自己实际情况的(笔者选择的命令见下方粗体字),运行命令进行编译:

    编译(A53MP+A73MP)多核linux、启动介质为spi(spi nor和spi nand)的命令:
    make BOOT_MEDIA=spi AMP_TYPE=linux all

    编译(A53MP+A73MP)多核linux、启动介质为并口nand的命令:
    make BOOT_MEDIA=nand AMP_TYPE=linux all

    编译(A53MP+A73MP)多核linux、启动介质为emmc的命令:
    make BOOT_MEDIA=emmc AMP_TYPE=linux all

    编译(A53MP+A73MP)多核linux、启动介质为ufs的命令:
    make BOOT_MEDIA=ufs AMP_TYPE=linux all 

    编译(A53MP+A73MP)多核linux+A53UP单核liteos、启动介质为spi(spi nor和spi nand)的命令:
    make BOOT_MEDIA=spi AMP_TYPE=linux_liteos all

    编译(A53MP+A73MP)多核linux+A53UP单核liteos、启动介质为并口nand的命令:
    make BOOT_MEDIA=nand AMP_TYPE=linux_liteos all

    编译(A53MP+A73MP)多核linux+A53UP单核liteos、启动介质为emmc的命令:
    make BOOT_MEDIA=emmc AMP_TYPE=linux_liteos all

    编译(A53MP+A73MP)多核linux+A53UP单核liteos、启动介质为ufs的命令:
    make BOOT_MEDIA=ufs AMP_TYPE=linux_liteos all

4. 编译完成后,在“XXX/Hi3559AV100R001C02SPC020/01.software/board/Hi3559AV100_SDK_V2.0.2.0/osdrv/pub/emmc_image_glibc_multi-core_arm64/”下生成uboot(u-boot-hi3559av100.bin)、kernel(uImage_hi3559av100_multi-core)和各个rootfs文件。

1

发布了34 篇原创文章 · 获赞 12 · 访问量 8万+

猜你喜欢

转载自blog.csdn.net/phmatthaus/article/details/103629622