![](https://img-blog.csdnimg.cn/20201014180756922.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
FreeRTOS
文章平均质量分 61
Rtos从入门到精通,从使用到源码
lwx_ppp
这个作者很懒,什么都没留下…
展开
-
FreeRTOS面试题汇总
如果一个低优先级的任务持有一个信号量,高优先级的任务想要用这个信号量,造成的死锁怎么解决。12.FreeRTOS的多任务之间如何去进行通信的,什么方法,它实现原理是什么。任务间数据传输一共有三种形式,用的最多的是消息队列,其次是全局变量和信号量。简历上写了了解RTOS,问了rtos的问题,用过哪些函数。讲解FreeRtos原理,调度机制,底层原理,代码调用。FreeRTOS,你的三个任务控制,请问你是怎么实现的。freertos中EventBits_t是干啥的?freertos使任务切换的方式有哪些?原创 2024-05-19 20:54:03 · 1534 阅读 · 0 评论 -
RTOS(10)内存管理
Freertos内存管理原创 2024-08-06 15:48:21 · 376 阅读 · 0 评论 -
RTOS(9)中断机制
freertos将中断切分成两块,高优先级和低优先级,高优先级的不可以运行rtos的api,低优先级的可以,systick,pendsv,用户的一些外部中断都是属于低优先级的;freertos关中断的时候,也不是所有中断都关,只是关了低优先级这部分,防止影响其同步互斥;ISR: 1.不可以阻塞,即可返回 2.可以任务状态切换。,任务可以用两套API,中断只能用ISR的API,任务:1.可以阻塞 2. 可以任务状态切换。ISR不会发起调度,在函数外调度;效率高:避免不必要的任务切换,在。原创 2024-08-07 00:35:45 · 209 阅读 · 0 评论 -
RTOS(8)信号量和互斥量
信号量分为二值信号量和计数信号量与队列相比:他不能传输数据,但同时他不需要传输数据,占用的空间也更小,运行更快;原创 2024-08-07 17:33:04 · 152 阅读 · 0 评论 -
RTOS(7)队列
下面的结构体里包含了:头部指针,写指针,读指针,长度,项目大小,两个链表;写队列的时候,写指针指向头部,写进去之后,+=itemsize,移动到下一个位置;读队列的时候,读指针指向上一次读取的位置,先+=itemsize,然后再读取该位置的数据;原创 2024-08-07 17:33:30 · 252 阅读 · 0 评论 -
RTOS(6)任务
①先写任务函数②定义函数的handle指针③调用动态创建任务的API:xTaskCreate(任务函数,任务名称,栈深度,参数,优先级,handle指针)①事先分配好任务控制块事先提供好栈②调用APIxTaskStaticCreate();实现函数。原创 2024-05-28 15:52:01 · 584 阅读 · 0 评论 -
RTOS(5)源码结构与移植适配
Source :根目录下是核心文件,这些文件是通用的;-- portable 目录下是移植时需要实现的文件--keil(编译器相关)--RVDS(架构文件)-- ARM_CM3--MemMang(内存管理)原创 2024-05-19 21:51:37 · 614 阅读 · 0 评论 -
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 · 359 阅读 · 0 评论 -
RTOS(3)极简ARM架构与汇编
举个例子说明如何实现a = a+b?第一,CPU读Flash得到指令;原创 2024-05-20 00:02:50 · 232 阅读 · 0 评论 -
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 · 345 阅读 · 0 评论 -
RTOS(1)什么是RTOS?(与裸机的区别)为什么使用?
假设这位母亲需要做两件事情,喂饭和回复工作信息,我们看看裸机和RTOS有何区别。原创 2023-10-05 00:28:50 · 84 阅读 · 0 评论