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 接口。
首次启动需要两条独立连接:
- USB 转串口模块连接电脑和开发板 UART0。
- 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 转串口模块尚未被识别。
排查顺序:
- 重新插拔 USB 转串口模块。
- 更换电脑 USB 接口,不经过 USB Hub。
- 安装资料包中的 CH340 驱动。
- 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/245.1 开发板配置
ifconfigeth0192.168.9.9 netmask255.255.255.0 up5.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.119Windows 也可以测试:
ping 192.168.9.96 使用 PQTools 点亮摄像头
进入开发板 PQTools 目录:
cd/system/Hi3516CV610-PQ-V1.0.2.0SC4336P 摄像头:
./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/0VMware 中出现以下日志,表示虚拟显卡不支持 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~2 米。
- 保持 VLC 实时播放。
- 轻轻旋转镜头前端圆形镜筒。
- 每次只旋转一点,观察文字清晰度。
- 越来越糊时改为反方向旋转。
不要拉扯模组或排线,不要把镜头完全拧下,也不要触摸镜片玻璃。确认镜片表面没有保护膜。
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-server10.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.txtsyncUbuntu:
cat/nfs/board_test.txt本次双向测试已经成功。
卸载前先离开挂载目录:
cd/syncumount/tmp11 安装交叉编译器
工具链压缩包:
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-gcc12 验证交叉编译和运行
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 cVLC 地址:
rtsp://192.168.9.9:554/live.h26415 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。