全志D1-H (MQ-Pro)驱动 OV5640 摄像头

在这里插入图片描述

内核配置

运行 m kernel_menuconfig 勾选下列驱动

Device Drivers  --->
    <*> Multimedia support  --->
        [*]   V4L platform devices  --->
            <*>   Video Multiplexer
        [*]   SUNXI platform devices  --->
            <*>   sunxi video input (camera csi/mipi isp vipp)driver
            <M>     v4l2 new driver for SUNXI
            <*>     use cci function
                        select cci or cci to twi (chenge cci to twi)  --->
            [*]     use IOMMU for memery alloc
            [*]     ISP WDR module
            [*]     sensor same i2c addr
            sensor driver select  --->
                <M> use ov5640 driver
        [*]   Memory-to-memory multimedia devices  --->
            <*>   Deinterlace support
            <*>   SuperH VEU mem2mem video processing driver

设备树配置

路径:lichee/linux-5.4/arch/riscv/boot/dts/sunxi/sun20iw1p1.dtsi

		vind0: vind@5800800 {
			compatible = "allwinner,sunxi-vin-media", "simple-bus";
			#address-cells = <2>;
			#size-cells = <2>;
			ranges;
			device_id = <0>;
			csi_top = <336000000>;
			csi_isp = <327000000>;
			reg = <0x0 0x05800800 0x0 0x200>,
				<0x0 0x05800000 0x0 0x800>;
			clocks = <&ccu CLK_CSI_TOP>, <&ccu CLK_PLL_VIDEO1_2X>,
				<&ccu CLK_CSI0_MCLK>, <&dcxo24M>, <&ccu CLK_PLL_VIDEO1>,
				<&ccu CLK_BUS_CSI>, <&ccu CLK_MBUS_CSI>;
			clock-names = "csi_top", "csi_top_src",
					"csi_mclk0", "csi_mclk0_24m", "csi_mclk0_pll",
					"csi_bus", "csi_mbus";
			resets = <&ccu RST_BUS_CSI>;
			reset-names = "csi_ret";
			pinctrl-names = "mclk0-default", "mclk0-sleep";
			pinctrl-0 = <&csi_mclk0_pins_a>;
			pinctrl-1 = <&csi_mclk0_pins_b>;
			status = "okay";

			csi0: csi@5801000{
				compatible = "allwinner,sunxi-csi";
				reg = <0x0 0x05801000 0x0 0x1000>;
				interrupts-extended = <&plic0 116 IRQ_TYPE_LEVEL_HIGH>;
				pinctrl-names = "default","sleep";
				pinctrl-0 = <&csi0_pins_a>;
				pinctrl-1 = <&csi0_pins_b>;
				device_id = <0>;
				iommus = <&mmu_aw 1 1>;
				status = "okay";
			};
			isp0: isp@5809410 {
				compatible = "allwinner,sunxi-isp";
				reg = <0x0 0x05809410 0x0 0x10>;
				device_id = <0xfe>;

				status = "okay";
			};
			isp1: isp@5809420 {
				compatible = "allwinner,sunxi-isp";
				reg = <0x0 0x05809420 0x0 0x10>;
				device_id = <0xff>;
				status = "okay";
			};
			scaler0: scaler@5809430 {
				compatible = "allwinner,sunxi-scaler";
				reg = <0x0 0x05809430 0x0 0x10>;
				device_id = <0xfe>;
				status = "okay";
			};
			scaler1: scaler@5809440 {
				compatible = "allwinner,sunxi-scaler";
				reg = <0x0 0x05809440 0x0 0x10>;
				device_id = <0xff>;
				status = "okay";
			};
			actuator0: actuator@5809450 {
				compatible = "allwinner,sunxi-actuator";
				device_type = "actuator0";
				reg = <0x0 0x05809450 0x0 0x10>;
				actuator0_name = "ad5820_act";
				actuator0_slave = <0x18>;
				actuator0_af_pwdn = <>;
				actuator0_afvdd = "afvcc-csi";
				actuator0_afvdd_vol = <2800000>;
				status = "okay";
			};
			flash0: flash@5809460 {
				device_type = "flash0";
				compatible = "allwinner,sunxi-flash";
				reg = <0x0 0x05809460 0x0 0x10>;
				flash0_type = <2>;
				flash0_en = <>;
				flash0_mode = <>;
				flash0_flvdd = "";
				flash0_flvdd_vol = <>;
				device_id = <0>;
				status = "okay";
			};
			sensor0: sensor@5809470 {
				reg = <0x0 0x05809470 0x0 0x10>;
				device_type = "sensor0";
				compatible = "allwinner,sunxi-sensor";
				sensor0_mname = "ov5640";
				sensor0_twi_cci_id = <2>;
				sensor0_twi_addr = <0x78>;
				sensor0_mclk_id = <0>;
				sensor0_pos = "rear";
				sensor0_isp_used = <0>;
				sensor0_fmt = <0>;
				sensor0_stby_mode = <0>;
				sensor0_vflip = <0>;
				sensor0_hflip = <0>;
				sensor0_iovdd-supply = <>;
				sensor0_iovdd_vol = <>;
				sensor0_avdd-supply = <>;
				sensor0_avdd_vol = <>;
				sensor0_dvdd-supply = <>;
				sensor0_dvdd_vol = <>;
				sensor0_power_en = <>;
				sensor0_reset = <&pio PE 14 GPIO_ACTIVE_LOW>;
				sensor0_pwdn = <&pio PE 15 GPIO_ACTIVE_LOW>;
				sensor0_sm_vs = <>;
				flash_handle = <&flash0>;
				act_handle = <&actuator0>;
				device_id = <0>;
				status	= "okay";
			};
			sensor1: sensor@5809480 {
				reg = <0x0 0x05809480 0x0 0x10>;
				device_type = "sensor1";
				compatible = "allwinner,sunxi-sensor";
				sensor1_mname = "ov5647";
				sensor1_twi_cci_id = <3>;
				sensor1_twi_addr = <0x6c>;
				sensor1_mclk_id = <1>;
				sensor1_pos = "front";
				sensor1_isp_used = <0>;
				sensor1_fmt = <0>;
				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 PE 7 GPIO_ACTIVE_LOW>;
				sensor1_pwdn = <&pio PE 6 GPIO_ACTIVE_LOW>;
				sensor1_sm_vs = <>;
				flash_handle = <>;
				act_handle = <>;
				device_id = <1>;
				status	= "disabled";
			};
			vinc0: vinc@5809000 {
				compatible = "allwinner,sunxi-vin-core";
				device_type = "vinc0";
				reg = <0x0 0x05809000 0x0 0x200>;
				interrupts-extended = <&plic0 111 IRQ_TYPE_LEVEL_HIGH>;
				vinc0_csi_sel = <0>;
				vinc0_mipi_sel = <0xff>;
				vinc0_isp_sel = <0>;
				vinc0_tdm_rx_sel = <0xff>;
				vinc0_rear_sensor_sel = <0>;
				vinc0_front_sensor_sel = <0>;
				vinc0_sensor_list = <0>;
				device_id = <0>;
				iommus = <&mmu_aw 1 1>;
				status = "okay";
			};
			vinc1: vinc@5809200 {
				device_type = "vinc1";
				compatible = "allwinner,sunxi-vin-core";
				reg = <0x0 0x05809200 0x0 0x200>;
				interrupts-extended = <&plic0 112 IRQ_TYPE_LEVEL_HIGH>;
				vinc1_csi_sel = <0>;
				vinc1_mipi_sel = <0xff>;
				vinc1_isp_sel = <1>;
				vinc1_tdm_rx_sel = <0xff>;
				vinc1_rear_sensor_sel = <0>;
				vinc1_front_sensor_sel = <0>;
				vinc1_sensor_list = <0>;
				device_id = <1>;
				iommus = <&mmu_aw 1 1>;
				status = "disabled";
			};
		};

在这里插入图片描述

ROOTFS 配置

运行 m menuconfig,勾选 <*> kmod-sunxi-vin......................................... sunxi-vin support

在这里插入图片描述

常见错误

[VIN_ERR]media_entity_find_link null

驱动版本不匹配所致,目前SDK分支过多驱动版本过多,用下列驱动替换即可:
sunxi-vin.tar.gz

解压,覆盖到 tina-d1-h/lichee/linux-5.4/drivers/media/platform/sunxi-vin 文件夹

测试固件

tina_d1-h-mq_pro_uart0.zip

在这里插入图片描述

原贴链接:https://bbs.aw-ol.com/topic/4017/
资源获取、问题讨论可以到全志在线开发者社区进行:https://www.aw-ol.com
全志及开发者最新动态可以关注全志在线微信公众号

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/63760.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

C++11 新特性 ---- 模板的优化

C11 模板机制:① 函数模板② 类模板模板的使用&#xff1a;① 范围&#xff1a;模板的声明或定义只能在全局或类范围进行&#xff0c;不可以在局部范围&#xff08;如函数&#xff09;② 目的&#xff1a;为了能够编写与类型无关的代码函数模板&#xff1a;- 格式&#xff1a;t…

软件工程:帕金森定律

在软件开发中&#xff0c;你是否遇到过这种情况&#xff1a; 团队要开发一个简单的购物车应用&#xff0c;项目预期时间是2周工期。负责开发的工程师默认利用完整的2周时间来完成任务。在第一周&#xff0c;工程师会认为任务很轻松&#xff0c;有充足的时间来完成任务&#xff…

SPM(Swift Package Manager)开发及常见事项

SPM怎么使用的不再赘述&#xff0c;其优点是Cocoapods这样的远古产物难以望其项背的&#xff0c;而且最重要的是可二进制化、对xcproj项目无侵入&#xff0c;除了网络之外简直就是为团队开发的项目库依赖最好的管理工具&#xff0c;是时候抛弃繁杂低下的cocoapods了。 一&…

Camunda 7.x 系列【2】开源工作流引擎框架

有道无术&#xff0c;术尚可求&#xff0c;有术无道&#xff0c;止于术。 本系列Spring Boot 版本 2.7.9 本系列Camunda 版本 7.19.0 源码地址&#xff1a;https://gitee.com/pearl-organization/camunda-study-demo 文章目录 1. 前言2. 开源工作流引擎框架2.1 jBPM2.2 Activ…

Python识别抖音Tiktok、巨量引擎滑块验证码识别

由于最近比较忙&#xff0c;所以本周搞了一个相对简单的验证码&#xff0c;就是抖音Tiktok的滑块验证码&#xff0c;这也是接到客户的一个需求。这种验证码通常在电脑端登录抖音、巨量引擎的的时候出现。 首先看一下最终的效果&#xff1a; 验证码识别过程 1、利用爬虫采集图…

jenkins的cicd操作

cicd概念 持续集成&#xff08; Continuous Integration&#xff09; 持续频繁的&#xff08;每天多次&#xff09;将本地代码“集成”到主干分支&#xff0c;并保证主干分支可用 持续交付&#xff08;Continuous Delivery&#xff09; 是持续集成的下一步&#xff0c;持续…

【ArcGIS Pro二次开发】(57):地图系列

在ArcGIS Pro中&#xff0c;有一个地图系列&#xff0c;可以在一个布局中导出多个地图。 在SDK中为ArcGIS.Desktop.layout.MapSeries类和映射系列导出选项&#xff0c;可以以支持多页导出。 MapSeries类提供了一个静态CreateSpatialMapSeries方法&#xff0c;该方法使用指定的…

【0807作业】使用消息队列实现AB进程对话+使用共享内存实现A进程打印字符串,B进程逆置字符串,打印结果为【正序 逆序 正序 逆序】

作业一&#xff1a;使用消息队列实现AB进程对话 ① 打开两个终端&#xff0c;要求实现AB进程对话 A进程先发送一句话给B进程&#xff0c;B进程接收后打印B进程再回复一句话给A进程&#xff0c;A进程接收后打印重复1.2步骤&#xff0c;当收到quit后&#xff0c;要结束AB进程 ② …

K8s中的PV和PVC和监控

1.PV和PVC PV&#xff1a;持久化存储&#xff0c;对存储资源进行抽象&#xff0c;对外提供可以调用的地方&#xff08;类似&#xff1a;生产者&#xff09; PVC&#xff1a;用于调用&#xff0c;不需要关心内部实现细节&#xff08;类似&#xff1a;消费者&#xff09; 2.实…

ChatGPT 作为 Python 编程助手

推荐&#xff1a;使用 NSDT场景编辑器 助你快速搭建可编辑的3D应用场景 简单的数据处理脚本 我认为一个好的起点是某种数据处理脚本。由于我打算让 ChatGPT 之后使用各种 Python 库编写一些机器学习脚本&#xff0c;这似乎是一个合理的起点。 目标 首先&#xff0c;我想尝试…

8.7一日总结

后台管理项目(使用vue3) 1.创建项目 npm init vuelatest 2.进入项目,下载依赖 3.下载需要的项目依赖 下载重置样式表 npm install reset-css 在main.js中阴入 import reset-css 4.清理目录 将项目中不需要的内容删除 5.运行项目 npm run dev 6.将仓库推送…

Unity Shader编辑器工具类ShaderUtil 常用函数和用法

Unity Shader编辑器工具类ShaderUtil 常用函数和用法 Unity的Shader编辑器工具类ShaderUtil提供了一系列函数&#xff0c;用于编译、导入和管理着色器。本文将介绍ShaderUtil类中的常用函数和用法。 编译和导入函数 CompileShader 函数签名&#xff1a;public static bool C…

一百四十三、Linux——Linux的CentOS 7系统语言由中文改成英文

一、目的 之前安装CentOS 7系统的时候把语言设置成中文&#xff0c;结果Linux文件夹命名出现中文乱码的问题&#xff0c;于是决定把Linux系统语言由中文改成英文 二、实施步骤 &#xff08;一&#xff09;到etc目录下&#xff0c;找到配置文件locale.conf # cd /etc/ # ls…

Vue3 第三节 计算属性,监视属性,生命周期

1.computed计算属性 2.watch监视函数 3.watchEffect函数 4.Vue的生命周期函数 一.computed计算属性 计算属性简写和完整写法 <template><h1>一个人的信息</h1>姓&#xff1a;<input type"text" v-model"person.firstName" />…

100G光模块的应用案例分析:电信、云计算和大数据领域

100G光模块是一种高速光模块&#xff0c;由于其高速率和低延迟的特性&#xff0c;在电信、云计算和大数据领域得到了广泛的应用。在本文中&#xff0c;我们将深入探讨100G光模块在这三个领域的应用案例。 一、电信领域 在电信领域&#xff0c;100G光模块被广泛用于构建高速通…

什么是应用的贴身防护盾?来看F5洞察风险

从云原生的发展来看&#xff0c;由于云原生技术的革新以及现代应用随之进化&#xff0c;可以清晰地看到云原生吞噬一切的势头&#xff0c;但是云原生也面临着众多挑战。2022 年很多公开调查报告显示&#xff0c;在云原生发展中&#xff0c;CEO/CIO 最关注的就是云原生安全&…

FFmpeg将编码后数据保存成mp4

以下测试代码实现的功能是&#xff1a;持续从内存块中获取原始数据&#xff0c;然后依次进行解码、编码、最后保存成mp4视频文件。 可保存成单个视频文件&#xff0c;也可指定每个视频文件的总帧数&#xff0c;保存多个视频文件。 为了便于查看和修改&#xff0c;这里将可独立的…

SpringBoot整合Sfl4j+logback的实践

一、概述 对于一个web项目来说&#xff0c;日志框架是必不可少的&#xff0c;日志的记录可以帮助我们在开发以及维护过程中快速的定位错误。slf4j,log4j,logback,JDK Logging等这些日志框架都是我们常见的日志框架&#xff0c;本文主要介绍这些常见的日志框架关系和SpringBoot…

自然语言处理: 第六章Transformer- 现代大模型的基石

理论基础 Transformer&#xff08;来自2017年google发表的Attention Is All You Need (arxiv.org) &#xff09;&#xff0c;接上面一篇attention之后&#xff0c;transformer是基于自注意力基础上引申出来的结构&#xff0c;其主要解决了seq2seq的两个问题: 考虑了原序列和目…