【海思3516DV500 | 开发环境】编译整个SDK全过程以及问题汇总

一、开发环境

上表是海思提供的Hi3519DV500 开发环境的各部分软件描述,实际用起来你就知道,可能有出入,尝试换Ubuntu 20.04折腾了好几天都不行,使用推荐的Ubuntu 18.04.2 64bit一个上午就行。

基本的硬件要求如下:

● CPU Intel(R) Xeon(R) CPU E5-2450 0 @ 2.10GHz 或更好CPU
● DDR: >= 16GB
● Hard disk >= 600GB
● Gigabit Ethernet
● OS: Ubuntu 18.04.2 64bit

软件准备:

win10操作系统+virtualbox+ubuntu 18.04 LTS

ubuntu 18.04 LTS的iso可以直接从Ubuntu 18.04下载中获取。

注意事项:

编译海思SDK之前,务必要拿着SDK中关于开发环境的几个文档查看,不要上来就编译。

编译需要参考的文档:

 《Hi35xxVxxx 开发环境用户指南.pdf》

Hi3519DV500/Hi3516DV500 SDK 安装以及升级使用说明》

 二、交叉编译工具链

发布包提供编译工具链 aarch64-v01c01-linux-musl- aarch64-v01c01-linux-musl-
基于 64bit 操作系统 musl 的工具链。
安装步骤如下:
步骤1 解压工具链。
        执行如下命令进行解压: tar xf gcc-xxxx-aarch64-v01c01-linux-musl.tgz
步骤2 安装工具链。
        进入解压目录,执行:sudo ./install_gcc_toolchain.sh
检查工具链版本,打印版本号表示安装成功
aarch64-v01c01-linux-musl-gcc  -v

三、软件包安装

3.1 默认配置bash

执行sudo dpkg-reconfigure dash #选择no

3.2 安装软件包

sudo apt-get install make 
sudo apt-get install libc6-i386 
sudo apt-get install lib32z1 
sudo apt-get install lib32stdc++6 
sudo apt-get install zlib1g-dev 
sudo apt-get install libncurses5-dev 
sudo apt-get install ncurses-term 
sudo apt-get install libncursesw5-dev 
sudo apt-get install g++ 
sudo apt-get install u-boot-tools 
sudo apt-get install texinfo 
sudo apt-get install texlive 
sudo apt-get install gawk 
sudo apt-get install libssl-dev 
sudo apt-get install openssl 
sudo apt-get install bc 
sudo apt-get install p7zip-full 
sudo apt-get install gperf 
sudo apt-get install bison 
sudo apt-get install flex 
sudo apt-get install diffutils 
sudo apt-get install git 
sudo apt-get install unzip

 3.3 echo "" > /etc/ld.so.preload

创建 /etc/ld.so.preload 文件,并执行 echo "" > /etc/ld.so.preload ,以解决 64bit linux
server 上某些第三方库编译失败的问题。

3.4 mtd-utils依赖库

sudo apt-get install zlib1g-dev 
sudo apt-get install liblzo2-dev 
sudo apt-get install uuid-dev 
sudo apt-get install pkg-config 
sudo apt-get install automake

由于 mtd-utils通过pkg-config工具检查各个库是否正常安装,因此请参考如下方式设置pkg-config工具搜索路径:

export PKG_CONFIG_PATH="$PKG_CONFIG_PATH:/usr/lib/x86_64-linux-gnu/pkgconfig/"

3.5 e2fsprogs依赖texlive

sudo apt-get install texlive

四、sdk解压patch合入

4.1 原始sdk解压

解压后,有三个目录:00.hardware、01.software、02.only for reference

其中原始的sdk在01.software\board\Hi3519DV500_SDK_V1.0.1.0.tgz

补丁目录02.only for reference

4.2 sdk补丁合入

hi3519dv500_REF_VX.0.X.X.tgz作为补丁包,可以将此补丁包打到hi3519dv500_SDK_VX.0.X.X.tgz包中,具体操作步骤如下:
1、将hi3519dv500_SDK_VX.0.X.X.tgz和hi3519dv500_REF_VX.0.X.X.tgz包放置到同一个文件夹下并解压,
    tar zxvf hi3519dv500_SDK_VX.0.X.X.tgz
    tar zxvf hi3519dv500_REF_VX.0.X.X.tgz
2、执行hi3519dv500_SDK_VX.0.X.X文件夹内部解压,
    ./sdk.unpack
3、执行打补丁操作,
    ./ref_patch.sh

    执行后,hi3519dv500_SDK_VX.0.X.X为打上REF补丁后的完整包。

五、SDK编译及问题解决

5.1 整体编译

前面基本上解决了sdk能都编译的问题,具体的编译命令可以参考,Hi3519DV500_SDK_V1.0.1.0/smp/a55_linux/source/bsp目录下面的readme_cn.txt文件。

具体到3516DV500是如下命令:

cd Hi3519DV500_SDK_V1.0.1.0/smp/a55_linux/source/bsp

make BOOT_MEDIA=emmc LIB_TYPE=musl CHIP=hi3516dv500 all

编译参数说明:
        1)BOOT_MEDIA默认选择emmc启动方式编译,可选择spi(spi nor and spi nand)启动方式编译,即BOOT_MEDIA=spi;
        2)LIB_TYPE默认为musl编译, 可选择glibc编译,即LIB_TYPE=glibc;
        3)CHIP默认为hi3519dv500,可选择hi3516dv500编译,即CHIP=hi3516dv500。 

5.2 错误处理

5.2.1 错误:/bin/sh: 1: pushd: not found

原因:
从Ubuntu 6.10开始,默认使用dash(theDebian Almquist Shell)而不是bash(the GNUBourne-Again Shell),但Login Shell还是bash,原因是dash更快、更高效,而且它符合POSIX规范,Ubuntu在启动的时候会运行很多shell脚本,使用dash可以加快启动速度。
通过命令 ll /bin/sh 确实可以看出来用的是dash。
解决:
sudo dpkg-reconfigure dash #选择no

5.2.2 错误:The autopoint command is part of the GNU gettext package.

错误打印:

You must have autopoint installed to generate the util-linux build system.
The autopoint command is part of the GNU gettext package.


You must have libtool-2 installed to generate the util-linux build system.

解决方案:
sudo apt-get install autopoint
sudo apt-get install bison
sudo apt-get install libtool
sudo apt-get install libtool-bin

5.2.3 错误:错误:po4a/update-po: The program 'po4a' was not found.

编译xz-5.2.6时,报错打印
po4a/update-po: The program 'po4a' was not found.
po4a/update-po: Translated man pages were not generated.
Makefile:16: recipe for target '/home/vqmt/work/3516dv500/Hi3519DV500_SDK_V1.0.1.0/open_source/xz/out' failed
解决方法,安装 po4a:
$ sudo apt install po4a

六、其他修改

由于本人购买的是厂家自己定制的硬件类型,还需要对网络和lic作一些配置。给大家作为参考。

注意:3516dv500和3519dv500用的是同一套sdk,所以有些地方可能只有3519的文件,比如:hi3519dv500.h

6.1 百兆网络

配置文件修改:
网络问题 uboot 中修改hi3519dv500.h文件,具体目录:Hi3519DV500_SDK_V1.0.1.0\open_source\u-boot\u-boot-2022.07\include\configs\hi3519dv500.h

#define CONFIG_GMAC_PHY0_INTERFACE_MODE    2 /* rgmii 2, rmii 1, mii 0 */
#define CONFIG_GMAC_PHY1_INTERFACE_MODE    2 /* rgmii 2, rmii 1, mii 0 */

需要修改为:

#define CONFIG_GMAC_PHY0_INTERFACE_MODE    1 /* rgmii 2, rmii 1, mii 0 */
#define CONFIG_GMAC_PHY1_INTERFACE_MODE    1 /* rgmii 2, rmii 1, mii 0 */

建议直接修改Hi3519DV500_SDK_V1.0.1.0/open_source/u-boot/u-boot-2022.07.patch文件,这样可以保证每次make distclean之后还是能正常编译。

dts修改:

内核中修改hi3519dv500-demb.dts和hi3516dv500-demb.dts 中的默认配置是 rgmii-id 改为 rmii。

他们的目录为:

sdk/open_source/linux/linux-5.10.y/arch/arm64/boot/dts/vendor/hi3519dv500-demb.dts

sdk/open_source/linux/linux-5.10.y/arch/arm64/boot/dts/vendor/hi3516dv500-demb.dts

同样建议修改SDK//open_source/linux/linux-5.10.patch文件,保证每次make distclean之后还是能正常编译。

修改文件中:

+++ b/arch/arm64/boot/dts/vendor/hi3516dv500-demb.dts

和+++ b/arch/arm64/boot/dts/vendor/hi3519dv500-demb.dts内容

+&gmac {
+	phy-handle = <&ethphy>;
+	phy-mode = "rgmii-id";
+};

修改为

+&gmac {
+	phy-handle = <&ethphy>;
+	phy-mode = "rmii";
+};

 6.2 Iic地址修改

lic 地址,默认使用 i2c 4需要修改为i2c 3

具体修改为:Hi3519DV500_SDK_V1.0.1.0\smp\a55_linux\source\mpp\sample\common\sample_comm_vi.c 的这个函数sample_comm_vi_get_default_sns_info

七、最后总结

 有很多时候选择比努力重要,刚开始搞得时候,我觉得ubuntu20.04和ubuntu18.04应该没差多少,有问题以自己的经历搞定应该不成问题。哎,水里淹死的都是会游泳的,人家海思就是基于18.04搞得,其他的没试,自己就不要作死,不然真的会死。前面折腾了两天都不行,最后换成18.04一上午就好了,不要对自己过于自信。

  • 8
    点赞
  • 21
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值