-
RTOS的实时性是如何实现的?
-
任务之间是如何通信的?
-
二值信号量与互斥信号量的区别?
-
优先级反转?如何解决优先级反转问题?
-
任务通知是怎么实现的?
-
框架性的回答一个嵌入式系统Freertos的启动到结束的过程?
-
任务切换的原理?
-
除了任务切换对freertos其他底层了解吗?
-
讲讲FreeRTOS任务调度的原理
-
如何实现一个队列?
-
说一下互斥量和条件变量?(这个问题可能在Linux系统里面体现得要好一些)
-
Switch_contex的底层原理? 一般面试官会问你,freertos的中断服务函数有哪些?
-
简述FreeRTOS的任务调度? - 简述FreeRTOS的移植流程? - FreeRTOS中的IPC通信有哪些 - FreeRTOS中的tickless模式是什么?
-
如何在FreeRtos中创建任务
-
FreeRTOS如何管理内存?
-
如何配置FreeRTOS的内核?
-
FreeRTOS的软件定时器是什么,他们如何工作。
-
中断和任务有哪些主要区别?
-
Freertos中的任务栈是什么,它如何初始化 请解释任务栈的左右以及他在FreeRTOS中是如何初始化的。
-
裸机开发和RTOS开发的区别?
-
为什么会在项目中使用RTOS?
-
FreeRTOS的启动流程?
-
freertos中EventBits_t是干啥的?
-
消息队列的具体实现 - Freertos的多任务同步机制列举
-
堆和栈的区别,程序存放状态和区
-
什么是死锁,死锁产生的原因?如何避免?
-
在任务中怎么进行数据传输,什么方式
-
嵌入式操作系统的硬实时和软实时如何理解
-
任务通知
-
RTOS的实时性是如何实现的?
-
1.一个处理器核心在某个时刻只能处理一个任务,操作系统中的任务调度器就是决定在某一时刻运行哪个任务。
-
2.实时操作系统都要包含一个实时任务调度器,和其他操作系统最大的不同就是强调:严格按照优先级来分配CPU的运行时间,并且时间片轮转并不是实时调度器的一个必选项。
-
3.FreeRTOS是一款支持多任务实时运行的实时操作系统,具有时间片、抢占式、合作式三种调度方式。
-
合作式调度:曾用在资源有限的设备上面,随着系统版本的更新已经不再支持
-
抢占式调度:每个任务都有不同的优先级,任务会一直运行直到高优先级任务抢占低优先级任务或者当前优先级任务主动释放CPU的执行权限(进入阻塞状态)使处于低优先级的任务得以执行,阻塞API如vTaskDelay
-
时间片调度:每个任务都是相同的优先级,任务会运行固定的时间片个数或者遇到阻塞式API函数才会执行相同优先级的任务之间的任务切换
-
-
4.使用了抢占式任务调取器,最高优先级的任务一旦就绪,就可以总能得到CPU的控制权。最高优先级的任务什么时候可以得到CPU的控制权并运行是已知的,同时使得任务响应时间得以最优化。
-
-
任务之间是如何通信的?
-
FREERTOS的所有通信和同步机制都是基于队列(FIFO)实现的,但是也可以使用 LIFO 的存储缓冲,也就是后进先出,FreeRTOS 中的队列也提供了 LIFO 的存储缓冲机制
-
队列:数据结构中的一个概念,最大的特性是先进先出的,是任务到任务,任务到中断,中断到任务数据交流的一种机制(消息传递)
-
队列的特点
- 多任务访问
- 出队阻塞
- 入队阻塞
-
队列创建:动态创建和静态创建 API
-
• xQueueCreateStatic()
• xQueueCreate()
• xQueueGenericCreate()
-
-
队列初始化
-
prvInitialiseNewQueue()
-
-
对列入队与出队
-
-
二值信号量与互斥信号量的区别?
-
信号量常常用于控制对共享资源的访问和任务同步
-