当前位置: 首页 > news >正文

【全志V821_FoxPi】6-2 IMX219 MIPI摄像头适配

【全志V821_FoxPi】6-2 IMX219 MIPI摄像头适配

  • 一、背景
  • 二、摄像头参数
    • 2-1 实物图
    • 2-2 模组规格书
    • 2-3 15pin 接口原理图
    • 2-4 介绍
    • 2-5 主要技术参数
  • 三、设备树配置
    • 3-1 pio配置
    • 3-2 twi0节点配置
    • 3-3 vind0节点配置
  • 四、内核配置
  • 五、软件包配置
  • 六、打包测试
    • 6-1 内核启动信息
    • 6-2 查看iic节点
    • 6-3 查看vi节点
    • 6-4 mpp sample_virvi 采集图像帧
    • 6-5 TigerISP 测试
  • 七、FoxPi板+拓展板实物图

一、背景

全志V821这颗芯片的定位是IPC,所以对摄像头的支持是不会少的
在这里主要以 2lane 的MIPI作为适配
首先登场的是IMX219,这颗摄像头很多人都熟悉,在树莓派、Jetson Nano、OrangePi等开发板都有出现过,现在我们将在FoxPi开发板适配这款摄像头
注:这里使用的SDK为V1.2

二、摄像头参数

2-1 实物图

在这里插入图片描述

2-2 模组规格书

在这里插入图片描述

2-3 15pin 接口原理图

在这里插入图片描述

2-4 介绍

IMX219 是索尼(Sony)推出的一款 1/4 英寸 CMOS 图像传感器,主要用于移动设备和嵌入式视觉应用。其分辨率为 3280 × 2464(约 800 万像素),支持 MIPI CSI-2 接口,广泛应用于树莓派摄像头模块、无人机、安防监控等领域。

2-5 主要技术参数

  • 分辨率: 3280 × 2464(8MP)
  • 像素尺寸: 1.12 μm × 1.12 μm
  • 传感器尺寸: 1/4 英寸
  • 最大帧率:
    1080p(1920 × 1080)@ 30fps
    720p(1280 × 720)@ 60fps
  • 输出接口: MIPI CSI-2(2/4 Lane)
  • 动态范围: 约 71 dB
  • 功耗: 典型值 225 mW(工作状态)

三、设备树配置

3-1 pio配置

这里使用的是twi0,使用PA3 PA4

	twi0_pins_default: twi0@0 {pins = "PA3", "PA4";function = "twi0";bias-pull-up;allwinner,drive = <0>;};twi0_pins_sleep: twi0@1 {pins = "PA3", "PA4";function = "gpio_in";};

使用PA2作为复位引脚

	csi_rst_pins_a: csi_rst{allwinner,pins = "PA2"; };

3-2 twi0节点配置

&twi0 {clock-frequency = <100000>;pinctrl-0 = <&twi0_pins_default>;pinctrl-1 = <&twi0_pins_sleep>;pinctrl-names = "default", "sleep";/* For stability and backwards compatibility, we recommend setting 'twi_drv_used' to 1 */twi_drv_used = <1>;status = "okay";};

3-3 vind0节点配置

注:imx219 器件地址是0x10,这里的twi地址要配置成0x20

&vind0 {csi_top = <240000000>;vind0_clk = <250000000>;status = "okay";// csi0: csi@45820000 {// 	pinctrl-0 = <>;// 	pinctrl-1 = <>;// 	pinctrl-names = "csi_sm-default","csi_sm-sleep";// 	status = "disabled";// };csi1: csi@45821000 {pinctrl-names = "default","sleep";pinctrl-0 = <&ncsi_bt656_pins_a>;pinctrl-1 = <&ncsi_bt656_pins_b>;status = "disabled";};tdm0: tdm@45908000 {work_mode = <0x1>;};isp00:isp@45900000 {work_mode = <0x1>;ldci_select = <0x1>;};isp01:isp@458ffffc {status = "okay";rpbuf = <&rpbuf_controller0>;rpmsg-ser-name = "43030000.e907_rproc";};isp10:isp@4 {status = "disabled";};scaler00:scaler@45910000 {work_mode = <0x1>;};scaler01:scaler@4590fffc {work_mode = <0xff>;status = "okay";rpmsg-ser-name = "43030000.e907_rproc";};scaler10:scaler@45910400 {work_mode = <0x1>;status = "okay";};scaler11:scaler@459103fc {work_mode = <0xff>;rpmsg-ser-name = "43030000.e907_rproc";status = "okay";};actuator0: actuator@2108180 {device_type = "actuator0";actuator0_slave = <0x18>;actuator0_af_pwdn = <>;actuator0_afvdd = "afvcc-csi";actuator0_afvdd_vol = <2800000>;status = "disabled";};flash0: flash@2108190 {device_type = "flash0";flash0_type = <2>;flash0_en = <>;flash0_mode = <>;flash0_flvdd = "";flash0_flvdd_vol = <>;device_id = <0>;status = "disabled";};sensor0: sensor@5812000 {device_type = "sensor0";sensor0_mname = "imx219";sensor0_twi_cci_id = <0>;	/* 所使用的twi id号,本例中使用的是twi0,故填写为0 */sensor0_twi_addr = <0x20>;sensor0_mclk_id = <0>;		/* 所使用的mclk id号,本例中使用的是MCLK0,故填写为0 */sensor0_pos = "rear";sensor0_isp_used = <1>;		/* 所使用的sensor为raw sensor,需要过ISP处理,故填写为1 */sensor0_fmt = <1>;			/* sensor输出的图像格式,YUV:0,RAW:1 */sensor0_stby_mode = <0>;sensor0_vflip = <0>; 		/* VIPP 图像垂直翻转 */sensor0_hflip = <0>;		/* VIPP 图像水平翻转 */sensor0_iovdd-supply = <>;sensor0_iovdd_vol = <>;sensor0_avdd-supply = <>;sensor0_avdd_vol = <>;sensor0_dvdd-supply = <>;sensor0_dvdd_vol = <>;sensor0_power_en = <>;          sensor0_reset = <&pio PA 2 GPIO_ACTIVE_LOW>;sensor0_pwdn = <>;status = "okay";};sensor1: sensor@5812010 {device_type = "sensor1";sensor1_mname = "gc1084_mipi_2";sensor1_twi_cci_id = <0>;sensor1_twi_addr = <0x7e>;sensor1_mclk_id = <1>;sensor1_pos = "front";sensor1_isp_used = <1>;sensor1_fmt = <1>;sensor1_stby_mode = <0>;sensor1_vflip = <0>;sensor1_hflip = <0>;sensor1_iovdd-supply = <>;sensor1_iovdd_vol = <>;sensor1_avdd-supply = <>;sensor1_avdd_vol = <>;sensor1_dvdd-supply = <>;sensor1_dvdd_vol = <>;sensor1_power_en = <>;sensor1_reset = <&pio PD 13 GPIO_ACTIVE_LOW>;status = "disabled";};sensor_list0:sensor_list@200b820 {status	= "disabled";};sensor_list1:sensor_list@200b830 {status	= "disabled";};vinc00:vinc@45830000 {vinc0_csi_sel = <0>;vinc0_mipi_sel = <0>;vinc0_isp_sel = <0>;vinc0_isp_tx_ch = <0>;vinc0_tdm_rx_sel = <0>;vinc0_rear_sensor_sel = <0>;vinc0_front_sensor_sel = <0>;vinc0_sensor_list = <0>;work_mode = <0x1>;status = "okay";};vinc01:vinc@4582fffc {vinc1_csi_sel = <0>;vinc1_mipi_sel = <0>;vinc1_isp_sel = <1>;vinc1_isp_tx_ch = <0>;vinc1_tdm_rx_sel = <1>;vinc1_rear_sensor_sel = <0>;vinc1_front_sensor_sel = <0>;vinc1_sensor_list = <0>;status = "okay";rpmsg-ser-name = "43030000.e907_rproc";delay_init = <1>;};vinc10:vinc@45831000 {vinc4_csi_sel = <0>;vinc4_mipi_sel = <0>;vinc4_isp_sel = <0>;vinc4_isp_tx_ch = <0>;vinc4_tdm_rx_sel = <0>;vinc4_rear_sensor_sel = <0>;vinc4_front_sensor_sel = <0>;vinc4_sensor_list = <0>;work_mode = <0x1>;status = "okay";};vinc11:vinc@45830ffc {vinc5_csi_sel = <0>;vinc5_mipi_sel = <0>;vinc5_isp_sel = <1>;vinc5_isp_tx_ch = <0>;vinc5_tdm_rx_sel = <1>;vinc5_rear_sensor_sel = <0>;vinc5_front_sensor_sel = <0>;vinc5_sensor_list = <0>;status = "okay";rpmsg-ser-name = "43030000.e907_rproc";delay_init = <1>;};};

四、内核配置

	CONFIG_SUPPORT_ISP_TDM=yCONFIG_TDM_ONE_BUFFER=yCONFIG_SENSOR_IMX219=yCONFIG_SENSOR_IMX219_TWO_LANE_MIPI=y# CONFIG_SENSOR_GC1084_MIPI is not set# CONFIG_SENSOR_GC05A2 is not set

五、软件包配置

openwrt/target/v821/v821-foxpi_ipc/modules.mk添加:

#cp sensor imx219 ko to rootfs
define KernelPackage/sensor-imx219SUBMENU:=$(VIDEO_MENU)TITLE:=Sensor imx219 support (staging)DEPENDS:= +kmod-vin-v4l2FILES+=$(CONFIG_EXTERNAL_KERNEL_TREE)/bsp/drivers/vin/modules/sensor/imx219.koAUTOLOAD:=$(call AutoProbe,imx219_mipi)
endefdefine KernelPackage/sensor-imx219/descriptionKernel modules for sensor-imx219 support
endef$(eval $(call KernelPackage,sensor-imx219))

让驱动自动打包进文件系统:make menuconfig,搜索imx219,选中 *
在这里插入图片描述
在这里插入图片描述

修改驱动自动加载脚本
openwrt/target/v821/v821-foxpi_ipc/busybox-init-base-files/etc/init.d/S00mpp
添加:

    [ -f $MODULES_DIR/imx219.ko ] && insmod $MODULES_DIR/imx219.ko

在这里插入图片描述

六、打包测试

6-1 内核启动信息

启动的时候内核成功加载了imx219驱动
在这里插入图片描述

6-2 查看iic节点

root@TinaLinux:/mnt/extsd# i2cdetect -y 00  1  2  3  4  5  6  7  8  9  a  b  c  d  e  f
00:          -- -- -- -- -- -- -- -- -- -- -- -- --
10: UU -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
20: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
30: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
40: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
50: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
60: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
70: -- -- -- -- -- -- -- --

6-3 查看vi节点

cat /sys/kernel/debug/mpp/vi

root@TinaLinux:/mnt/extsd# cat /sys/kernel/debug/mpp/vi
*****************************************************
VIN hardware feature list:
mcsi 2, ncsi 1, parser 2, isp 1, vipp 2, dma 2
CSI_VERSION: CSI300_600, ISP_VERSION: ISP603_100
CSI_CLK: 240000000, ISP_CLK: 0
*****************************************************
vi0:
imx219 => mipi0 => csi0 => tdm_rx0 => isp0 => vipp0
input => hoff: 0, voff: 0, w: 2592, h: 1944, fmt: RGGB10
output => width: 1280, height: 720, fmt: NV21
interface: MIPI, isp_mode: NORMAL, hflip: 0, vflip: 0
prs_in => x: 2592, y: 1944, hb: 1200, hs: 3597
bkuf => cnt: 3 size: 1384448 rest: 3, work_mode: offline
tdmbuf => cnt: 0 size: 0, cmp_ratio: 0
ispbuf => cnt: 4 size: 7593984/65536/65536/65536, cmp_ratio: 0
frame => cnt: 198, lost_cnt: 74, error_cnt: 0
internal => avg: 50(ms), max: 51(ms), min: 49(ms)
CSI Bandwidth: 0
*****************************************************
vi1:
(efault) => mipi0 => csi0 => tdm_rx1 => isp1 => vipp1
input => hoff: 0, voff: 0, w: 0, h: 0, fmt: NULL
output => width: 0, height: 0, fmt: NULL
interface: NULL, isp_mode: NORMAL, hflip: 0, vflip: 0
prs_in => x: 0, y: 0, hb: 0, hs: 0
bkuf => cnt: 0 size: 0 rest: 0, work_mode: offline
tdmbuf => cnt: 0 size: 0, cmp_ratio: 0
ispbuf => cnt: 4 size: 0/0/0/0, cmp_ratio: 0
frame => cnt: 0, lost_cnt: 0, error_cnt: 0
internal => avg: 0(ms), max: 0(ms), min: 0(ms)
CSI Bandwidth: 0
*****************************************************
vi4:
(efault) => mipi0 => csi0 => tdm_rx0 => isp0 => vipp4
input => hoff: 0, voff: 0, w: 0, h: 0, fmt: NULL
output => width: 0, height: 0, fmt: NULL
interface: NULL, isp_mode: NORMAL, hflip: 0, vflip: 0
prs_in => x: 0, y: 0, hb: 0, hs: 0
bkuf => cnt: 0 size: 0 rest: 0, work_mode: offline
tdmbuf => cnt: 0 size: 0, cmp_ratio: 0
ispbuf => cnt: 4 size: 7593984/65536/65536/65536, cmp_ratio: 0
frame => cnt: 0, lost_cnt: 0, error_cnt: 0
internal => avg: 0(ms), max: 0(ms), min: 0(ms)
CSI Bandwidth: 0
*****************************************************
vi5:
(efault) => mipi0 => csi0 => tdm_rx1 => isp1 => vipp5
input => hoff: 0, voff: 0, w: 0, h: 0, fmt: NULL
output => width: 0, height: 0, fmt: NULL
interface: NULL, isp_mode: NORMAL, hflip: 0, vflip: 0
prs_in => x: 0, y: 0, hb: 0, hs: 0
bkuf => cnt: 0 size: 0 rest: 0, work_mode: offline
tdmbuf => cnt: 0 size: 0, cmp_ratio: 0
ispbuf => cnt: 4 size: 0/0/0/0, cmp_ratio: 0
frame => cnt: 0, lost_cnt: 0, error_cnt: 0
internal => avg: 0(ms), max: 0(ms), min: 0(ms)
CSI Bandwidth: 0
*****************************************************
CSI Bandwidth total 0M, ISP Bandwidth total 0M
*****************************************************

6-4 mpp sample_virvi 采集图像帧

参考 https://docs.aw-ol.com/docs/soc/v821/mpp/mpp_sample_video
在/mnt/extsd 下执行
./sample_virvi -path ./sample_virvi.conf

在这里插入图片描述
成功生成了 test.yuv

root@TinaLinux:/mnt/extsd# ls -lh
drwxr-xr-x    2 root     root       16.0K Oct  7  2025 System Volume Information
-rwxr-xr-x    1 root     root        2.2M Jul  8  2024 awTuningApp_isp603
-rwxr-xr-x    1 root     root        6.5M Jan  1  1980 coredump-awTuningApp_isp-915-11-1011
-rwxr-xr-x    1 root     root       37.7K Jan  1  1980 isp0_2592_1944_20_0_imx219_ctx_saved.bin
-rwxr-xr-x    1 root     root        4.3M Oct  7  2025 sample_virvi
-rwxr-xr-x    1 root     root        2.8K Oct  7  2025 sample_virvi.conf
-rwxr-xr-x    1 root     root       65.9M Jan  1  1980 test.yuv

6-5 TigerISP 测试

在这里插入图片描述

七、FoxPi板+拓展板实物图

在这里插入图片描述

http://www.dtcms.com/a/453784.html

相关文章:

  • Python Keras深度学习
  • dede门户网站模版平台推广活动策划方案
  • 什么是文件上传漏洞? 产生该漏洞的原因是什么 ? 它的危害有哪些?
  • 成都旅行社网站建设设计师网址大全
  • 两种方法解决「将数组和减半的最少操作次数」
  • AI 与 Agent 技术体系知识图谱
  • 线性表的顺序和链式存储
  • 活动策划网站源码广西住房城乡建设领域
  • 做彩票网站犯法吗wordpress 标题颜色
  • 怎么科研绘图?怎么批量搜索高质量文献?Nature, Science, Cell
  • [hpatch]差分算法学习笔记 -- patch解压补丁
  • STM32G474 STM32CubeMX SPL06-001驱动程序
  • 域名注册好怎么建设网站工作态度和责任心感悟
  • 网站充值链接怎么做php网站空间支持
  • 做网站商城如何优化3 阐述网站建设的步骤过程 9分
  • 沈阳建网站公司wordpress posts page
  • [论文阅读] 软件工程 | 量子计算即服务(QCaaS)落地难?软件工程视角的解决方案来了
  • 上海网站建设的企哪些网站可以直接做英文字谜
  • 北京网站建设模板主题做一个小游戏要多少钱
  • jsx加密详解
  • 网站导航如何用响应式做管理咨询公司收费标准
  • 自助建站网站源码网站被百度k
  • 整体设计 逻辑系统程序 之15 Go 语言 / For 语句 / Do 句子
  • 贵阳工程建设招聘信息网站推广方式英文
  • 对称破局:双变量求值镜像之道
  • 智慧物流教师赛的意义:培养适应行业发展的新型教师
  • VBA之Word应用第四章第三节:段落集合Paragraphs对象的方法(一)
  • 微企点网站建设如何学习网站开发编程
  • 住房和城乡建设部网站买卖合同汽车拆车件网上商城
  • Sourcetree克隆/获取gitee工程,Git获取SSH密钥