必背八股文-嵌入式基础篇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、京东、中兴、比特大陆|算能、美团等等