【攻略】校园招聘:嵌入式软件工程师基础问题分享(一)

问题1

面试官:

STM32 中断是如何进入到中断服务程序的?

学生:

在STM32中,为了区分不同的中断,每个设备有自己的中断号。系统有0-255一共256个中断。系统有一张中断向量表,用于存放256个中断的中断服务程序入口地址。每个入口地址对应一段代码,即中断服务程序

问题2

面试官:

简述均值滤波和滑动滤波?

学生:

  • 均值滤波,优点:算法简单,对周期性干扰有良好的抑制作用,平滑度高,适用于高频振动的系统;缺点:对异常信号的抑制作用差,无法消除脉冲干扰的影响
  • 滑动均值滤波,把连续取N个采样值看成一个队列,队列的长度固定为N,每次采样到一个新数据放入队尾,并扔掉原来队首的一次数据(先进先出原则)。把队列中的N个数据进行算术平均运算,就可获得新的滤波结果
  • 问题3

    面试官:

    简述STM32 中断?

    学生:

  • STM32中断:CPU在处理某一事件A时,发生了另一事件B请求CPU迅速去处理(中断发生);CPU暂时中断当前的工作,转去处理事件B(中断响应和中断服务);待CPU将事件B处理完毕后,再回到原来事件A被中断的地方继续处理事件A(中断返回),这一过程称为中断
  • STM32中断的顺序:1)初始化 IO 口;2)开启 AFIO 时钟;3)EXTI配置;4)NVIC配置;5)编写中断服务函数
  • 问题4

    面试官:

    简述STM32 看门狗?

    学生:

  • 对单片机运行状态进行实时监测的考虑,便产生了一种专门用于监测单片机程序运行状态的模块或者芯片,俗称“看门狗”(watchdog)
  • STM32 有两个看门狗,独立看门狗和窗口看门狗,其实两者的功能是类似的,只是喂狗的限制时间不同。独立看门狗是由专门的低速总线进行驱动,即LSI总线(时钟频率40KHz);窗口看门狗是用APB1总线驱动的,时钟频率最36MHz。独立看门狗适合应用于需要看门狗作为一个在主程序之外 能够完全独立工作,并且对时间精度要求低的场合
  • 在独立看门狗中,我们可以从计数器的值一直减到0的中间的任何时刻都可以进行喂狗,但是在窗口看门狗中,我们规定只能在某一个时间段内进行喂狗。窗口看门狗的安全性比独立看门狗要高一些,毕竟它喂狗的时间段缩短了,这样就会降低由于程序跑飞而误打误撞的去执行喂狗操作的几率了
  • 问题5

    面试官:

    UART帧格式,停止位如何配置,波特率是什么?

    学生:

  • 波特率每秒传输的位数(bit)。一般选波特率都会有9600,19200,115200等选项。其实意思就是每秒传输这么多个比特位数(bit)
  • 起始位:先发出一个逻辑 0 的信号,表示传输数据的开始
  • 数据位:可以选择的值有5,6,7,8这四个值,可以传输这么多个值为 0 或者 1 的bit位。这个参数最好为8,因为如果此值为其他的值时当你传输的是ASCII值时一般解析肯定会出问题。理由很简单,一个ASCII字符值为8位,如果一帧的数据位为7,那么还有一位就是不确定的值,这样就会出错
  • 校验位:数据位加上这一位后,使得 1 的位数应为偶数(偶校验)或奇数(奇校验),以此来校验数据传送的正确性
  • 停止位:它是一帧数据的结束标志,可以是1bit、1.5bit、2bit的空闲电平
  • 空闲位:没有数据传输时线路上的电平状态,为逻辑 1
  • 传输方向:即数据是从高位(MSB)开始传输还是从低位(LSB)开始传输
  • UART传输数据的顺序就是:刚开始传输一个起始位,接着传输数据位,接着传输校验位(可不需要此位),最后传输停止位。这样一帧的数据就传输完了
  • 帧间隔:即传送数据的帧与帧之间的间隔大小,可以以位为计量也可以用时间
  • 问题6

    面试官:

    UART如何判断一帧数据结束?

    学生:

  • 1、空闲中断。在总线上接收到数据后,一个字节的时间内没有再接收到数据,空闲标志位置位,便认为一帧接收完毕。如STM32的空闲中断
  • 2、延时等待。设定一个超时时间,在总线上接收到数据后,设定时间内没有再接收到数据,认为一帧接收完毕。如看门狗
  • 3、通信协议。最常见的通信协议就是判断字符串末尾的回车符\r、换行符\n等,或者特定的帧尾。也可加入帧头、数据长度、数据校验等构成较为复杂点的通信协议
  • 问题7

    面试官:

    空闲中断是什么?

    学生:

    空闲的定义是总线上在一个字节的时间内没有再接收到数据。空闲中断是检测到有数据被接收后,总线上在一个字节的时间内没有再接收到数据的时候发生的。一般就只有一个数据帧发送完成的情况,所以串口的空闲中断也叫帧中断

    问题8

    面试官:

    SPI通信的数据线有几根?如果去掉一根,可以是哪根?

    学生:

  • 只有一个主机和一个或者多个从机。标准的SPI是4根线,串行时钟线(CSK)、主机输入/从机输出数据线(MISO)、主机输出/从机输入数据线(MOSI)、低电平有效从机选择线(CS)
  • 从机选择线(CS)可以去掉
  • 问题9

    面试官:

    程序编译过程?

    学生:

  • 预处理阶段。预处理器(cpp)根据以字符#开头的命令,修改原始的C程序。比如hello.c中第一行的#include<stdio.h>命令告诉预处理器读取系统头文件stdio.h的内容,并把它直接插入程序文本中,结果就得到了另一个C程序,通常是以.i作为文件扩展名
  • 编译阶段。编译器(ccl)将文本文件hello.i翻译成文本文件hello.s,它包含一个汇编语言程序。汇编语言程序中的每条语句都以一种标准的文本格式确切的描述了一条低级机器语言指令
  • 汇编阶段。汇编器(as)将hello.s翻译成机器语言指令,把这些指令打包成一种可重定位目标程序的格式,并将结果保存在目标文件hello.o中。hello.o文件是一个二进制文件,它的字节编码是机器语言指令而不是字符,如果我们在文本文件中打开hello.o文件,看到的将是一堆乱码
  • 链接阶段。链接器(ld)负责处理合并目标代码,生成一个可执行目标文件,可以被加载到内存中,由系统执行
  • 问题10

    面试官:

    TCP/UDP在哪一层?两者区别是什么?

    学生:

    TCP(传输控制协议)和 UDP(用户数据报协议)在传输层

  • 1、TCP面向连接(如打电话要先拨号建立连接);UDP是无连接的,即发送数据之前不需要建立连接
  • 2、TCP提供可靠的服务。也就是说,通过TCP连接传送的数据,无差错,不丢失,不重复,且按序到达;UDP尽最大努力交付,即不保证可靠交付
  • 3、TCP面向字节流,实际上是TCP把数据看成一连串无结构的字节流;UDP是面向报文的,UDP没有拥塞控制,因此网络出现拥塞不会使源主机的发送速率降低(对实时应用很有用,如IP电话,实时视频会议等)
  • 4、每一条TCP连接只能是点到点的;UDP支持一对一,一对多,多对一和多对多的交互通信
  • 5、TCP首部开销20字节;UDP的首部开销小,只有8个字节
  • 6、TCP的逻辑通信信道是全双工的可靠信道,UDP则是不可靠信道
  • 希望本文对大家有帮助,上文若有不妥之处,欢迎指正

    分享决定高度,学习拉开差距

    物联沃分享整理
    物联沃-IOTWORD物联网 » 【攻略】校园招聘:嵌入式软件工程师基础问题分享(一)

    发表评论