在嵌入式智能化产品中,诸多会涉及图像的采集与显示。本文分享一个基于富瀚微MC6357的开发板点亮一颗4K的sensor的项目实践——它通过RT-Thread操作系统、sensor采集图像、ISP处理、RTSP协议栈,实现了图像传感器实时图像采集并在终端显示。
MC6357开发板本次开放了试用申请通道,可以报名申请一整套开发板+sensor的试用体验,感受一颗sensor点亮的过程
目录
01 |
环境搭建 |
02 |
sensor 适配 |
03 |
程序运行 |
04 |
成品效果 |
RT-Thread
一、环境搭建
MC6357主要采用RPC(Remote Procedure Call,远程过程调用)方案,由主处理器和协处理器通过xbus(跨核通信总线),协同进行异构双核通信工作。
主处理器:由Linux作为主核(Master)负责系统管理和复杂应用。
协处理器:由RT-Thread作为从核(Slave)负责实时性要求高的任务,专职处理ISP/DSP/NN等视频核心业务,保证ISP/NN的硬实时。
其通信流程:
1. Linux侧发起调用:Linux应用程序调用一个本地RPC客户端函数:FH_RPC_Customer_Command();
2. 序列化与发送:RPC客户端将函数名、参数等序列化为二进制消息,通过Linux的xbus驱动发送。
3. 跨核传输:消息通过物理通道(如Mailbox)传递到RT-Thread侧。
4. RT-Thread侧接收与执行:RT-Thread的xbus驱动收到数据,RPC服务端解析消息,找到对应的本地函数并执行。
5. 返回结果:执行结果(或错误码)被序列化,通过xbus驱动回传到Linux侧,RPC客户端反序列化后返回给调用者。

MC6357基于双核架构,可以实现支持长电、AOV、Pre-rolling(预录)、UVC(USB相机类)及快起等低功耗与快速启动方案,以最基础的长电方案模式为例,进行点亮一颗4K的sensor的点亮。
配置编译环境:选择开发板型号与运行模式,长电选择“5.mc6357”
编译固件:一键编译包含uboot、kernel、driver、sample等大部分组件

RT-Thread
二、sensor 适配
Sensor适配的接入条件
1. 确保SENSORVS/HS/PIX_CLK以及D0~D15信号输入正常
2. 确保以上管脚的IO复用正常,IO驱动能力配置正常
3. 最后调用VICAP的接口配置VI属性正常接入
主要分为以下几个步骤
1. 创建sensor,根据需要实现sensor的接口函数。
2. 注册sensor至ISP,调用API_ISP_SensorRegCb接口。
3. 初始化sensor,调用API_ISP_SensorInit 接口。
4. 配置sensor输出制式,调用API_ISP_SetSensorFmt接口。
1) sensor库制作
SDK制作sensor库的路径,以4K规格的OVOS08A10为例

Sensor库的主要函数实现,根据sensor手册完成初始化填充。

最终编译生成sensor的静态库,供SDK的编译应用程序调用。
2) 新sensor的应用代码,仿照已适配sensor在工程中进行添加。

3) sensor应用属性配置选择,通过UI界面配置sensor、ISP、DSP、编码、应用功能等属性。

RT-Thread
三、开发板的烧录运行
1)烧录bsp组件:设置开发板的strapping pin进行引导程序、内核的烧录。

在window端打开SDK中的烧录软件,根据芯片启动示意图,烧录uboot、kernel、dtb等组件

2)运行程序:内核起来后,设置网络、加载驱动、运行应用程序

RT-Thread
四、视频流的实时预览
用vlc软件通过rtsp协议拉取视频流

