Linux ARM平台开发系列讲解(摄像头V4L2子系统) 2.12.1 摄像头介绍及其工具获取

1. 概述

该章节是分析Linux摄像头I2C-V4L2驱动,包括摄像头的一个介绍、摄像头配置和V4L2驱动的出图框架。采用的Linux ARM 芯片为RK3399,摄像头模组为OV13850.其中AIO-3399J 开发板分别带有两个 MIPIMIPI 支持最高 4K 拍照,并支持 1080P 30fps 以上视频录制。此外,开发板还支持 USB 摄像头。

  • RK3399 MIPI接口图
    在这里插入图片描述

  • 摄像头模组图片
    在这里插入图片描述

  • 连接方法
    在这里插入图片描述

  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
获取USB摄像头的1080p的JPEG格式的图片20180608_1806.7z 电脑上的系统:ubuntu14.04 // http://www.linuxidc.com/Linux/2011-03/33020.htm // V4L2摄像头获取单幅图片测试程序(MMAP模式) // [日期:2011-03-06] 来源:Linux社区 作者:aokikyon [字体:大 中 小] // // #加了点注释 // // #Rockie Cheng // printf #include #include // memset #include #include #include #include // close write usleep read #include #include #include #include #include #include // mmap #include #include #include #include // pthread_create pthread_join #include #define CLEAR(x) memset (&(x), 0, sizeof (x)) #define REQ_COUNT 6 #define uchar unsigned char struct buffer { void * start; size_t length; }; static char * dev_name = "/dev/video0";//摄像头设备名 static int fd = -1; struct buffer * buffers = NULL; // static unsigned int n_buffers = 0; // 2012-7-13 11:33 camera flag // static int iFlagCamera = 0; volatile int iFlagCamera = 0; // 函数名称:thread1 // 函数功能:用于接受键盘的输入,之后通知thread2抓图 // 参数列表: // 返回值 : void thread1(void) { char ch; printf("\n !!!!Warning!!!!\n Max 1000 color bmp\n Input the char: \n"); printf("\n !!!!press o an capture 1 frame picture! \n"); printf("\n !!!!press t an capture 10 frame picture! \n"); printf("\n !!!!press h an capture 100 frame picture! \n"); while(1) { while((ch=getchar()) != '\n') { printf("%c\n", ch); if('o'==ch) { iFlagCamera = 1; printf("thread1=%d\n", iFlagCamera); } else if('t'==ch) { iFlagCamera = 10; printf("thread1=%d\n", iFlagCamera); } else if('h'==ch) { iFlagCamera = 101; printf("thread1=%d\n", iFlagCamera); } else if('q'==ch) { iFlagCamera = 10001; printf("thread1=%d\n", iFlagCamera
Gradle 是一个基于 Groovy 语言的自动化构建工具,可以用于构建 Java、C++、Python、JavaScript 等多种语言的项目。在 Gradle 中,一个项目可以由多个子项目组成,这些子项目可以分别进行构建、测试、打包等操作。本文将介绍如何在 Gradle 中引入子模块,并对子模块进行配置。 1. 创建一个 Gradle 项目 首先,我们需要创建一个 Gradle 项目。可以使用命令行 `gradle init` 创建一个新的 Gradle 项目。在创建项目时,需要选择构建脚本语言、项目类型、测试框架等选项。这里我们选择使用 Groovy 语言,创建一个 Java 应用程序项目。 2. 添加子模块 在项目根目录下创建一个 `settings.gradle` 文件,并在该文件中添加子模块的名称。例如,如果我们希望在项目中添加一个名为 `submodule` 的子模块,可以在 `settings.gradle` 文件中添加以下内容: ``` include 'submodule' ``` 接下来,在项目根目录下创建一个名为 `submodule` 的子目录,并在该目录下创建一个 `build.gradle` 文件。在该文件中可以定义子模块的构建任务、依赖关系等。 3. 配置子模块 在 `submodule/build.gradle` 文件中,可以定义子模块的构建任务和依赖关系。例如,以下代码定义了一个名为 `hello` 的任务: ``` task hello { doLast { println 'Hello from submodule!' } } ``` 我们可以在项目根目录下运行以下命令来执行该任务: ``` ./gradlew :submodule:hello ``` 另外,我们可以在 `submodule/build.gradle` 文件中定义子模块的依赖关系。例如,以下代码定义了一个依赖于 `junit` 测试框架的子模块依赖关系: ``` dependencies { testImplementation 'junit:junit:4.12' } ``` 4. 使用子模块 在项目根目录下的 `build.gradle` 文件中,可以通过 `include` 方法引入子模块,并定义子模块的依赖关系。例如,以下代码引入了名为 `submodule` 的子模块,并定义了子模块依赖于 `log4j` 日志框架和 `junit` 测试框架: ``` include 'submodule' dependencies { implementation 'org.apache.logging.log4j:log4j-core:2.12.1' } subprojects { dependencies { testImplementation 'junit:junit:4.12' } } ``` 这样,我们就可以在项目中使用子模块了。 总结 本文介绍了如何在 Gradle 中引入子模块,并对子模块进行配置。通过使用子模块,我们可以将一个大型项目拆分成多个小模块,便于管理和维护。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

嵌入式内核源码

给我一点肉啊

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值