
3 genius_platform软件平台
文章平均质量分 73
genius_platform软件平台各问题记录
隨意的風
从事10+年的技术开发,结交天下软件研发朋友,共同探讨技术、共同进步。
展开
-
【串口通信】-03-I2C、SPI、UART通信过程的讲解和动画演示
当多个设备尝试同时发送数据时,可能会发生冲突,需要额外的冲突检测和处理机制。:UART被广泛应用于各种设备之间的通信,具有较好的兼容性。:I2C支持多个设备连接到同一总线上,每个设备都有。:UART通信协议相对简单,易于实现和调试。:在空闲状态时,I2C总线上的器件可以进入。:I2C协议相对简单,易于实现和调试。受到限制,过长的总线可能导致通信问题。,适用于需要长距离传输的场景。通信协议,通常用于连接。速度要求较低接线简单。原创 2024-07-18 10:38:06 · 961 阅读 · 0 评论 -
【genius_platform软件平台开发】第一百讲:linux系统的进程间通信之消息队列操作接口(msgget、msgctl、msgsnd、msgrcv)及demo代码
代表了一种Unix系统的标准。XSI IPC,依托标识符和键来实现的,如同管道靠文件描述符来实现一样有三种IPC我们称作XSI IPC,即消息队列信号量共享内存。IPC标识内核为每个进程间通信维护一个结构体形式的IPC对象。该对象可以通过一个非负整数的IPC标识来引用。注意与文件描述符不同,文件描述符总是找当前系统中可用的最小的数,而IPC标识是持续加一的。原创 2023-07-22 17:34:12 · 289 阅读 · 0 评论 -
【genius_platform软件平台开发】第九十八讲:嵌入式网络接口(MAC、PHY)
15这16个寄存器的功能,16~31这16个寄存器由厂商自行实现。也就是说不管你用的哪个厂家的PHY芯片,其中0~15这16个寄存器是一模一样的。仅靠这16个寄存器是完全可以驱动起PHY芯片的,至少能保证基本的网络数据通信,因此Linux内核有通用PHY驱动,按道理来讲,不管你使用的哪个厂家的PHY芯片,都可以使用Linux的这个通用PHY驱动来验证网络工作是否正常。事实上在实际开发中可能会遇到一些其他的问题导致Linux内核的通用PHY驱动工作不正常,这个时候就需要驱动开发人员去调试了。原创 2023-06-17 17:23:53 · 1743 阅读 · 0 评论 -
【genius_platform软件平台开发】第九十七讲:linux设备驱动中信号(signal函数)的异步通知机制
前31个为传统UNIX支持的信号,是不可靠信号(非实时的)后33个是后来扩充的,是可靠信号(实时信号)。不可靠信号和可靠信号的区别在于前者不支持排队,可能会造成信号丢失,而后者不会。信号id名称含义备注1SIGHUP终端关闭会发送进程结束2SIGINTctrl + c 终止当前进程进程结束3SIGQUITctrl + \ 停止当前进程进程结束9SIGKILL杀死进程进程结束12SIGUSR2用户自定信号14SIGALRM闹钟信号19SIGSTOP。原创 2023-06-07 10:45:34 · 1090 阅读 · 1 评论 -
【genius_platform软件平台开发】第九十六讲:error C2664: “void std::vector<base::CTask *,note: 非常量引用只能绑定到左值
error C2664: “void std::vector::swap(std::vector &) noexcept”: 无法将参数 1 从“std::vector原创 2023-05-10 14:16:28 · 258 阅读 · 0 评论 -
【genius_platform软件平台开发】第九十五讲:app调用到dll代码中
# 1.当需要app连接dll时,需要进行dll源代码调试时,需要在vs的以下目录进行设置原创 2023-04-27 15:45:50 · 178 阅读 · 0 评论 -
【genius_platform软件平台开发】第四十九讲:C++11 中的std::function和std::bind
1. 可调用对象可调用对象有一下几种定义:是一个函数指针,参考 C++ 函数指针和函数类型;是一个具有operator()成员函数的类的对象;可被转换成函数指针的类对象;一个类成员函数指针;C++中可调用对象的虽然都有一个比较统一的操作形式,但是定义方法五花八门,这样就导致使用统一的方式保存可调用对象或者传递可调用对象时,会十分繁琐。C++11中提供了std::function和std::bind统一了可调用对象的各种操作。不同类型可能具有相同的调用形式,如:// 普通函数int ad原创 2023-03-31 13:39:20 · 181 阅读 · 0 评论 -
【genius_platform软件平台开发】第九十讲:C/C++语言标准和C++标准库
1978年,丹尼斯·里奇(Dennis Ritchie)和布莱恩·科尔尼干(Brian Kernighan)出版了一本书,名叫《The C ProgrammingLanguage》。这本书被C语言开发者们称为“K&R”,很多年来被当作C语言的非正式的标准说明。人们称这个版本的C语言为“K&R C”。1998年制定出的第一个C++标准通常被称为C++98,它不仅描述了已有的C++特性,还对该语言进行了扩展,添加了异常运行阶段识别符(RTTI)模板和标准模板库(STL)。原创 2023-03-14 11:06:27 · 341 阅读 · 0 评论 -
【genius_platform软件平台开发】第八十九讲:如何查看.so和可执行文件是debug编译还是release编译的和dll是32位还是64位的
直接用记事本或者notepad++、UE打开exe文件(dll文件),会有很多乱码,不要头疼,接下来只需要在第二段中找到PE两个字母,在其后的不远出会出现d?原创 2023-02-27 15:02:21 · 810 阅读 · 0 评论 -
【genius_platform软件平台开发】第八十八讲:arm公司的V架构和内核发展史(整理)
# 1 ARM架构与ARM内核## 1.1 ARM架构与内核简述- 目前为止,ARM总共发布`8种架构`:`ARMv1`、`ARMv2、`ARMv3`、`ARMv4、`ARMv5`、`ARMv6`、`ARMv7` 、`ARMv8`,这是ARM架构指令集的`多个v版本`。- 基于不同的`ARM架构`可以`设计出不同特点的内核处理器`。比如基于`ARMv3`架构设计出的处理器`ARM6`,`ARMv7` 这两款处理器适用于`不同的场景`,`硬件可能不同`,但是`架构指令集是一样的`。原创 2023-02-27 14:16:08 · 1649 阅读 · 0 评论 -
【genius_platform软件平台开发】第八十七讲:C/C++ 结构体的内存对齐
大部份C语言教程的文章很少会提的一个概念就是数据对象(Data Object),简称对象,像基于C衍生出来其他高层语言所理解的"对象"是有些区别的.C中的对象更偏向于内存模型,同样C中的数据对象也适用于汇编,本来C就是"结构化"的汇编语言.数据对象就是本身两个属性.也就是C中支持的所有数据类型定义出来的变量或由基本数据类型组合构造的用户定义类型(类类型/也叫结构体),都统称数据对象,一切类型皆为对象。而被内存对齐的正是数据对象。原创 2022-12-20 15:29:50 · 199 阅读 · 0 评论 -
【genius_platform软件平台开发】第八十六讲:镜头光学知识,相机标定、参数(内参、外参、畸变参数)
是指波在一个振动周期内传播的距离;综上,16个单目相机的参数。光是一定波长范围的电磁辐射;人眼可见光的波长范围是380-780nm;在几何光学中,光以直线传播;在波动光学中,光以波的形式传播,不同波长的光呈现不同的颜色;光在真空中的传播速度是3x10的8次方m/s,在空气中的速度会慢一些,在折射率大的介质中,速度还要慢一些;2. 波长的定义是指波在一个振动周期内传播的距离;3. 各种光的波长红光:波长范围:760~622纳米;橙光:波长范围:622~597纳米;黄光:波长范围:597~5原创 2022-12-20 14:40:18 · 968 阅读 · 0 评论 -
【genius_platform软件平台开发】第八十五讲:如何获取结构体数据成员的偏移量(巧妙)
【代码】【genius_platform软件平台开发】第八十五四讲:如何获取结构体数据成员的偏移量(巧妙)原创 2022-11-22 11:30:16 · 378 阅读 · 0 评论 -
【genius_platform软件平台开发】第八十四讲:windows系统和Linux系统之mkdir函数
两种方法①使用cmd命令mkdir,举例:system(“mkdir D:\dic”);这条命令执行mkdir程序,在D盘创建一个文件夹dic。②使用windows提供的同样在D盘创建一个文件夹dic,因为转义字符的问题所以用两个斜杠。这个命令和函数我就不详细解释了,分别参考mkdir和CreateDictionary的百度百科。这里强调一下,这里说的mkdir是cmd命令,CreateDictionary是windows API函数。代码。原创 2022-11-18 16:32:56 · 1197 阅读 · 0 评论 -
【genius_platform软件平台开发】第八十三讲:网卡(mac和phy)详解
osi的最后两层物理层(phy)数据链路层(mac)电与光信号线路状态时钟基准数据编码电路数据链路层(mac)提供标准接口物理层的芯片PHY寻址机制数据帧的构建数据差错检查传送控制数据链路层的芯片MAC控制器很多网卡做到一起pci总线mac总线接phy接网线MACPHY变压器RJ45晶振电源存储设备LED灯两个LED灯Link(链路正常)硬件固件程序实现逻辑链路控制媒体访问控制唯一硬件地址mac地址有缓存中断irqi/o端口。原创 2022-11-17 15:02:15 · 2051 阅读 · 0 评论 -
【genius_platform软件平台开发】第八十二讲:ARM Neon指令集一(ARM NEON Intrinsics, SIMD运算, 优化心得)
由于Neon实现往往跟循环展开等技巧一起使用,代码往往比较长。可以先阅读普通实现的代码实现了解顶层逻辑,再阅读Neon实现的代码。例如,我们希望学习全连接层(innerproduct)的Neon实现,其普通实现的位置在ncnn/src/layer/innerproduct.cpp,对应的Neon加速实现的位置在ncnn/src/layer/arm/innerproduct_arm.cpp。2. 进阶:注意细节处理,学习常用算子的实现。4. 其他:相关的研讨会视频、库、文档等。3. 学个通透:了解原理。原创 2022-11-16 17:19:29 · 1651 阅读 · 0 评论 -
【genius_platform软件平台开发】第八十一讲:相机内参和外参的解释
2、畸变参数:k1,k2,k3径向畸变系数,p1,p2是切向畸变系数。fx,fy为焦距,一般情况下,二者相等,x0、y0为主点坐标(相对于成像平面),s为坐标轴倾斜参数,理想情况下为0。4.径向畸变:产生原因是光线在远离透镜中心的地方比靠近中心的地方更加弯曲径向畸变主要包含桶形畸变和枕形畸变两种。1、下面给出了内参矩阵,需要注意的是,真实的镜头还会有径向和切向畸变,而这些畸变是属于相机的内参的。3.切向畸变:产生的原因透镜不完全平行于图像平面,这种现象发生于成像仪被粘贴在摄像机的时候。原创 2022-11-16 14:44:03 · 657 阅读 · 1 评论 -
【genius_platform软件平台开发】第八十讲:终端 I/O 函数-用于控制异步通信端口的通用终端接口
以下示例说明服务器如何从其处于非 DEBUG 操作模式下的调用方的控制终端分离出来。接口名称 | 目的------- | -----`tcgetattr`(3C), `tcsetattr`(3C)|获取并设置终端属性 `tcsendbreak`(3C), `tcdrain`(3C), `tcflush`(3C), `tcflow`(3C)|执行行控制接口 `cfgetospeed`(3C), `cfgetispeed`(3C)`cfsetispeed`(3C), `cfsetospeed`(3C)|原创 2022-11-16 11:06:35 · 670 阅读 · 0 评论 -
【genius_platform软件平台开发】第七十九讲:Linux系统中可执行程序后台运行的几种方式
当我们在做服务的时候,有时候在终端界面启动了,但是往往因为网络,关闭屏幕,执行CTRL+C等原因造成ssh断开造成正在运行程序退出,使得我们的服务程序也随即终止了。其背后的主要原因在于上述的相关操作,shell默认会发送。启动的程序,ctrl+c和关闭终端都无法关闭。在缺省情况下所有输出都被重定向到一个名为nohup.out的文件中。,因此当屏幕关闭,断网等造成ssh中断时进程不会退出。给该终端session关联的进程,从而导致。,为了弄清这个问题我们首先要了解。因此大多数情况同时使用。原创 2022-11-10 10:48:11 · 490 阅读 · 0 评论 -
【genius_platform软件平台开发】第七十八讲:向量内积外积_矩阵内积外积
两个矩阵A、B对应分量乘积之和,结果为一个标量,记作(与向量的内积/点积/数量积的定义相似)。所以A、B的行数列数都应相同,且有结论。参考:https://blog.youkuaiyun.com/Frank_LJiang/article/details/104355790。原创 2022-10-12 18:19:46 · 378 阅读 · 0 评论 -
【genius_platform软件平台开发】第七十七讲:点云数据(静态场景)目标实时跟踪
测试笔记本性能:cpu基准速率:2.0GHz 4核 8处理器,1、2、3未做加速处理,4做了openmp加速处理,只是简单的针对特定场景进行了算法验证,如果需要结合到具体的项目产品中,还需要进行调优和调参等后续处理;原创 2022-10-11 17:20:51 · 469 阅读 · 0 评论 -
【genius_platform软件平台开发】第七十四讲:IAP在线升级OTA原理
IAP()即在线应用编程,也就是说用户可以使用自己的程序对单片机的user flash区域进行烧写。目的是为了在产品发布后可以方便地通过预留的通信接口对产品进行功能升级或者程序上的修复。只要保留预先的通信接口即可(USART, 网口等),避免了要进行拆机使用下载器进行烧录。OTA升级(firmware update)是模组必备的功能,OTA升级就是通过GPRS、3G、无线网络下载升级补丁升级,不用通过有线连接来下载升级,直接通过无线环境下载、升级,比较方便。原创 2022-10-09 09:36:54 · 604 阅读 · 0 评论 -
【genius_platform软件平台开发】第七十六讲:vs预处理器定义的牛逼写法!!!!
今天组内小伙伴在调试算法接口时,总是在算法接口崩溃,发现vs提示信息为vectortoolong…结果算法人员告诉设置预编译器定义取消该宏定义。我擦,这是什么骚操作,还行这么玩,一看就感觉有问题,结果为了证明这样是取消不了该宏的定义的,特此进行了一下验证;只要在预处理器界面中定义了宏,即编辑器在编辑阶段便会定义该宏。一般不会再对该宏执行=赋值操作(应该是认知错误,想取消该宏的定义);如果真的想玩骚操作、乱七八糟非正常设置,那么也只能设置为0/1(很少有这么使用的);而且在程序中也只能使用https。....原创 2022-08-02 17:05:04 · 924 阅读 · 0 评论 -
【genius_platform软件平台开发】第七十五讲:YUY2转RGB24实现源码
代码】【genius_platform软件平台开发】第七十五讲:YUY2转RGB24实现源码。原创 2022-08-01 16:52:06 · 634 阅读 · 0 评论 -
【genius_platform软件平台开发】第七十四讲:window环境下的静态库和动态库的一些使用方法(VC环境)
一般是动态加载DLL时(你并不需要对应的头文件,和LIB),显示加载dll中函数,前提是你自己对dll导出的函数参数很了解.一般是静态加载DLL时(对应的头文件、DLL,和LIB缺一不可,并且生产的EXE没有找到DLL文件就会导致“应用程序初始化失败”)#import导入的dll是com组建的dll,主要用来解析com组建内部结构,便与c++识别调用httpshttpshttpshttpshttpshttpshttpshttpshttpshttpshttpshttps。...............原创 2022-07-29 11:42:00 · 362 阅读 · 0 评论 -
【genius_platform软件平台开发】第七十三讲:linux系统驱动开发之-中断处理之DSB指令
指令名 |功能描述-------- | -----DMB | 数据存储器隔离。DMB 指令保证: 仅当所有在它前面的存储器访问操作都执行完毕后,才提交(commit)在它后面的存储器访问操作。DSB|数据同步隔离。比 DMB 严格: 仅当所有在它前面的存储器访问操作都执行完毕后,才执行在它后面的指令(亦即任何指令都要等待存储器访 问操作——译者注)ISB|指令同步隔离。最严格:它会清洗流水线,以保证所有它前面的指令都执行完毕之后,才执行它后面的指令。......原创 2022-07-09 23:05:29 · 590 阅读 · 0 评论 -
【genius_platform软件平台开发】第七十一讲:linux系统驱动开发之-中断处理之工作队列(workqueue)
在刚开始介绍中断处理的时候,曾经贴出下面这张图图中描述了中断处理中的下半部分都有哪些机制,以及如何根据实际的业务场景、限制条件来进行选择。可以看出:这些不同的实现之间,有些是重复的,或者是相互取代的关系。也正因为此,它们之间的使用方式几乎是大同小异,至少是在API接口函数的使用方式上,从使用这的角度来看,都是非常类似的。这篇文章,我们就通过实际的代码操作,来演示一下工作队列(workqueue)的使用方式。在内核中中的所有工作项,是通过串在一起的,并且等待着操作系统中的挨个取出来处理。这些线程,可以是原创 2022-06-20 10:58:10 · 225 阅读 · 0 评论 -
【genius_platform软件平台开发】第七十二讲:linux系统驱动开发之-patchelf修改动态库链接器的方法
1.2 运行运行 patchelf -h 能够得到如下信息:从上面的功能描述中可以看到,patchelf 的主要功能与动态库解析器、rpath、动态库本身相关,可能在解决一些动态库链接程序执行的问题时能够用到。1.3 应用-使用自定义的动态库目录 修改 以使用中的动态库, 的翻译 这篇文章中翻译了 ld.so 动态库链接器执行的过程,其中查找动态库的步骤如下:2. 同名动态库修改应用在应用的开发过程中,在进行多部门合作开发是,大家都会使用第三方库,经常会出现同一个库,不同的版本产原创 2022-06-19 17:09:37 · 4271 阅读 · 0 评论 -
【genius_platform软件平台开发】第一万零二讲:软件平台windows、Linux、Ros等环境vs2017编译遇到的报错汇总(持续更新)
= 名为 moc_UpgradeProfessionWidget.cpp 的两个或更多文件将生成到同一位置的输出。1>d:\windows kits\10\include\10.0.17763.0\ucrt\stdlib.h(1323): note: 参见“itoa”的声明。1>------ 已启动生成: 项目: SoftPlatform, 配置: Release x64 ------========== 生成: 成功 0 个,失败 1 个,最新 0 个,跳过 0 个 ==========原创 2022-06-07 10:09:56 · 1808 阅读 · 1 评论 -
【genius_platform软件平台开发】第七十讲:linux系统驱动开发之-中断号、中断向量和中断处理函数
- 假如存在这样一个需求:应用程序需要监控某个硬件GPIO口的电平状态,当发生变化时,应用程序就做出相应的动作。利用之前已经介绍的知识,是可以完成这个需求的。比如:在驱动程序中不停的读取GPIO口的状态,一旦发生变化,就把新的电平状态通过信号发送到应用层。这样的方式称作:`轮询`- 轮询方式的缺点显而易见:轮询的时间间隔应该是多少毫秒(or 微秒),才比较合适呢?轮询太慢:可能会丢失信号;轮询太快:消耗 CPU 资源!因此,在实际的产品中,用中断触发的方式才是更切合实际的选择!本文所有的描述和测试,原创 2022-05-19 16:23:19 · 1091 阅读 · 0 评论 -
【genius_platform软件平台开发】第六十九讲:linux系统驱动开发之-系统和驱动之间的中断处理函数
在中断处理函数中,发送信号给应用层,以此来通知应用层处理响应的中断业务1. 驱动程序创建相应目录和文件$ cd /linux-4.15/drivers$ mkdir my_driver_interrupt_signal$ touch my_driver_interrupt_signal.c1.1 my_driver_interrupt_signal.c文件内容如下#include <linux/module.h>#include <linux/kernel.h&原创 2022-05-17 10:40:20 · 344 阅读 · 0 评论 -
【genius_platform软件平台开发】第六十八讲:linux系统驱动开发之-驱动程序发送信号给应用程序
大家好,我是峰哥,今天给大家解说一下:驱动层发送信号给应用程序。在上一篇文章中,我讲过:应用层发送指令来控制驱动层的GPIO状态,【genius_platform软件平台开发】第六十七讲:linux系统驱动开发之-GPIO设备驱动编写,控制的方向是从应用层到驱动层。1. kill 命令和信号简单讲下kill命令和信号,是Linux 操作系统的信号,来“杀死”一个进程的命令:$ kill -9 <进程的 PID>指令功能是:向指定的某个进程发送一个信号 9,这个信号的默认功能.原创 2022-05-13 13:22:55 · 980 阅读 · 1 评论 -
【genius_platform软件平台开发】第六十七讲:linux系统驱动开发之-应用程序发送信号给驱动程序
写一个有实际应用功能的驱动程序:在驱动程序中,初始化 GPIO 设备,自动创建设备节点;在应用程序中,打开 GPIO 设备,并发送控制指令设置 GPIO 口的状态;1. 简述目的我们目标是编写一个驱动程序模块:mygpio.ko。当这个驱动模块被加载的时候,在系统中创建一个 mygpio 类设备,并且在 /dev 目录下,创建 N个设备节点:(N取决于程序中设置的数值)。应用程序中,可以打开某个GPIO设备,通过发送控制指令,来设置 GPIO的状态$ ls /dev/my*/dev/my.原创 2022-05-11 17:31:40 · 752 阅读 · 0 评论 -
【genius_platform软件平台开发】第六十六讲:Linux系统之V4L2视频驱动-应用层close关闭
应用层close关闭创建了微信群欢迎一起学习:1. 概述2.应用层3. 驱动层3.1 vb2_queue_release函数3.2 vb2_core_queue_release函数3.3 __vb2_cleanup_fileio函数3.4 vb2_core_streamoff函数创建了微信群欢迎一起学习:1. 概述关闭视频流,munmap解除参数start所指向的内存起始地存起始地址。2.应用层终于走到最后一步closeclose(fd);3. 驱动层close可能不会走rel原创 2022-04-27 16:53:55 · 437 阅读 · 0 评论 -
【genius_platform软件平台开发】第六十五讲:Linux系统之V4L2视频驱动-VIDIOC_STREAMOFF停止取流
# 1. 概述- 关闭视频流,munmap解除参数start所指向的内存起始地存起始地址。# 2.应用层```c// 停止视频的采集 enum v4l2_buf_type unBuffType = V4L2_BUF_TYPE_VIDEO_CAPTURE; if (-1 == this->ioCtrl(m_nFd, VIDIOC_STREAMOFF, &unBuffType)) { LOGERROR("CV4l2CaptureIr::stopCapture原创 2022-04-27 16:42:04 · 648 阅读 · 0 评论 -
【genius_platform软件平台开发】第六十四讲:Linux系统之V4L2视频驱动-VIDIOC_DQBUF出队列
VIDIOC_DQBUF出队列创建了微信群欢迎一起学习:1. 概述2.应用层3. 驱动层3.1 vb2_dqbuf函数3.2 vb2_core_dqbuf 函数3.3 __vb2_get_done_vb函数创建了微信群欢迎一起学习:1. 概述从v4l2驱动层中读取视频帧缓存数据。2.应用层struct v4l2_buffer info; memset(&info, 0, sizeof(info));// 取出FIFO缓存中已经采样的帧缓存 mem原创 2022-04-27 15:22:36 · 1091 阅读 · 1 评论 -
【genius_platform软件平台开发】第六十三讲:Linux系统之V4L2视频驱动-select查询
select查询喜欢的可以加微信群:1. 概述2.应用层3. 驱动层3.1 vb2_poll函数3.2 vb2_core_poll 函数喜欢的可以加微信群:1. 概述这一步主要是通过select函数在应用层查询是否有可读状态,如果有的话则执行后面的读取数据流操作。具体select做个简单分析得了,属于网络协议栈范畴。2.应用层for (;;) { fd_set readFds; struct timeval tv; FD_ZERO(原创 2022-04-27 14:53:30 · 897 阅读 · 0 评论 -
【genius_platform软件平台开发】第六十二讲:Linux系统之V4L2视频驱动-VIDIOC_STREAMON开启视频流
# 1. 概述- 主要就是让设备启动视频流,驱动中不停的获取视频数据,queued_list中产生源源不断的视频数据帧。# 2.应用层```c // 开始视频流数据的采集 unBuffType = V4L2_BUF_TYPE_VIDEO_CAPTURE; if (-1 == this->ioCtrl(m_nFd, VIDIOC_STREAMON, &unBuffType)) { LOGERROR("CV4l2CaptureIr::startCaptur原创 2022-04-27 14:24:41 · 1307 阅读 · 0 评论 -
【genius_platform软件平台开发】第六十一讲:Linux系统之V4L2视频驱动-VIDIOC_QBUF入队列
操作系统一般把系统使用的内存划分成用户空间和内核空间,分别由应用程序管理和操作系统管理。应用程序可以直接访问内存的地址,而内核空间存放的是 供内核访问的代码和数据,用户不能直接访问。v4l2捕获的数据,最初是存放在内核空间的,这意味着用户不能直接访问该段内存,必须通过某些手段来转换地址;具体流程可以查看【genius_platform软件平台开发】第五十三讲:Linux系统之V4L2视频驱动-应用层代码如何编写篇章原创 2022-04-27 11:15:18 · 1810 阅读 · 0 评论 -
【genius_platform软件平台开发】第六十讲:Linux系统之V4L2视频驱动-mmap映射
详细讲解请参考这篇博客:[【genius_platform软件平台开发】第五十一讲:Linux系统内存映射mmap原理](https://blog.youkuaiyun.com/Windgs_YF/article/details/124019601)主要就是内核内存区域的迎神,方便用户空间操控该内存,获取数据。原创 2022-04-26 18:13:44 · 726 阅读 · 0 评论