G16DV5-IPC-38E/G19DV5-IPC-38E 快速适配

G16DV5-IPC-38E/G19DV5-IPC-38E 快速适配 咖啡不加奶 2025-01-24 11:11:59 230

文章目录

1、背景

• 背景:基于官方 SDK 快速适配社区 G16DV5-IPC-38E 板卡(适用于 G19DV5-IPC-38E)
• 技术定位:初级
• 目标群体:软件工程师
• 更新版本:V1.0
• 硬件接口见产品规格书和原理图。
• SDK 版本:Hi3519DV500R001C01SPC011

2、环境搭建

2.1 编译环境

• 官方文档:
参考\ReleaseDoc\zh\01.software\board\BSP\Hi35xxVxxx 开发环境用户指南.pdf 文档的第一章节

2.2 下载解压 SDK(Software Development Kit)
  • 从业务端口获取 G16DV5-IPC-38E 的开发网盘资料
  • 资料目录:【易百纳】G16DV5-IPC-38E 型 IPC 模组_VX.X

  • 官方 SDK 路径:【易百纳】G16DV5-IPC-38E 型 IPC 模组VX.X\04_SDK 资料\04原厂 SDK

  • 拷贝 Hi3519DV500_SDK_V1.0.1.1.tgz、Hi3519DV500_REF_V1.0.1.1.tgz、ref_patch.sh 到编译服务器。
    Hi3519DV500_SDK_V1.0.1.1.tgz 压缩包路径:SMP_Linux_GCC_glibc\01.software\board
    Hi3519DV500_REF_V1.0.1.1.tgz 压缩包 ref_patch.sh 脚本路径:SMP_Linux_GCC_glibc\02.only for reference

  • 解压 SDK 以及打入 REF 补丁命令如下:
    说明:此说明仅用于使用 hi 接口操作,如使用 ss 接口,不涉及打补丁操作./ref_patch.sh

    tar xf Hi3519DV500_SDK_V1.0.1.1.tgz
    tar xf Hi3519DV500_REF_V1.0.1.1.tgz
    cd Hi3519DV500_SDK_V1.0.1.1/
    ./sdk.unpack
    cd ..
    chmod +x ref_patch.sh
    ./ref_patch.sh
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7

2.3 修改配置

解压 u-boot 压缩包,打入补丁后删除压缩包和补丁。

tar -xf u-boot-2022.07.tar.bz2|
cd u-boot-2022.07
patch -p1 < ../u-boot-2022.07.patch
cd ..
rm u-boot-2022.07.*
  • 1
  • 2
  • 3
  • 4
  • 5

解压 linux 压缩包,打入补丁后删除压缩包和补丁,重命名为 linux-5.10.y。

tar -xf linux-5.10.tar.gz
cd linux-5.10
patch -p1 < ../linux-5.10.patch
cd ..
rm linux-5.10.*
mv linux-5.10 ./linux-5.10.y
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6

拷贝 0007-ebaina-busybox_config.patch<SDK> /open_source/busybox/目录下,修改 busybox 的 Makefile

  • 补 丁 路 径 :【 易 百 纳 】 G16DV5-IPC-38E 型 IPC 模 组 _VX.X/03_ 软 件 资 料 /05_ 补 丁 文 件/03_patch/0007-ebaina-busybox_config.patch

DV5-IPC-38E 烧录时使用的是百兆网,需要修改<SDK>/open_source/u-boot/u-boot-2022.07/include/configs/目录下的 hi3519dv500.h

将 DDR 模板文件拷贝到<SDK>/smp/a55_linux/source/bsp/tools/pc/boot_tools/目录下

  • 模 板 文 件 路 径 : 【 易 百 纳 】 G16DV5-IPC-38E 型 IPC 模 组 _VX.X\03_ 软 件 资 料 \05_ 补 丁 文 件 \01_config\boot_tools
    修改<SDK>/smp/a55_linux/source/bsp/目录下的 Makfile

    此时可以编译 SDK,执行以下命令
    make CHIP=hi3516dv500 all
    
    • 1
  • 说明:编译 eudev 报错找不到 blkid 头文件,解决方案查看 4.1 章节
    <SDK>/smp/a55_linux/source/bsp/pub/hi3516dv500_image_glibc目录下生成目标文件
2.4 固件烧录(Firmware Flashing)

固件烧录是指将固件写入设备的非易失性存储器(如 ROM、闪存等)的过程。这个过程通常用于更新或替换设备上的固件,以修复漏洞、改进功能或提升性能。

  • 官方文档:
    ReleaseDoc\zh\01.software\pc\ToolPlatform\ToolPlatform 工具平台使用指南.pdf
    ReleaseDoc\zh\01.software\board\Hi3519DV500/Hi3516DV500 SDK 安装及升级使用说明.pdf
    ReleaseDoc\zh\01.software\board\BSP\裸烧及非裸烧升级使用手册.pdf

  • 或者查看社区文档《G16DV5-IPC-38E(G19DV5-IPC-38E)_VX.X 烧录及测试说明》文档
    【易百纳】G16DV5-IPC-38E 型开发板_VX.X\01_手册文档\02_开发手册

3、开发指南

3.1 SDK 工程 Makefile 优化

官方 SDK 的 makefile 每次 distclean 都会删除 uboot,kernel 源码目录,再次解压、打入补丁。社区优化了makefile 文件。可以选择打入补丁,也可以自行修改。

  • 补 丁 路 径 : 【 易 百 纳 】 G16DV5-IPC-38E 型 IPC 模 组 _VX.X\03_ 软 件 资 料 \05_ 补 丁 文 件\03_patch\0000-ebaina-makefile.patch。
    将补丁拷贝到工程根目录下,执行以下命令
    patch -p1 < 0000-ebaina-makefile.patch
    
    • 1

打完补丁进入<SDK>/smp/a7_linux/source/bsp 目录下
清除后重新编译 SDK,执行以下命令

cd smp/a7_linux/source/bsp/
make distclean
make CHIP=hi3516dv500 all
  • 1
  • 2
  • 3
3.2 spi nand

官方 SDK 默认不支持当前使用型号,因此社区提供了补丁文件。

  • 补 丁 路 径 : 【 易 百 纳 】 G16DV5-IPC-38E 型 IPC 模 组 _VX.X\03_ 软 件 资 料 \05_ 补 丁 文 件 \patch\0001-ebaina-dosilicon-spi-nand.patch。
    将补丁拷贝到工程根目录下,执行以下命令
    patch -p1 < 0001-ebaina-dosilicon-spi-nand.patch
    
    • 1
3.3 SSH
3.3.1 移植编译

将社区提供的 iperf、stress-ng、tcpdump、openssl、openssh、ntp、haveged 等工具和 Makefile.param,拷贝到<SDK>/open_source 目录下

  • 工具路径:【易百纳】G16DV5-IPC-38E 型 IPC 模组_VX.X\03_软件资料\05_补丁文件\ssh

进入 must_tools 目录下编译、增加 gdb-10.2 工具

cd must_tools
make all
  • 1
  • 2

编译成功后使用以下命令,拷贝到<SDK>/overlay 目录下

make install
  • 1

拷贝社区提供的文件拷贝到 <SDK>/overlay/root 下后,重新编译

  • 文件路径:【易百纳】G16DV5-IPC-38E 型 IPC 模组_VX.X\03_软件资料\05_补丁文件\02_overlay\overlay\root
cd smp/a7_linux/source/bsp/
make distclean
make CHIP=hi3516dv500 all
  • 1
  • 2
  • 3
  • 说明:如果板端出现网络连接失败的情况,解决方案查看 4.2 章节
  • 板端出现内存不足,无法拷贝的情况,解决方案查看 4.5 章节
  • 如果补丁打入失败或部分打入失败,生成了.rej 文件,请根据.rej 文件提示手动修改对应文件内容,确保板端对应文件夹下有对应的文件

3.3.2 验证 SSH 连接

设置板端 IP

在另一终端通过 SSH 连接输入密码连接

3.4 VENC 视频编码
3.4.1 合入补丁

打入社区提供的 0003-ebaina-sample.patch 补丁。

  • 补 丁 路 径 :【 易 百 纳 】 G16DV5-IPC-38E 型 IPC 模 组 _VX.X\03_ 软 件 资 料 \05_ 补 丁 文 件\03_patch\0003-ebaina-sample.patch
patch -p1 < 0003-ebaina-sample.patch
  • 1
  • 说明:如果板端出现驱动加载异常的情况,解决方案查看 4.3 章节
    根据连接的 sensor 镜头选择对应的类型修改<SDK>/smp/a55_linux/source/mpp/sample/Makefile.param,这里以 SONY_IMX347 为例

修改后重新编译 sample,把生成的可执行文件拷贝到<SDK>/overlay/root 目录下

3.4.2 功能验证

板端加载驱动后运行 sample_venc。

./insmod.sh
./sample_venc 0
  • 1
  • 2


可将生成的 stream_chn0.h265 和 stream_chn1.h264 拷贝到 PC 上查看。播放之前需要修改权限,否则可能播放失败。

  • 说明:如果板端出现 I2C 寄存器功能错误,解决方案查看 4.4 章节
3.5UVC
3.5.1 驱动移植

验证 UVC 之前需要拷贝 ConfigUVC.sh 和 sample_uvc 到板端

  • 文件路径:【易百纳】G16DV5-IPC-38E 型 IPC 模组_VX.X\03_软件资料\05_补丁文件\02_overlay\root\
3.5.2 功能验证

打开 PC 端系统自带相机,在板端执行脚本。

./start_uvc.sh
  • 1

3.6 MIC&SPK(Microphone & Speaker)

麦克风是声音输入设备,用于捕捉声音并将声波转换为电信号。在单片机应用中,麦克风可以用于录音、语音识别等功能。
扬声器是声音输出设备,用于将电信号转换为声波。在单片机应用中,扬声器可以用于播放音乐、语音提示等功能。

3.6.1 动态库移植

拷贝 libmp3_lame.so、libmp3_enc.so、libmp3_dec.so 动态库到板端/lib64 目录下

  • 文件路径:【易百纳】G16DV5-IPC-38E 型 IPC 模组_VX.X\03_软件资料\05_补丁文件\02_overlay\lib64\
3.6.2 验证音频接口
./sample_audio 1 //录音
./sample_audio 2 //放音
  • 1
  • 2

3.7 AIISP
3.7.1 模型移植

将依赖的模型文件 ai3dnr、aibnr、aidrc 拷贝到板端
• 文件路径:【易百纳】G16DV5-IPC-38E 型 IPC 模组_VX.X\03_软件资料\05_补丁文件\02_overlay\root\

3.7.2 功能验证

板端运行例程 sample_aiisp,参数为 0,选择模型为 0;生成 stream_chn0.h265 文件。

./sample_aiisp 0
  • 1

3.8 IRCUT 测试

板端加载驱动后执行测试 ircut 脚本。镜头 ircut 状态切换时会有“咔嚓”声响。

./ircut.sh on #打开
./ircut.sh off #关闭
  • 1
  • 2

3.9 验证 RTC(Real-Time Clock)功能

设置&获取 RTC 时间,通过以下的命令

date -s 2024.11.07-09:33:14
hwclock -u
hwclock -r
  • 1
  • 2
  • 3
  • 说明:使用 date 命令设置系统时间,hwclock -r 这条命令用于读取硬件时钟的时间并显示出来。
    -r 选项表示读取硬件时钟(Real Time Clock,RTC)的时间并以可读的格式输出到终端。
    -w 选项表示将当前系统时间同步到硬件时钟,使得硬件时钟的时间与系统时间保持一致。
    -u 设置硬件时间为 UTC 时间。
    通常,在设置完系统时间后,可以使用 hwclock -w 确保硬件时钟也得到更新,这样在系统重启等情况下,硬件时钟可以为系统提供一个初始的时间参考。
    设置硬件时间后,执行 reboot 重启查看时间。
3.10 GPIO
3.10.1 合入补丁

打入社区提供的 0006-ebaina-gpio.patch 补丁

  • 补 丁 路 径 : 【 易 百 纳 】 G16DV5-IPC-38E 型 IPC 模 组 _VX.X\03_ 软 件 资 料 \05_ 补 丁 文 件\03_patch\0006-ebaina-gpio.patch
    patch -p1 < 0006-ebaina-gpio.patch
    
    • 1
3.10.2 功能验证

以 GPIO6_5 为例,在板端执行例程。

./user_test GpioOutputTest 53 #GPIO6_5 6x8+5=53
  • 1


万用表检测到的电压会随着切换高低电压,在 0~3.3V 范围跳动。

4、FAQ 问题

4.1 头文件报错

出现 blkid 头文件报错时,可以在工程<SDK>/open_source/eudev目录下的 Makefile 第 23 行增加 —disable-blkid。

4.2 网络 ping 不通

如果在板端设置完 IP,依旧无法连网。

打入社区提供的 0002-ebaina-net.patch 补丁,重新烧录即可

  • 补 丁 路 径 : 【 易 百 纳 】 G16DV5-IPC-38E 型 IPC 模 组 _VX.X\03_ 软 件 资 料 \05_ 补 丁 文 件\03_patch\0002-ebaina-net.patch
    patch -p1 < 0002-ebaina-net.patch
    
    • 1
4.3 驱动加载异常

打入社区提供的 0004-ebaina-insmod.patch 补丁,重新烧录即可

  • 补 丁 路 径 : 【 易 百 纳 】 G16DV5-IPC-38E 型 IPC 模 组 _VX.X\03_ 软 件 资 料 \05_ 补 丁 文 件\03_patch\0004-ebaina-insmod.patch
    patch -p1 < 0004-ebaina-insmod.patch
    
    • 1
4.4 修改 I2C 寄存器值

如果出现以下错误

查看寄存器值并修改

bspmm 0x0eff0028 0x1752
bspmm 0x0eff0024 0x1752
  • 1
  • 2

4.5 扩展板端内存

拷贝可执行文件时提示内存已满的时候,打入社区提供的 0005-ebaina-memory-capacity.patch 补丁

  • 补 丁 路 径 : 【 易 百 纳 】 G16DV5-IPC-38E 型 IPC 模 组 _VX.X\03_ 软 件 资 料 \05_ 补 丁 文 件\03_patch\0005-ebaina-memory-capacity.patch
    patch -p1 < 0005-ebaina-capacity.patch
    
    • 1
声明:本文内容由易百纳平台入驻作者撰写,文章观点仅代表作者本人,不代表易百纳立场。如有内容侵权或者其他问题,请联系本站进行删除。
红包 点赞 收藏 评论 打赏
评论
0个
内容存在敏感词
手气红包
    易百纳技术社区暂无数据
相关专栏
置顶时间设置
结束时间
删除原因
  • 广告/SPAM
  • 恶意灌水
  • 违规内容
  • 文不对题
  • 重复发帖
打赏作者
易百纳技术社区
咖啡不加奶
您的支持将鼓励我继续创作!
打赏金额:
¥1易百纳技术社区
¥5易百纳技术社区
¥10易百纳技术社区
¥50易百纳技术社区
¥100易百纳技术社区
支付方式:
微信支付
支付宝支付
易百纳技术社区微信支付
易百纳技术社区
打赏成功!

感谢您的打赏,如若您也想被打赏,可前往 发表专栏 哦~

举报反馈

举报类型

  • 内容涉黄/赌/毒
  • 内容侵权/抄袭
  • 政治相关
  • 涉嫌广告
  • 侮辱谩骂
  • 其他

详细说明

审核成功

发布时间设置
发布时间:
是否关联周任务-专栏模块

审核失败

失败原因
备注
拼手气红包 红包规则
祝福语
恭喜发财,大吉大利!
红包金额
红包最小金额不能低于5元
红包数量
红包数量范围10~50个
余额支付
当前余额:
可前往问答、专栏板块获取收益 去获取
取 消 确 定

小包子的红包

恭喜发财,大吉大利

已领取20/40,共1.6元 红包规则

    易百纳技术社区