- 博客(62)
- 收藏
- 关注
原创 V4L2读取摄像头资源
帧缓冲出队之后,接下来便可读取数据了,然后对数据进行处理, 比如对数据进行转化,如RGB888转RGB565,将转换后的数据刷到FrameBuffer上进行显示。处理完后再入队继续采集。调用 ioctl()前,定义一个该类型变量,调用 ioctl()时、将变量的指针作为 ioctl()的第三个参数传入。,我们需要将其映射到用户空间中,这样,应用程序读取映射区的数据实际上就是读取内核维护的帧缓冲中的数据。它为Linux下的视频驱动提供了统一的接口,使得应用程序可以使用统一的API操作不同的视频设备。
2024-06-21 18:19:20
783
原创 vscode + CMake编译(opencv显示图片工程)
CMake是一个跨平台的安装(编译)工具,可以用简单的语句来描述所有平台的安装(编译过程)。他能够输出各种各样的makefile或者project文件;Cmake 并不直接建构出最终的软件,而是产生标准的建构档(如 Unix 的 Makefile 或 Windows Visual C++ 的 projects/workspaces),然后再依一般的建构方式使用;CMake 的组态档取名为 CMakeLists.txt;
2024-06-19 17:58:54
431
原创 RTOS(6)任务
①先写任务函数②定义函数的handle指针③调用动态创建任务的API:xTaskCreate(任务函数,任务名称,栈深度,参数,优先级,handle指针)①事先分配好任务控制块事先提供好栈②调用APIxTaskStaticCreate();实现函数。
2024-05-28 15:52:01
535
原创 RTOS(4)保存现场与恢复现场(结合汇编分析)
1.在执行add_val()时,调用c函数的时候,第一个参数保存在R0里,第二个参数保存在R1里;所以,R0=&a,R1=&b,LR=下一条指令的地址(也就是165行);2.将局部变量和返回地址压入栈中;3.R2=a;将R2写入sp所指的位置,那么栈中原来存R3的位置变成了新的R2,也就是tmp这个临时变量;4.R2=b=2;R3=tmp=1;将R2写入sp所指的位置,tmp=3;5.R2=tmp=3;a=R2;6.将R3,LR弹出栈。LR赋值给PC,跳转到返回地址继续执行;
2024-05-20 11:09:52
306
原创 RTOS(5)源码结构与移植适配
Source :根目录下是核心文件,这些文件是通用的;-- portable 目录下是移植时需要实现的文件--keil(编译器相关)--RVDS(架构文件)-- ARM_CM3--MemMang(内存管理)
2024-05-19 21:51:37
582
原创 FreeRTOS面试题汇总
如果一个低优先级的任务持有一个信号量,高优先级的任务想要用这个信号量,造成的死锁怎么解决。12.FreeRTOS的多任务之间如何去进行通信的,什么方法,它实现原理是什么。任务间数据传输一共有三种形式,用的最多的是消息队列,其次是全局变量和信号量。简历上写了了解RTOS,问了rtos的问题,用过哪些函数。讲解FreeRtos原理,调度机制,底层原理,代码调用。FreeRTOS,你的三个任务控制,请问你是怎么实现的。freertos中EventBits_t是干啥的?freertos使任务切换的方式有哪些?
2024-05-19 20:54:03
457
原创 RTOS(2)最重要的基础:堆与栈
例如分配了taskA和taskB两个任务,那么将会为两个任务分别创建Stack栈,来存储任务中使用到的函数的返回地址和局部变量,两个栈互不干扰和影响;这个时候我们会发现,每一次LR写入新值都会覆盖旧值,所以我们每次都需要将LR中的值写入栈中,LR——>栈;然后,调用a_fun函数(这个时候会将LR --> 栈中,不然LR会被覆盖,就回不去了)在函数a_fun的开头,划分了m字节的空间,并将LR指向(Return 0的地址),为局部变量a划分出了局部空间。栈的使用过程,是RTOS多任务的核心。
2024-05-19 17:08:32
308
原创 RTOS(6)任务管理
我们是怎么实现,两个同优先级的任务之间交替执行的呢?tick为1ms一个周期,可以通过修改时钟配置修改;running:正在进行的任务3为running;ready:任务1和任务2处于ready;blocked(阻塞状态):等待某事,比如小孩口中的饭还没吃完,就得等吃完才喂;suspend(暂停状态):主动休息或者被命令休息;如何管理这些任务呢?链表readylist:A->B->C。
2023-10-19 11:13:05
164
原创 RTOS(5)创建任务函数详解
面向对象的编程思想我们想要使用应该结构体,但又不想了解其内部时,一般使用;句柄是指针指向结构体,只是同一个结构体类型的另外一种名称而已;
2023-10-18 12:01:02
218
原创 极简c++(8)抽象类与多态
如何实现多态:1.创建类的继承关系图2.所以类对象都可以调用的这个函数3.创建父类指针数组4.子类的地址赋给父类指针5.指针调用虚函数。
2023-10-14 17:50:16
225
原创 极简C++(2) 类与对象
类是对一群具有相同属性和相同行为的对象的描述我们来构造一个圆形的类:构造类最重要的就是数据和操作,所以我们圆的类需要数据:半径,操作:计算周长函数和计算面积的函数;
2023-10-10 09:23:54
56
原创 C储存类与作用域
任何一种编程中,作用域是程序中定义的变量所存在的区域,超过该区域变量就不能被访问。C 语言中有三个地方可以声明变量:在的局部变量在所有的全局变量在形式参数的定义中。
2023-10-09 10:56:08
26
原创 C 数组
数组数据结构,它可以存储一个固定大小的相同类型元素的顺序集合。所有的数组都是由连续的内存位置组成。最低的地址对应第一个元素,最高的地址对应最后一个元素。数组中的特定元素可以通过索引访问,第一个索引值为数组名本身是一个常量指针,意味着它的值是不能被改变的,一旦确定,就不能再指向其他地方。我们可以使用&运算符来获取数组的地址需要注意的是,虽然数组名表示数组的地址,但在大多数情况下,数组名会自动转换为指向数组首元素的指针。
2023-10-09 10:55:59
59
原创 C数据类型
声明指的是在程序中向编译器宣告变量名、函数名或类型的存在,以便编译器在后续使用中能够识别这些标识符。定义是对变量、函数或类型进行实际创建和分配内存空间的过程,同时也包括了声明的作用。定义提供了具体的实现,为标识符分配了内存空间。
2023-10-09 10:55:24
22
原创 图神经网络三大基础算法——GraphSAGE
我们是从第K层开始,通过K-1的节点再去求取K-2层的节点,通过这样我们就求得了最终我要计算的minibeatch所需的所有的节点,那么我就将这个部分节点把它存下来就可以,然后我将存下来的这些节点,我再通过一个graphsage的操作,那么我就学习到了每个节点的特征。最后,抽取的便是,0.6,1,0.8,1.2;首先,我遍历K层的Graphsage,在每一层上我遍历所有的节点,我求一下v节点周围的节点信息,我将邻居节点的信息聚合在一起,就可以求v节点在第K层的邻居向量。(模型容量大,做出来效果好)
2023-10-09 10:53:54
348
原创 图神经网络三大基础算法--GCN
如下图的绿色 Hidden 层,Hidden 层的每个单元都与 Input 层的所有单元相连接,同理 Output 层的与 Hidden 层的也是如此。如下图,我们可以看到我们输入一个图通过GCN之后输出一个图,图的结构是不变的,但是由原始特征的C维变成了F维;不难发现,这个相乘是将邻居特征都聚合起来了,如:1节点,聚合它所连接的2,3节点的特征;3.最后,通过parse_arg()函数读取Parser对象里的从参数,并将其打印出来;去相乘,可以得出结论,加入了自连接的,从下面我们可以对比,使用。
2023-10-09 10:53:44
240
原创 图神经网络三大基础算法——GAT
如果是最后一层是直接连接softmax,则这种cocat方式是没有必要的,同个节点的三种表示使用,softmax不能很好的表示每一个类别是怎么样的,而是要计算平均值;这个模型其实就是求取i节点周围节点的ATTENTION系数,我再通过这个ATTENTION系数对周围邻居节点进行一个在线求和,那么我就求得了节点聚合了周围节点的特征。有一些节点我们知道它的label,有一些节点我们不知道它的label,求未知节点的label;先在老的图上面学习,给了一张新的图,我们要推理出来这张图中每个节点所属的类别;
2023-10-09 10:52:39
111
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人