海思Hi3516CV610/Hi3516CV608开发笔记之环境搭建和SDK编译

海思Hi3516CV610/Hi3516CV608开发笔记之环境搭建和SDK编译

文章目录


前言

Hi3516CV610是一颗应用在基座安防市场的IPC SoC,主要面向室内外场景下的枪机、球机、半球机、海螺机、枪球一体机、多目长短焦机等产品形态,可以打造出极具竞争力的方案与产品。

本文介绍一下该芯片开发环境的搭建和编译固件的方法,希望对有意愿使用该芯片的读者做一些有益的启发,减少在开发过程中的摸索。

一、必备工具软件:

1、更改shell,

sudo dpkg-reconfigure dash

选择 NO

2、安装工具软件:

sudo apt-get install make libc6-i386 lib32z1 lib32stdc++6 libncurses5-dev ncurses-term libncursesw5-dev g++ u-boot-tools texinfo gawk libssl-dev openssl bc p7zip-full gperf bison flex diffutils git unzip libffi-dev libtool libfreetype6 fakeroot autopoint po4a python3-pip wget

提示需要用python3的时候再安装,如果没有提示,就可以不安装。

安装uboot工具:

sudo apt-get install u-boot-tools

进入/Hi3516CV610_SDK_V1.0.1.0/scripts目录

./installed_package_check.sh 检查软件包是否安装完整。

就执行:

sudo apt-get install libncursesw5-dev

解压并安装工具链:添加到/etc/profile

export PATH="/opt/linux/x86-arm/arm-v01c02-linux-musleabi-gcc/bin:$PATH"

二、一键编译SDK:

1、解压SDK:

1、 tar zxvf Hi3516CV610_SDK_VX.0.X.X.tgz

2、执行Hi3516CV610_SDK_VX.0.X.X文件夹内部解压,

./sdk.unpack

2、编译整个SDK:

先完整的编译一次,uboot,内核,busybox的补丁就都打上了

进入目录Hi3516CV610_SDK_V1.0.0.3_update\smp\a7_linux\source\bsp

在 smp/a7_linux/source/bsp 目录下执行 make 命令整编小系统镜像:

make all

默认编译参数为:

make LIB_TYPE=musl CHIP=hi3516cv610 DEBUG=0 all

编译参数说明:

1、 BOOT_MEDIA默认选择spi启动方式编译,可选择emmc启动方式编译,即

BOOT_MEDIA=emmc;

2、 LIB_TYPE默认为musl编译,可选择glibc编译,即LIB_TYPE=glibc;

3.、CHIP默认为hi3516cv610,可选择hi3516cv610编译,即CHIP=hi3516cv610;

4.、DEBUG默认为DEBUG=0,表示编译 release 版本系统镜像。可选择为

DEBUG=1,即编译debug版本系统镜像。

make LIB_TYPE=musl CHIP=hi3516cv610 DEBUG=1 all -j6

编译完毕后的目标文件:

3、错误处理:

1、第一次编译gzip会出错:

Hi3516CV610_SDK_V1.0.0.3_update/open_source/gzip/gzip-1.11

运行 ./configuure 自己配置下,重新编译即可。

2、无内核,需要自己下载:

https://mirrors.edge.kernel.org/pub/linux/kernel/v5.x/

三、单独编译UBOOT:

1、参考:

ReleaseDoc\zh\01.software\board

《Hi3516CV610 SDK 安装及升级使用说明.pdf》

Hi3516CV610R001C01SPC003\ReleaseDoc\zh\01.software\board\BSP

《Hi35xxVxxx U-boot 移植应用开发指南.pdff》

2、编译uboot:

(这个是SPI NOR/NAND的配置)

cp configs/hi3516cv610_defconfig .config

配置菜单:

make ARCH=arm CROSS_COMPILE=arm-v01c02-linux-musleabi- menuconfig

保存退出

编译:

make ARCH=arm CROSS_COMPILE=arm-v01c02-linux-musleabi- -j 20

cp .../.../gzip/bin/gzip arch/arm/cpu/armv7/hi3516cv610/hw_compressed/ -rf

chmod +x arch/arm/cpu/armv7/hi3516cv610/hw_compressed/gzip

编译生成u-boot-hi3516cv610.bin

make ARCH=arm CROSS_COMPILE=arm-v01c02-linux-musleabi- u-boot-z.bin

编译成功后,将在U-boot目录下生成u-boot-hi3516cv610.bin

3、表格生成配置:

4、生成最终的u-boot烧写镜像:

Hi3516CV610_SDK_V1.0.0.3_update/smp/a7_linux/source/bsp

cd components/

cd gsl

make clean

make CHIP=hi3516cv610

cd .../.../

cp components/gsl/pub/gsl.bin ./tools/pc/image_tool/input

cp .../.../.../.../open_source/u-boot/u-boot-2022.07/u-boot-hi3516cv610.bin ./tools/pc/image_tool/input/u-boot-original.bin

cp tools/pc/boot_tools/reg_info.bin ./tools/pc/image_tool/input

cd tools/pc/image_tool

python oem/oem_quick_build.py

tools/pc/image_tool/image/oem/下生成的boot_image.bin即为"非安全启动"能在单板上运行的uboot 镜像.

四、单独编译内核:

1、下载内核:

2、编译镜像:

菜单配置:

make ARCH=arm CROSS_COMPILE=arm-v01c02-linux-musleabi- menuconfig

make ARCH=arm clean

编译模块:

make ARCH=arm CROSS_COMPILE=arm-v01c02-linux-musleabi- modules

修改config配置,重编kernel镜像的方法:(只能进入bsp目录进行编译)

Hi3516CV610_SDK_V1.0.2.0\smp\a7_linux\source\bsp\readme_cn.txt

1)进入open_source/linux/linux-5.10.y目录,生成默认配置文件:

cp arch/arm/configs/hi3516cv610_debug_defconfig .config

修改config配置,执行:

make ARCH=arm CROSS_COMPILE=arm-v01c02-linux-musleabi- menuconfig

2)将修改后的.config拷贝为新的config文件,执行

cp .config arch/arm/configs/hi3516cv610_new_defconfig

cp .config arch/arm/configs/hi3516cv608_new_defconfig

3)进入bsp目录,重新执行:

如果编译HI3516CV610:

make KERNEL_CFG=hi3516cv610_new_defconfig kernel DEBUG=1 CHIP=hi3516cv610 -j4

如果编译HI3516CV608:

make KERNEL_CFG=hi3516cv608_new_defconfig kernel DEBUG=1 CHIP=hi3516cv608 -j4

五、编译busybox:

编译源码:

直接make即可

make menuconfig 进行配置,选择必要的工具,比如telnetd, pppd,然后修改编译工具,

总结

以上就是海思Hi3516CV610/Hi3516CV608的环境搭建和固件编译方法,希望对读者的开发有所帮助,后续会介绍该芯片的其他用法,敬请期待。

相关推荐
诸葛思颖4 小时前
【论文阅读笔记】FL+HC(联邦学习+层次聚类)
论文阅读·笔记·聚类
杜子不疼.4 小时前
【Linux】进程状态全解析:从 R/S/D/T 到僵尸 / 孤儿进程
linux·人工智能·ai
序属秋秋秋5 小时前
《Linux系统编程之进程基础》【进程优先级】
linux·运维·c语言·c++·笔记·进程·优先级
草莓熊Lotso5 小时前
C++ STL map 系列全方位解析:从基础使用到实战进阶
java·开发语言·c++·人工智能·经验分享·网络协议·everything
zyplayer-doc5 小时前
升级表格编辑器,AI客服应用支持转人工客服,AI问答风格与性能优化,zyplayer-doc 2.5.6 发布啦!
人工智能·编辑器·飞书·开源软件·创业创新·有道云笔记
TDengine (老段)5 小时前
TDengine 字符串函数 TO_BASE64 用户手册
android·大数据·服务器·物联网·时序数据库·tdengine·涛思数据
~~李木子~~8 小时前
中文垃圾短信分类实验报告
人工智能·分类·数据挖掘
河铃旅鹿8 小时前
Android开发-java版:Framgent
android·java·笔记·学习
AA陈超11 小时前
ASC学习笔记0020:用于定义角色或Actor的默认属性值
c++·笔记·学习·ue5·虚幻引擎
ACP广源盛1392462567311 小时前
GSV2006@ACP#2 进 4 出 HDMI2.0 中继器(带音频提取 / 嵌入功能)全解析
单片机·嵌入式硬件·音视频