嵌入式软件面试核心点(1)
嵌入式这个范围也是比较广的,比如有的用MCU做裸机开发的,有的公司可能还在用单片机,有的是在MCU上基于RTOS进行开发的,有的是基于ubutun做bsp的,当然还有其他的,这些方向都不同的,面试笔试等准备点也就不一样了,下面我一一介绍
1.MCU裸机开发
裸机开发就需要从三个方向去了解,分别是总线控制方式(如SPI总线,UART,IIC总线等,要是深入的话还有USB等),MCU的控制方法(就是代码怎么写),其他器件如MCU外面接了一个IIC,要知道怎么控制这个IIC设备,下面分别看一下这三点。
- 总线控制方法,每个总线都有不同的控制方式,如串口,对于软件来说,就考虑rx和tx(有时候还会有流控引脚),因此在对MCU的配置时,就需要要配置TX和TX的引脚复用功能,并使能对应引脚的时钟,同时串口协议中规定了起始位,停止位,校验等,注意没有时钟, 起始位:表示发送方要开始发送一个数据单元, 数据位是通信单元中发送的有效数据位数,校验位用来校验数据位,防止数据出错; 停止位是发送方用来表示通信结束的。
- MCU,这个比较简单,现在的芯片厂都有提供的API接口,直接调用API就可以了,但需要怎么怎么调用,每个API什么含义,一些如UART怎么初始化,怎么配置引脚,怎么收发数据。我以串口为例来说一下,在配置引脚的时候,要配置串口的RX 和 TX 引脚对应的GPIO 时钟和 USART 时钟,并初始化 GPIO,要配置RX和TX的串口服用功能,配置 UART的参数(有停止位,硬件流控,奇偶校验,数据位等参数),配置UART的接收中断,最后使能串口,使能之后就可以调用收发API进行数据通信了,下图是我记录的一些API接口,供大家参考
- 器件的控制,这个一般硬件的同时关注的更多,比如如何共地,如何供电并稳压,信号线如何设计来降低干扰等,是否需要上拉或者下拉电阻等,软件上就比较简单了,只需要关注信号线和时钟(针对有时钟的总线)等,在调试的时候,就需要测量信号线上的数据
上面是以串口为例子说明的,针对其他总线也一样,要知道这个总线怎么在MCU侧配置,配置好后,怎么收发数据,又怎么测量数据,知道这些外,在有些C语言基础,这些足够应付嵌入式MCU方面工作的校招了