freeRTOS面试会问到的问题。

这篇具有很好参考价值的文章主要介绍了freeRTOS面试会问到的问题。。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

1.FreeRTOS的移植与配置以及使用。

  1. 1移植到哪些平台,讲讲移植过程,占用哪些硬件资源

可以移植到多种平台,包括单片机、嵌入式处理器、微处理器等等。

    1.2移植过程:

  • 选择对应目标处理器架构的FreeRTOS版本。
  • 安装相应的工具链。
  • 对FreeRTOS进行配置。
  • 实现FreeRTOS底层函数。
  • 搭建FreeRTOS应用程序,实现任务调度。

       1.3.占用硬件资源:

移植FreeRTOS对硬件资源的占用,与具体的应用场景有关。需要根据具体应用调整FreeRTOS的配置,需要根本具体应用调整FreeRTOS的配置,如调整任务堆栈大小、内存管理配置、中断控制器等等。

2.FreeRTOS都需要配置哪些,中断是怎么配置的,需要注意什么?

内存管理:需要为FreeRTOS分配一定的内存空间。

任务管理:需要配置任务的堆栈大小、优先级等。

时钟和定时器:需要配置FreeRTOS使用哪个时钟源和定时器。

信号量和队列:需要配置信号量和队列的大小和类型。

调度器配置:需要选择FreeRTOS的调度器类型和优化设置。

在配置中断时,需要首先了解目标处理器的中断控制器的工作原理和寄存器的使用。一般,可以按照以下步骤进行中断配置。

1.开启中断:需要将处理器中断控制器相应的中断开关打开。

2.设置中断优先级:需要设置中断请求的优先级,以保证高优先级中断的及时响应。

3.写入中断向量表:需要在处理器的中断向量表中写入中断处理程序的地址。

配置中断时需要注意以下几点:

1.中断控制器的操作必须是原子的,需要使用响应的临界区代码区。

2.不同处理器的中断控制器操作方式可能不同,需要根据具体的处理器来中断控制器的驱动程序。

3.中断处理程序应该简短,有效率,最好不要在中断中调用太多的函数,以免影响处理器系统的响应性能。

总之,在配置FreeRTOS的同时配置中断需要根据具体处理器的特性进行,具体的中断处理程序程序设计也需要进行相应的考虑。

3.FreeRTOS中的IPC通信都用过哪些?

1.信号量:信号量是一种计数机制,用于控制同步,它可以被视为一个资源,需要使用者获取它获取它执行相应的操作,之后再释放信号量,使得其他任务也能够获取这个资源。通过配置信号量,任务就能能够控制共享资源。

2.队列:队列可能于任务之间传递数据。它提供了发送一个消息的任务和接收一个消息的任务之间的缓冲区。队列中的消息都是一定格式的,FreeRTOS常用的队列有有限队列(设定最大可存放的数据个数)和无限队列(不设定队列大小)。

3.事件:事件用于任务之间交换消息,但是在事件中在处理消息可以根据消息的种类进行不同的处理。事件可以包含一个或多个消息,并且可以事件标志位。

这些 IPC 机制可以很好地支持任务间的通信和协调,使得任务之间不再需要通过共享全局数据来完成协作。

4.FreeRTOS中的上下文切换是怎么实现的?(内核调度)

一般面试官会问你,freeRTOS的中断服务函数有那些?(系统定时器sysTick,PendSV)

会让你解释你对这两种中断的认识:

系统定时器,它以最低中断优先级运行,然后寻找到一个上下文切换,将就绪任务添加到就绪表(就是阻塞完毕的任务)或者将一些挂起的任务(从挂起到恢复)放入就绪表,在就绪表当中,会给到下一个任务(或者异常中断处理函数)中进行判断,来触发任务的切换。

所以系统定时器的作用就是用来管理就绪表的

异常处理中断处理函数xPortPendSVHandler():主要是调用vTaskSwitchContext从就绪表当中寻找到优先级最高的且就绪任务。

但是对于PendSV的作用,就是用于上下文切换的,用于触发任务调度的,怎么触发任务调度的呢?它的主要核心就是会在port.c文件中的__asm void xPortPendSVHandler( void )进行调用bl vTaskSwitchContext(核心),这个函数的功能就是找到就绪表当中最高优先级的任务,进行一个任务切换。

SysTick优先级高于外部中断,OS抢占IRQ进行任务调度触发Fault,示意图如下。

freertos 面试,单片机,面试

SysTick结合PendSV就能完美的解决上述问题。

freertos 面试,单片机,面试

(1)任务A呼叫SVC 来请求任务切换(例如,等待某些工作完成)

(2) OS接收到请求,做好上下文切换的准备,并且挂起一个PendSV异常。

(3)当CPU 退出SVC后,它立即进入PendSV,从而执行上下文切换。

(4)当PendSV执行完毕后,将返回到任务B,同时进入线程模式。

(5)发生了一个中断,并且中断服务程序开始执行

(6)在ISR执行过程中,发生 SysTick 异常,并且抢占了该ISR。

(7)OS 执行必要的操作,然后 pend 起 PendSV异常以作好上下文切换的准备。

(8)当 SysTick退出后,回到先前被抢占的ISR中,ISR继续执行

(9) ISR 执行完毕并退出后,PendSV服务例程开始执行,并且在里面执行上下文切换。

(10)当PendSV执行完毕后,回到任务A,同时系统再次进入线程模式。

FreeRTOS系统的任务切换最终都是在PendSV中断服务函数中完成的,UCOS也是在 PendSV中断中完成任务切换的。

5.简述FreeRTOS中的任务调度?

FreeRTOS 操作系统支持三种调度方式:抢占式调度,时间片调度和合作式调度。实际应用主要是抢占式调度和时间片调度,合作式调度用到的很少。

合作式调度

亦称为FreeRTOS的协程,实际上是线程并发出来的,每个线程并发出来的协程共用一个栈空间。合作式调度主要用在资源有限的设备上面,现在已经很少使用了。出于这个原因,后面的 FreeRTOS 版本中不会将合作式调度删除掉,但也不会再进行升级了。

抢占式调度

每个任务都有不同的优先级,任务会一直运行直到被高优先级任务抢占或者遇到阻塞式的 API 函数,比如 vTaskDelay。

时间片调度

每个任务都有相同的优先级,任务会运行固定的时间片个数或者遇到阻塞式的 API 函数,比如vTaskDelay,才会执行同优先级任务之间的任务切换。如果用户在 FreeRTOS.h 中禁止使用时间片调度,那么每个任务必须配置不同的优先级。文章来源地址https://www.toymoban.com/news/detail-531897.html

路径:FreeRTOS.h
#ifndef
configUSE_TIME_SLICING	
#define
configUSE_TIME_SLICING 1
​​​​​​​#endif

到了这里,关于freeRTOS面试会问到的问题。的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 软件测试面试怎样介绍自己的测试项目?会问到什么程度?

    想知道面试时该怎样介绍测试项目?会问到什么程度? 那就需要换位思考, 思考HR在这个环节想知道什么。 HR在该环节普遍想获得的情报主要是下面这2个方面: 1)应聘者的具体经验和技术能力, 2)应聘者的团队的沟通能力、合作能力和问题解决能力。 了解到HR目的后,我

    2024年02月05日
    浏览(51)
  • 【Linux驱动开发100问】Linux驱动开发工程师在面试中常被问到的问题汇总

    🥇今日学习目标:什么是Kconfig?如何使用Kconfig? 🤵‍♂️ 创作者:JamesBin ⏰预计时间:10分钟 🎉个人主页:嵌入式悦翔园个人主页 🍁专栏介绍:Linux驱动开发100问 什么是Linux内核? 如何编译Linux内核? 什么是模块?如何编写和使用模块? 什么是Makefile?如何编写Makefi

    2024年02月06日
    浏览(138)
  • 【面试】Java面试频繁问到的题最新整理(附答案)

    封装 :对象只需要 选择性的对外公开一些属性和行为 。 继承 :子对象 可以继承父对象的属性和行为 ,并且可以在其之上进行修改以适合更特殊的场景需求。 多态 : 允许不同类的对象对同一消息做出响应 。 数据类型 占用字节 byte 1 short 2 int 4 long 8 float 4 double 8 char 2 boo

    2024年02月07日
    浏览(46)
  • 大厂HR经常会问到的Java线程池面试题

    一、什么是线程池         线程池和数据库连接池非常类似,可以统一管理和维护线程,减少没有必要的开销。 二、为什么要使用线程池         因为在项目开发过程中频繁的开启线程或者停止线程,线程需要重新被CPU从就绪状态调度到运行状态,需要发生CPU的上下

    2024年02月14日
    浏览(32)
  • 1902_野火FreeRTOS教程内核在STM32中用到的2个中断PENDSV和SYSTICK

    全部学习汇总:  g_FreeRTOS: FreeRTOS学习笔记 (gitee.com) 上面是涉及到的源代码,而这次需要分析的就是78、79行的两个中断。首先,需要确认NVIC_SYSPRI2寄存器的作用。 进一步看里面相关的定义,从这里看这个注释与代码出现了不一致的地方。也就是这个 0xe000ed20地址究竟是哪一

    2024年02月21日
    浏览(38)
  • FreeRTOS学习之路,以STM32F103C8T6为实验MCU(序章——浅谈单片机以及FreeRTOS)

    学习之路主要为FreeRTOS操作系统在STM32F103(STM32F103C8T6)上的运用,采用的是标准库编程的方式,使用的IDE为KEIL5。 注意!!!本学习之路可以通过购买STM32最小系统板以及部分配件的方式进行学习,也可以通过Proteus仿真的方式进行学习。 后续文章会同时发表在个人博客(jaso

    2024年02月06日
    浏览(56)
  • FreeRTOS_Stm32F103系列单片机标准库移植

    链接:FreeRTOS 下面的教程是基于从github下载压缩包进行的,最好下载这个或者直接看3.1,从我百度网盘下载。如果是别的下载源也问题不大,大同小异。 此时我们需要下载以下两个仓库, 点进去按下面的步骤下载就行了,另一个也是这样下。 链接: FreeRTOS官网 打开链接我们

    2024年01月22日
    浏览(53)
  • 【单片机学习笔记】Windows+Vscode+STM32F4+freeRTOS+FatFs gcc环境搭建

    为摒弃在接受keil邮件,研究了下gun编译,以STM32F407为例,简单记录 Git 选择对应版本直接安装即可https://git-scm.com/download/win make gcc ​ 1)将上述软件包放置于C盘根目录 2)添加环境变量 3)cmd命令行测试环境 分别输入 启动文件及LD文件 目录路径表示问题 字节对齐及指定位置存

    2024年02月07日
    浏览(57)
  • 银行面试会问些什么问题?

    每年面试都会遇到一些”经典面试问题“,虽然问题常见,但出彩的回答并不常见,尤其对面试”一无所知“的同学,”直来直往“的回答往往无异于”自杀“。今天小编就给大家来分析一下,银行面试会问哪些问题,从如信银行考试中心了解到: 如面试中必考的题:这里举

    2024年02月05日
    浏览(51)
  • STM32 FreeRTOS 内存问题

    2024年02月09日
    浏览(41)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包