手把手教你在 RTOS 系统添加 Sensor

Viewed 59

问题描述


作为RISC-V双核AI开发板的热门选择,K230的视觉应用扩展一直是开发者关注的核心。Sensor(传感器/摄像头)作为视觉数据输入的关键,其适配效果直接影响开发板的场景落地能力。今天就用最简洁的流程,带大家快速掌握RTOS系统下Sensor的适配逻辑,以常用的IMX219为例,核心步骤+避坑指南一次讲透!

image.png

一、K230 Sensor适配框架

K230的Sensor适配采用分层架构,记住核心目标即可:

  • 硬件层:IMX219、ov9732等具体Sensor模组
  • 驱动层:建立系统与硬件的通信,核心是配置寄存器、实现对摄像头的各种控制函数(如曝光、gain等控制)
  • 应用层:让系统能调用Sensor的分辨率、帧率等功能适配的最终目的:让系统识别Sensor、正常传输数据,输出有效图像。

image.png

二、核心适配步骤

1. 开启系统支持:配置编译开关

  • 先让系统“认识”新Sensor,支持编译控制;

  • 编辑~/src/rtsmart/mpp/Kconfig,添加Sensor的开关配置,支持通过make menuconfig启用/禁用;

  • 编辑~/src/rtsmart/mpp/kernel/sensor/Makefile,添加编译规则,确保启用后自动编译驱动文件。

2. 驱动层核心配置:打通硬件通信

  • 这是适配关键,重点做3件事:

  • 定义Sensor模式:在k_sensor_comm.h中添加分辨率、帧率、CSI接口的组合配置;

  • 创建驱动目录:拷贝现有Sensor(如gc2093)模板,修改为目标Sensor专属目录;

  • 配置寄存器+实现核心函数:添加Sensor初始化寄存器序列(需从模组厂获取),实现探针函数(开机识别Sensor)和功能映射(电源、曝光、增益控制等)。

3. 应用层适配:让上层能调用

  • 在mpi_sensor_type_to_mirror.c中添加Sensor支持的模式

  • 在mpi_sensor.c中配置默认参数(CSI接口、分辨率、帧率等)

  • 新增ISP配置文件(xml/json格式),放在sensor/config目录下。

4. 编译运行:验证效果

  • 执行make menuconfig勾选目标Sensor,保存编译生成镜像;

  • 用烧录工具将镜像写入TF卡,插入K230开发板上电启动即可。

三、常见问题避坑指南

  • 黑屏无数据:执行cat /proc/umap/vicap查看Input-Frames,为0则检查驱动或硬件连接;

  • I2C通信失败:用i2c_read命令读取芯片ID,排查总线、供电或接线;

  • 数据传输异常:K230仅支持 800M/1200M MIPI PHY频率,切换适配即可。

总结

K230的Sensor适配核心是“配置-驱动-应用”三步走,其他Sensor(如ov9732、gc2093)均可复用这套框架,只需替换硬件相关参数。按流程操作,新手也能快速解锁视觉应用!

请注意,这种场景下适配输出的是未经过标定和优化的 Sensor 图像,为实现最佳图像效果,后续需进一步完成摄像头标定与图像调优工作。后续专属的摄像头标定及图像调优教程即将上线,敬请持续关注!

详细参考链接https://www.kendryte.com/k230_rtos/zh/main/advanced_development_guide/how_to_add_sensor.html

1 Answers