跳转至

常见问题 FAQ

考生最容易搞混的概念,按章节整理


第一章

Q1:嵌入式CPU的字长一定是16位以下吗?

不是。 ARM是32位,现代高端嵌入式处理器(如手机用的Cortex-A)是64位。

题目说"字长在16位以下"是错误的说法,这是官方样题第2题考点。


Q2:SoC中只有一个CPU吗?

不是。 SoC可以有多个CPU核心(如今天的手机处理器都是多核)。官方样题选A就是这个错误选项。


Q3:MPEG-4和MPEG-2有什么区别?

  • MPEG-2 → DVD、数字有线电视(高质量,适合广播)
  • MPEG-4 → 网络视频、手机(高压缩比,流量少)

数字有线电视选MPEG-2,不要选MPEG-4。


Q4:C类IP地址适合中型网络吗?

不是。 C类IP地址适合小型网络(最多254台主机),B类才适合中型网络。这是高频考点,选A就是错的。


第二章

Q5:ARM状态和Thumb状态有什么区别?

ARM状态 Thumb状态
指令宽度 32位 16位
性能 更高 略低
代码密度 低(占空间大) 高(占空间小)
复位后状态 是(默认进入ARM状态)

注意:ARM状态不支持16位指令,这是样题第12题的考点。


Q6:CPSR和SPSR有什么区别?

  • CPSR(Current)= 当前程序状态,每时每刻都在用
  • SPSR(Saved)= 中断发生时,系统自动把CPSR保存到SPSR,处理完中断后恢复

设置工作模式/状态/中断使能 → 修改 CPSR


Q7:ARM的7种异常怎么记?优先级怎么排?

口诀记忆(从高到低):

复(位)快(速中断)外(部中断)
预(取中止)数(据中止)
软(件中断)未(定义指令)

即:复位 > FIQ > IRQ > PABT > DABT > SWI > UND


Q8:LDR R2,[R5,#2]! 执行后R5变不变?

变!!号表示前索引带回写,执行后R5自动变成R5+2。

没有!号 → R5不变(如 LDR R2,[R5,#2])。


Q9:BIC指令和AND指令都能清零,有什么区别?

  • AND:写目标掩码(要保留的位写1,要清零的位写0)
  • 例:清零bit0 → AND R0, R0, #0xFFFFFFFE(bit0写0)
  • BIC:写清零掩码(要清零的位写1,要保留的位写0)
  • 例:清零bit0 → BIC R0, R0, #0x1(bit0写1)

两者效果相同,BIC更直观(直接说哪一位要清)。


Q10:大端和小端怎么快速记?

大端(Big-Endian)= 大头朝前 = 高字节存在低地址 = 符合人类阅读习惯

例子:数字0x12345678 - 地址0x000: 0x12(最高字节) - 地址0x001: 0x34 - 地址0x002: 0x56 - 地址0x003: 0x78(最低字节)

小端(Little-Endian)= 小头朝前 = 低字节存在低地址 = x86默认、ARM默认

例子:同样的0x12345678 - 地址0x000: 0x78(最低字节) - 地址0x001: 0x56 - 地址0x002: 0x34 - 地址0x003: 0x12(最高字节)


第三章

Q11:DMA控制器挂在哪条总线上?

DMA挂在AHB(系统总线/高速总线)上,不是APB(外围总线)。

记忆:DMA是高速数据搬运,当然挂高速总线AHB。


Q12:ADC是定时/计数组件吗?

不是! ADC(模数转换器)是数据采集组件,不是定时/计数组件。

定时/计数组件只有:Timer、RTC、WDT


Q13:SPI可以构成多主多从吗?

可以! SPI理论上支持多主多从拓扑。

题目说"采用SPI不能构成多主多从式系统"是错误说法(选D)。


Q14:USB 2.0是目前速率最高的USB版本吗?

不是! USB 3.0(5Gbps)、USB 3.1(10Gbps)、USB 3.2(20Gbps)都比USB 2.0(480Mbps)快得多。

题目说"USB 2.0是目前传输速率最高的"是错误说法(选B)。


Q15:FRAM和MRAM是什么?

填空题必考,直接背: - FRAM = Ferroelectric RAM = 铁电存储器 - MRAM = Magnetoresistive RAM = 磁性存储器


Q16:半导体芯片存储容量怎么算?

容量 = 2^(地址线条数) × 数据总线位数

例:某芯片有16根地址线,8位数据总线 → 容量 = 2^16 × 8bit = 65536 × 8 = 512Kbit = 64KB


第四章

Q17:μC/OS-II最多有多少个任务?用户可用多少个?

  • 最多64个任务(优先级0~63)
  • 内核保留4个(空闲任务、统计任务等)
  • 用户可用60个(64-4=60)

注意:题目说"最多可以有63个任务"是错误的(选B),正确是60个。


Q18:μC/OS-II支持时间片轮转吗?

不支持! μC/OS-II是纯粹的优先级调度,每个任务必须有唯一的优先级,不用时间片。

题目说"μC/OS-I不支持时间片轮转调度法"是正确的说法(选C)。


Q19:OSTimeDly()之后任务进入什么状态?

进入等待态(Waiting/Blocked),不是被中断态。

被中断态是任务在运行时被中断打断,是暂时的;等待态是主动等待某个时间或事件。


Q20:时钟节拍应该在OSStart()之前还是之后激活?

之后! 必须先调用OSStart()启动多任务,然后才在某个任务中激活时钟节拍。

题目说"在调用OSStart()之后做的第一件事是初始化定时器中断"是错误的(选C)。

正确做法:OSStart()之前不启动时钟节拍,启动后在第一个任务里设置。


Q21:VxWorks、QNX、μC/OS-II属于硬实时还是软实时?

全部是硬实时OS(选A)。

Windows Embedded、μCLinux是软实时。


Q22:WinCE属于什么内核?

单内核(宏内核)

单内核的缺点:内存空间大、维护困难、任务执行时间可预测性

(注意:"内核切换太快"不是单内核的缺点,这是错误选项C,答案选C。)


Q23:iOS跟哪个OS关系最紧密?

UNIX(选B)。

iOS底层是基于Mach微内核+BSD Unix的XNU内核,macOS也是同样的底层。


第五章

Q24:裸机调试需要什么接口?

JTAG接口(选C)。

SPI/以太网/USB接口都不能直接用来连调试仿真器调试裸机。


Q25:arm-linux-gcc编译时如何加调试信息?

-g 参数:

arm-linux-gcc -g -o myapp main.c

填空:若要对应用程序进行调试,编译命令中应加 -g 参数。


Q26:嵌入式系统开发有哪4个阶段?

  1. 需求分析与规格说明
  2. 系统设计
  3. 构件设计(注意!不是"模块设计")
  4. 系统集成与测试

填空格式:嵌入式系统开发过程按顺序可以分成需求分析与规格说明、系统设计、构件设计、系统集成与测试等4个阶段。