拓十年匠心定制 · 商业建站与技术教学双线并行 咨询热线:400-886-1026 service@lmnt.cn
ARTICLE DETAIL

资讯详情

深耕网站建设与运营推广的一线实战洞察。

Hi3516CV610 20S V4 开发板启动与调试流程

Hi3516CV610 20S V4 开发板启动与调试流程

Hi3516CV610 20S V4 开发板启动与调试流程

1 目标和当前成果

本文记录 Hi3516CV610 20S V4 开发板从首次上电到应用开发环境可用的完整过程。

目前已经完成:

  • 开发板通过 UART0 正常启动并进入 Linux。
  • Windows、Ubuntu 虚拟机与开发板能够通过网线直连通信。
  • SC4336P 摄像头、ISP、VI、VPSS、H.265 编码和 RTSP 推流正常。
  • VLC 可以显示实时视频,镜头已经完成手动调焦。
  • Ubuntu 与开发板之间的 NFS 双向读写正常。
  • 海思 ARM musl 交叉编译器可用。
  • 自行编译的 ARM 程序已经在开发板上成功运行。
  • 厂家 Ubuntu 虚拟机及 Hi3516CV610 SDK 已准备完成。

下一阶段是编译和运行sample_venc,开始研究 MPP 应用层流程。

2 硬件连接

开发板主要接口:

  • Type-C:默认 5V 电源输入。
  • UART0 Debug:系统启动日志和命令行调试。
  • RJ45:有线网络。
  • Sensor 0/1:摄像头 FPC 接口。

首次启动需要两条独立连接:

  1. USB 转串口模块连接电脑和开发板 UART0。
  2. Type-C 为开发板供电,使用 5V、1A 或以上电源。

注意:只插 Type-C 电源不会产生 UART0 的 COM 端口。COM 端口来自 CH340/CH343 USB 转串口模块。

安全要求:

  • 摄像头禁止带电插拔。
  • 摄像头 FPC 排线不能插反。
  • 不要在普通启动时按升级键。
  • 不要把 Zadig 用于 CH340/CH343 普通串口驱动。
  • 暂时不要烧写固件、修改 U-Boot 或驱动。

3 Windows 串口调试

3.1 检查串口模块

将 USB 转串口模块单独插入电脑,它即使没有连接开发板也应该被 Windows 识别。

设备管理器中正常应出现类似:

USB-SERIAL CH340 (COMx)

如果只有“蓝牙链接上的标准串行 COM3/COM4”,说明 USB 转串口模块尚未被识别。

排查顺序:

  1. 重新插拔 USB 转串口模块。
  2. 更换电脑 USB 接口,不经过 USB Hub。
  3. 安装资料包中的 CH340 驱动。
  4. Win11 下仍不稳定时再考虑使用 CH343。

3.2 串口参数

使用 SecureCRT、XCOM 或 Xshell:

波特率:115200 数据位:8 停止位:1 校验:无 流控:无

先打开串口窗口,再给开发板 Type-C 上电。看到 U-Boot 和 Linux 启动日志,表示基本启动正常。

4 开发板系统信息

开发板实测系统:

Linux 5.10.221 ARMv7 32 位 架构:armv7l C 库:musl 1.2.3 BusyBox:1.34.1 交叉编译器系列:arm-v01c02-linux-musleabi-gcc 10.3.0

查看命令:

uname-auname-mcat/proc/version busybox

开发板是裁剪过的 BusyBox 嵌入式 Linux,不是 Ubuntu,因此:

  • 没有apt。
  • 通常没有sudo。
  • 不一定存在/etc/os-release。
  • 软件应在 Ubuntu 中交叉编译,再传到板子运行。

5 电脑与开发板网线直连

没有路由器也可以调试。只要电脑、虚拟机和开发板处于同一静态网段即可。

本节记录的是此前的192.168.9.x直连方案。后来改为交换机连接并给板子配置10.20.3.91/28,详见 交换机静态 IP 联网配置。后续命令中的旧地址需要按实际网络环境调整。

本次使用的地址:

开发板 eth0:192.168.9.9/24 Ubuntu 虚拟机:192.168.9.119/24

5.1 开发板配置

ifconfigeth0192.168.9.9 netmask255.255.255.0 up

5.2 Ubuntu 配置

先确认网卡名称:

ip-braddr

假设有线网卡是ens38:

sudoifconfigens38192.168.9.119 netmask255.255.255.0 up

不需要设置网关和 DNS。

5.3 连通性测试

Ubuntu 测试开发板:

ping-c4192.168.9.9

开发板测试 Ubuntu:

ping-c4192.168.9.119

Windows 也可以测试:

ping 192.168.9.9

6 使用 PQTools 点亮摄像头

进入开发板 PQTools 目录:

cd/system/Hi3516CV610-PQ-V1.0.2.0

SC4336P 摄像头:

./PQTools.sh-ssc4336p

其他可能的型号:

./PQTools.sh-ssc450ai ./PQTools.sh-sgc8613

只能选择实际摄像头型号,不能随意尝试。

检查 RTSP 服务:

netstat-an|grep554

正常应看到 554 端口处于监听状态。

7 使用 VLC 播放视频

RTSP 地址:

rtsp://192.168.9.9:554/0

该地址需要放入 VLC 的“打开网络串流”,不能直接当作 PowerShell 命令执行。

Ubuntu 虚拟机中建议关闭硬件解码:

vlc --avcodec-hw=none --rtsp-tcp --network-caching=1000rtsp://192.168.9.9:554/0

VMware 中出现以下日志,表示虚拟显卡不支持 VA-API/VDPAU 硬件解码:

vaInitialize: unknown libva error Failed to open VDPAU backend

这类错误可通过软件解码规避。Windows 能够 Ping 通开发板时,直接用 Windows VLC 播放通常更稳定。

如果出现少量:

Could not find ref with POC

通常表示刚接入 H.265 码流时缺少参考帧,或虚拟机解码/缓存不足。持续出现时使用 TCP、增加缓存,并优先在 Windows VLC 播放。

8 摄像头调焦

如果画面能显示但整体呈现大面积光斑和均匀模糊,通常是镜头没有对焦,不是网络或 ISP 故障。

调焦方法:

  1. 将带文字的纸放在镜头前约 1~2 米。
  2. 保持 VLC 实时播放。
  3. 轻轻旋转镜头前端圆形镜筒。
  4. 每次只旋转一点,观察文字清晰度。
  5. 越来越糊时改为反方向旋转。

不要拉扯模组或排线,不要把镜头完全拧下,也不要触摸镜片玻璃。确认镜片表面没有保护膜。

9 检查媒体内存和负载

查看 MMZ 媒体内存:

cat/proc/umap/media-mem

本次 PQTools 推流实测:

MMZ 总量:96MB 已用:约 83MB 剩余:约 13MB

内存记录中可看到:

vi isp vpss h265e pqt_mbuf

说明当前媒体链路为:

SC4336P Sensor → ISP/VI → VPSS → H.265 VENC → RTSP

查看 CPU:

top

实测ittb_stream sc4336pCPU 占用约 4.8%,推流负载正常。PQTools 的 MMZ 占用较大,主要用于测试和 ISP 调试,不适合作为最终产品应用。

10 配置 NFS

10.1 NFS 的用途

NFS 让开发板把 Ubuntu 的目录当作自己的目录使用:

Ubuntu:/nfs ↕ 网线 开发板:/tmp

使用方式:

Ubuntu 写代码和交叉编译 → 输出文件放入 /nfs → 开发板在 /tmp 中立即看到并运行

这样无需反复烧写 Flash,也方便保存视频、日志和调试文件。

10.2 Ubuntu 导出目录

确认目录:

ls-ld/nfs

安装服务:

sudoaptupdatesudoaptinstallnfs-kernel-server

导出给开发板:

sudoexportfs-i-orw,sync,no_subtree_check,no_root_squash,insecure192.168.9.9:/nfssudoexportfs-v

永久配置/etc/exports时加入:

/nfs 192.168.9.9(rw,sync,no_subtree_check,no_root_squash,insecure)

然后执行:

sudoexportfs-ravsudosystemctl restart nfs-kernel-server

10.3 开发板挂载

mount-tnfs-onolock,vers=3192.168.9.119:/nfs /tmp

检查:

mount|grepnfsls-la/tmp

双向测试:

Ubuntu:

echo"hello hi3516">/nfs/nfs_test.txt

开发板:

cat/tmp/nfs_test.txtecho"hello from hi3516">/tmp/board_test.txtsync

Ubuntu:

cat/nfs/board_test.txt

本次双向测试已经成功。

卸载前先离开挂载目录:

cd/syncumount/tmp

11 安装交叉编译器

工具链压缩包:

gcc-20240318-arm-v01c02-linux-musleabi.tgz

解压安装:

tar-xzfgcc-20240318-arm-v01c02-linux-musleabi.tgzcdgcc-20240318-arm-v01c02-linux-musleabichmod+x install_gcc_toolchain.shsudo./install_gcc_toolchain.shsource/etc/profile

检查:

whicharm-v01c02-linux-musleabi-gcc arm-v01c02-linux-musleabi-gcc--version

默认安装位置通常是:

/opt/linux/x86-arm/arm-v01c02-linux-musleabi-gcc

12 验证交叉编译和运行

Ubuntu 创建测试程序:

printf'#include <stdio.h>\nint main(void){puts("hello Hi3516CV610");return 0;}\n'>/nfs/hello.c

编译:

arm-v01c02-linux-musleabi-gcc /nfs/hello.c-o/nfs/hello_armfile/nfs/hello_arm

结果应包含:

ELF 32-bit ARM interpreter /lib/ld-musl-arm.so.1

开发板运行:

cd/tmpchmod+x hello_arm ./hello_arm

本次实际输出:

hello Hi3516CV610

这证明交叉编译器、NFS、CPU 架构和开发板运行环境全部正常。

13 厂家虚拟机和 SDK

厂家 SDK 源码目录:

~/Hi/hi3516cv610_1020_musl/Hi3516CV610_SDK_V1.0.2.0/smp/a7_linux/source

主要结构:

source/ ├── bsp 整个系统和固件编译入口,暂时不使用 ├── cfg.mak ├── common ├── interdrv 芯片内部驱动,当前不研究 ├── Makefile.param ├── mpp 媒体应用和 sample,当前重点 ├── osal ├── out 海思二进制库和模块,不修改 └── scripts

当前只研究 MPP 应用层,不研究协议、底层驱动、U-Boot 和完整固件构建。

14 下一步编译 sample_venc

进入 SDK 的source目录后查找:

source/etc/profilefindmpp/sample-maxdepth3-typed-iname"*venc*"-printfindmpp/sample-maxdepth4-typef-name"Makefile"|grep-ivenc

目录可能是:

mpp/sample/venc

或者:

mpp/sample/sample_venc

进入实际目录:

cd实际找到的目录ls-lamake2>&1|tee~/sample_venc_build.log

查找编译结果:

find.-typef-name"sample_venc"-lsfile./sample_venc

复制到 NFS:

cp./sample_venc ~/nfs/chmod+x ~/nfs/sample_venc

运行前必须停止 PQTools,避免ittb_stream与sample_venc同时占用 VI、ISP、VPSS 和 VENC。最稳妥的方法是重启开发板,然后只启动sample_venc。

开发板重新配置网络并挂载 NFS 后运行:

cd/tmpchmod+x sample_venc ./sample_venc01

按照厂家说明,后续交互依次选择:

0 c

VLC 地址:

rtsp://192.168.9.9:554/live.h264

15 sample_venc 应重点研究的应用流程

后续阅读源码时只跟踪以下主线:

系统和 VB/MMZ 初始化 → Sensor 与 ISP 启动 → 创建 VI → 创建 VPSS → 创建 VENC → 绑定 VI → VPSS → VENC → 获取编码码流 → 保存文件或发送 RTSP → 停止线程 → 按相反顺序解绑和释放资源

模块的简单理解:

  • ISP:曝光、白平衡、去噪、色彩和图像质量。
  • VI:从 Sensor 接收视频帧。
  • VPSS:缩放、裁剪、增强并生成不同尺寸的视频帧。
  • VENC:编码为 H.264、H.265 或 JPEG。
  • 应用层:控制启停、获取码流、保存录像和网络发送。

16 常见问题速查

Windows 没有 COM 端口

  • Type-C 只是供电,UART0 需要独立 USB 转串口模块。
  • 检查 CH340 驱动;Win11 不稳定时再考虑 CH343。
  • 不要用 Zadig 接管普通 USB Serial。

能 Ping 但 VLC 打不开

  • 确认 PQTools 已启动。
  • 执行netstat -an | grep 554。
  • 地址必须是rtsp://192.168.9.9:554/0。
  • 暂停 VPN、代理并检查防火墙。

视频非常模糊

  • 先旋转镜头手动调焦。
  • 检查镜头保护膜。
  • 不要先调整 ISP 参数。

NFS Permission denied

  • 确认导出的是真实目录。
  • /home/youyan/nfs之类路径只是示例,必须以pwd为准。
  • 确认/etc/exports或exportfs已允许开发板 IP192.168.9.9。

板子没有 apt

  • 这是 BusyBox 嵌入式 Linux,不是 Ubuntu。
  • 在 Ubuntu 交叉编译,再通过 NFS 到板子运行。

sample_venc 运行失败或资源忙

  • 不要同时运行 PQTools/ittb_stream。
  • 重启板子后只运行sample_venc。
  • 确认摄像头型号和配置一致。

录像文件保存位置

  • 不要把大文件写入板载 Flash。
  • 优先保存到 NFS 或 SD 卡。
  • 断电前执行sync。

17 最终开发闭环

Windows 串口观察启动日志 → Ubuntu 交叉编译应用 → NFS 共享到开发板 → 开发板运行程序 → VI/ISP/VPSS/VENC 处理视频 → VLC 验证 RTSP → 保存日志和码流到 Ubuntu

完成sample_venc后,再开始对照源码绘制应用流程图,并围绕初始化、绑定、取流和退出四部分研究 MPP API。

返回列表