必背八股文-嵌入式基础篇3

RTOS采取哪些手段保证他的实时性?

  • 固定优先级调度或抢占式调度。
  • 最小化中断禁用时间。
  • 提供时间确定性的API。
  • 使用实时时钟和定时器。
  • 优化上下文切换时间。

 

项目中有制定通讯协议,就问有出现过什么通讯错误,出现错误了怎么办?通讯丢失怎么办?

  • :如CRC错误、超时、丢包等。首先,应确保协议有适当的错误检测和恢复机制。对于错误,通常会要求对方重新发送数据。
  • :应该有一个超时机制,并尝试重新建立连接或报告错误。

 

做过哪些linux驱动,遇到过什么问题?

取决于你自己的实际经验,可能的问题包括与内核版本兼容性问题、资源泄漏、内存管理问题等。

 

linux中能进行浮点数运算吗

Linux可以进行浮点数运算。但在内核空间,通常不建议进行浮点运算,因为内核不保存浮点寄存器的上下文。如果在驱动或内核模块中确实需要进行浮点运算,必须小心保存和恢复浮点状态。在用户空间,浮点数运算是完全正常的。

 

RTOS中哪里会进行线程调度

在RTOS中,线程或任务调度通常在以下情况下发生:

  • 当一个线程完成执行或主动让出CPU时(如调用sleep或yield函数)。
  • 当一个更高优先级的线程变为就绪状态(例如,由于外部事件或定时器唤醒)。
  • 定时器到期导致的线程唤醒。
  • 在外部中断处理结束后。

 

线程切换为什么用PendSVC,有什么优势

PendSVC是ARM Cortex-M内核用于处理延迟的服务调用,如任务或线程切换。其优势包括:

  • 低优先级:这意味着其他中断可以打断它,提供了更高的系统响应性。
  • 硬件支持:Cortex-M硬件可以自动保存和恢复必要的寄存器,简化上下文切换。

 

static用法,变量存储位置

  • 用法:在C中有多种用法,可以用于局部变量、全局变量和函数。
  • 存储位置:静态变量存储在数据段(对于初始化的静态变量)或bss段(对于未初始化的静态变量)。

 

C语言编译后的内存分布

  • 文本段:存储程序代码。
  • 初始化的数据段:存储初始化的全局变量和静态变量。
  • 未初始化的数据段 (bss):存储未初始化的全局变量和静态变量。
  • 堆:动态内存分配区域。
  • 栈:存储局部变量和函数调用的信息。

 

volatile变量作用?修饰哪些变量,为什么这些变量要用volatile修饰

  • 作用:告诉编译器该变量可能会在任何时候突然更改,从而防止编译器对其进行优化。
  • 哪些变量:通常用于硬件寄存器的访问、中断服务程序中使用的变量、多线程应用中由多个任务共享的变量。
  • 为什么:这些变量可能在编译器

剩余60%内容,订阅专栏后可继续查看/也可单篇购买

本专栏主要是介绍嵌入式软件开发岗位的相关知识和学习攻略,为大家提供一份笔试与面试手册。包括有嵌入式软件开发岗位介绍与学习攻略;校园招聘和offer疑惑问题的介绍;在笔试方面,如何刷题为笔试作准备,提供往年笔试真题;在面试方面,提供相关知识的复习重点,提供面试真题。包括有:华为、蔚来、文远、大疆、三一、深信服、亚马逊、Intel、百度、科大讯飞、OPPO、京东、中兴、比特大陆|算能、美团等等

全部评论
1 回复 分享
发布于 03-03 21:10 广东

相关推荐

深圳市盛弘电气股份有限公司 硬件工程师 28K x 14薪 硕士985
点赞 评论 收藏
分享
4 32 评论
分享
牛客网
牛客企业服务