当前位置: 首页 > news >正文

嵌入式面试知识点总结 -- FreeRTOS篇

一、堆栈溢出检测

问题:

  • 问题一:FreeRTOS堆栈溢出检测的方法?

解答:
参看:FreeRTOS学习 – FreeRTOSConfig.h介绍

两种堆栈溢出检测方法:
方法1:

  • 开启方法,configCHECK_FOR_STACK_OVERFLOW==1
  • 检测原理:通过在任务切换时,检测栈顶指针和栈起始指针,或者栈顶指针和栈结束指针是否越界,如果越界,在任务切换的时候触发堆栈溢出钩子Hook函数。

方法1的优点就是快。但是缺点就是不能检测所有的堆栈溢出。比如任务执行中确实出现了栈顶指针越界的情况,但是在任务切换之前栈顶指针又指回到了合法位置,这个时候就检测不到栈溢出了。

方法2:

  • 1、开启方法:configCHECK_FOR_STACK_OVERFLOW==2
  • 2、检测原理:在任务创建时,将任务栈所有的数据初始化为一个固定值0xa5,通过任务切换的时候,来判断栈底16个或20个字节是否都为0xa5,如果被修改过,会触发堆栈溢出钩子Hook函数。

方法2 比 方法 1要慢一些,但是对用户而言还是很快的。方法2能检测到几乎所有的堆栈溢出,但是也有一些情况检测不到,比如溢出值和标记值相同的情况。

二、优先级

问题:

  • 问题一:FreeRTOS的任务优先级是如何定义和使用的?
http://www.lryc.cn/news/418803.html

相关文章:

  • 【深度学习】注意力机制(Transformer)
  • 【MySQL】将一张表的某一个值赋值到另一张表中
  • 怎样确定局域网里面是否有MAC地址冲突
  • springboot 大学生兼职平台系统-计算机毕业设计源码05282
  • CentOS linux安装nginx
  • 事务性邮件接口API如何集成以实现自动化?
  • zabbix 监控软件
  • C语言随机数小游戏
  • 解决Ubuntu报“无法解析域名cn.archive.ubuntu.com“问题
  • 搭建pxe网络安装环境实现服务器自动部署
  • Go框架选战:Gin、Echo、Fiber的终极较量
  • 2024.8.08(python)
  • RabbitMQ知识总结(基本原理+高级特性)
  • 字符串切割split
  • Python中的 `continue` 语句:掌握循环控制的艺术
  • AI安全新纪元:智能体驱动的网络安全新范式
  • c语言学习,isascii()函数分析
  • DAMA学习笔记(十二)-数据质量
  • 查找项目中丢失脚本的物体
  • 支付宝开放平台竟出现一张神秘人脸!
  • 每日学术速递8.8
  • 【JVM基础12】——垃圾回收-说一下JVM有哪些垃圾回收器?
  • 进阶学习------linux运维读写执行权限
  • 视频循环存储的实现
  • 在centOS系统中使用docker部署Jenkins
  • Qt 将生成的exe文件自动复制到其它目录下
  • openwrt下,用iptable转发端口访问远程的SMB服务
  • JVM类加载中的双亲委派机制
  • 【OpenCV C++20 学习笔记】范围阈值操作
  • 【Material-UI】Checkbox组件:Indeterminate状态详解