必背八股文-嵌入式基础篇2
对哪些通信接口熟悉?介绍一下SPI
我熟悉的通信接口包括I2C、SPI、UART、CAN、USB、Ethernet等。SPI是Serial Peripheral Interface的缩写,它是一种同步的串行通信接口,主要由四根线构成:SCLK(时钟线)、MOSI(主设备数据输出、从设备数据输入)、MISO(主设备数据输入、从设备数据输出)和CS/SS(片选线)。
线程都有哪些状态?及其各自的转换?
线程的状态通常有:新建(New)、就绪(Runnable)、运行(Running)、阻塞(Blocked)和终止(Terminated)。线程初始化后进入新建状态,当调用start()方法时进入就绪状态。由调度程序选定后进入运行状态。因某些原因(如等待I/O操作)可以进入阻塞状态。完成后,线程进入终止状态。
有cache的CPU上使用DMA如何保证数据的一致性?
为确保数据一致性,我们可能需要使用如下方法:1) 缓存失效(使缓存中的数据失效,强制从主内存中重新读取);2) 缓存刷新(将缓存中的数据写回主内存);3) 使用非缓存内存区域进行DMA操作。
按键防抖如何实现,该线程优先级如何设置?
按键防抖可以通过硬件和软件方法实现。软件防抖常常使用定时器:当检测到按键按下时,开始计时,并在一个短的延迟后再次检查按键状态。如果状态未变,则认为按键确实被按下。关于线程优先级,按键处理不需要非常高的优先级,但应确保在用户交互中能得到及时响应。
平时怎么debug?
常用的调试手段包括:使用JTAG或SWD调试器进行硬件调试、串口打印日志、使用LED或显示屏显示状态信息、利用模拟器和软件调试工具等。
用过哪些锁?
常用的锁有:互斥锁(Mutex)、信号量(Semaphore)、自旋锁(Spinlock)等。
程序段还有哪些区?
常见的程序内存区域有:代码段、数据段(初始化的全局变量和静态变量)、bss段(未初始化的全局变量和静态变量)、堆(动态分配的内存),和栈(函数调用、局部变量等)。
哪些地方会用到栈?有没有关注flash和ram空间?
栈主要用于函数调用、局部变量存储、和保存CPU的上下文。关注Flash和RAM空间是非常重要的,因为嵌入式系统的资源通常是有限的。常常需要监控和优化内存使用,以确
剩余60%内容,订阅专栏后可继续查看/也可单篇购买
本专栏主要是介绍嵌入式软件开发岗位的相关知识和学习攻略,为大家提供一份笔试与面试手册。包括有嵌入式软件开发岗位介绍与学习攻略;校园招聘和offer疑惑问题的介绍;在笔试方面,如何刷题为笔试作准备,提供往年笔试真题;在面试方面,提供相关知识的复习重点,提供面试真题。包括有:华为、蔚来、文远、大疆、三一、深信服、亚马逊、Intel、百度、科大讯飞、OPPO、京东、中兴、比特大陆|算能、美团等等