--- tags: - 嵌入式系统 - 试题 create time: 2026-06-10 10:41 --- # 试题 1 — 武汉科技大学《嵌入式系统》 ## 概述 - **课程**:嵌入式系统 - **学校**:武汉科技大学 - **题型**:单选题、判断题、简答题、综合题 - **知识点**:嵌入式系统基础概念、ARM 架构与指令集、操作系统调度策略、嵌入式系统设计 > [!tip] 学习建议 > 本试题包含大量 ARM 指令分析题,建议结合 `[[嵌入式系统/ARM架构与指令集]]` 笔记进行复习。作答后请对照参考答案进行自我评估。 ## 正文 ### 一、单选题(共10题,每题2分,共20分) 1. 嵌入式系统的设计和实现过程中,需要考虑的因素包括()。 A. 可靠性 B. 实时性 C. 功耗 D. 以上都是 > [!success]- 答案与解析 > 答案:D > > 嵌入式系统的设计需要综合考虑可靠性、实时性、功耗等多方面因素,因此"以上都是"是正确答案。 2. 以下不属于嵌入式操作系统支持的存储管理方式是()。 A. 多重连续地址映射 B. 段页式存储 C. 虚拟存储 D. 存储保护单元 > [!success]- 答案与解析 > 答案:C > > 嵌入式操作系统通常资源受限,一般不支持虚拟存储管理。虚拟存储需要较大的内存和复杂的页面置换机制,不适合资源受限的嵌入式环境。 3. ARM7处理器除了可以访问通用寄存器外,还可以访问()。 A. 程序计数器 B. 状态寄存器 C. 基址寄存器 D. 链接寄存器 > [!success]- 答案与解析 > 答案:B > > ARM7处理器除了通用寄存器外,还可以访问程序状态寄存器(CPSR 和 SPSR)。程序计数器(PC)和链接寄存器(LR)本身就是通用寄存器的一部分(R15 和 R14)。 4. 以下哪条指令不能单独执行的是()。 A. 将R1的值与立即数16进制相加,并将结果传送到CPSR的标志位 B. 将R1的值与立即数16进制相加,并将结果传送到R1 C. 将R1的值与立即数10进制相加,并将结果传送到CPSR的标志位 D. 将R1的值与立即数26进制相加,并将结果传送到R1 > [!success]- 答案与解析 > 答案:C > > ARM 指令中的立即数不支持十进制格式(只支持十六进制前缀 0x 或无前缀的整数形式),因此选项 C 中"10进制"的表述在 ARM 汇编中无法单独执行。 5. ARM的指令集属于()。 A. RISC B. CISC C. VLIW D. EPIC > [!success]- 答案与解析 > 答案:A > > ARM(Advanced RISC Machines)采用精简指令集计算(RISC)架构,其指令集设计遵循 RISC 原则:固定长度指令、Load/Store 架构、大量通用寄存器等。 6. Android系统的()主要是为应用程序提供程序开发需要的各种API。Android自带的一些应用程序也是通过这个API开发出来的。 A. 应用层 B. 应用程序框架层 C. 系统运行库层 D. Linux内核层 > [!success]- 答案与解析 > 答案:B > > 应用程序框架层(Application Framework Layer)为应用程序提供各种 API,包括 Activity Manager、Window Manager、Content Providers 等核心服务。Android 自带应用也是通过这些 API 开发的。 7. 以下不属于ARM7处理器的工作模式是()。 A. 快速中断模式 B. 用户模式 C. 系统模式 D. 管理访问终止模式 > [!success]- 答案与解析 > 答案:D > > ARM7TDMI 的 7 种工作模式为:用户模式 (USR)、系统模式 (SYS)、管理模式 (SVC)、中止模式 (ABT)、未定义模式 (UND)、中断模式 (IRQ)、快速中断模式 (FIQ)。"管理访问终止模式"不是 ARM7 的标准工作模式名称。 8. ARM指令集是(),Thumb指令集是()。 A. 32位,16位 B. 16位,32位 C. 32位,32位 D. 32位,16位 > [!success]- 答案与解析 > 答案:D > > ARM 指令集是 32 位固定长度指令集,Thumb 指令集是 16 位压缩指令集。注意选项 A 和 D 文字相同,但 D 为标准标注方式。请注意区分 ARM 状态和 Thumb 状态下指令宽度的差异。 9. 以下哪个寄存器属于链接寄存器()。 A. CPSR B. SP C. LR D. R1 > [!success]- 答案与解析 > 答案:C > > LR(Link Register,链接寄存器)即 R14,用于保存子程序调用时的返回地址。CPSR 是程序状态寄存器,SP 是堆栈指针(R13),R1 是通用寄存器。 10. 以下异常发生在异常向量表中地址偏移量正确的是()。 A. 复位 0x00000000 B. 未定义指令 0x00000004 C. 软中断SWI 0x00000008 D. 数据访问终止 0x00000010 > [!success]- 答案与解析 > 答案:D > > ARM 异常向量表的标准地址:复位 0x00、未定义指令 0x04、SWI 0x08、预取中止 0x0C、数据访问中止 0x10、保留 0x14、IRQ 0x18、FIQ 0x1C。选项 A、B、C、D 的地址均正确,但数据访问中止对应 0x00000010 是正确的标准分配。 > [!warning] 易错点 > 第8题中,ARM指令集是32位,Thumb指令集是16位,选项 D 正确。请注意区分 ARM 状态和 Thumb 状态下指令宽度的差异。 > [!tip] 答题技巧 > 对于 ARM 处理器工作模式相关题目,建议画出处理器模式状态图辅助记忆。ARM7TDMI 有 7 种工作模式:用户模式(USR)、系统模式(SYS)、管理模式(SVC)、中止模式(ABT)、未定义模式(UND)、中断模式(IRQ)、快速中断模式(FIQ)。 --- ### 二、判断题(共10题,每题2分,共20分) 1. ARM7TDMI中T代表ARM,D代表嵌入式数字。() > [!success]- 答案与解析 > 答案:F(错误) > > ARM7TDMI 的含义为:ARM7(处理器内核)、T(Thumb 指令集支持)、D(Debug 调试支持)、M(Multiplier 乘法器)、I(ICE 在线仿真接口)。T 代表 Thumb,D 代表 Debug,而非"ARM"和"嵌入式数字"。 2. 嵌入式系统开发环境与运行环境是不一样的。() > [!success]- 答案与解析 > 答案:T(正确) > > 嵌入式系统通常采用交叉开发模式:开发(编译、调试)在通用 PC(宿主机)上进行,而程序运行在嵌入式目标设备上,两者环境不同。 3. 用户模式下不能切换到特权模式。() > [!success]- 答案与解析 > 答案:F(错误) > > 用户模式可以通过异常机制(如 SWI 软件中断、中断等)切换到特权模式(如管理模式 SVC)。用户模式只是不能直接修改 CPSR 来切换模式,但可以通过异常进入特权模式。 4. 软件指令可以加上条件码EQ变为BEQ表示"条件相等跳转",即CPSR中的Z标志置位。() > [!success]- 答案与解析 > 答案:T(正确) > > B 是分支指令(Branch),加上条件码 EQ(Equal)变为 BEQ,表示当 CPSR 中 Z 标志位为 1(即上一次比较结果相等)时执行跳转。 5. ARM处理器的工作状态包括三种:ARM状态、Thumb状态和调试状态。() > [!success]- 答案与解析 > 答案:F(错误) > > ARM 处理器的工作状态只有两种:ARM 状态(执行 32 位 ARM 指令)和 Thumb 状态(执行 16 位 Thumb 指令)。调试状态不属于处理器的工作状态。 6. 大端模式中,半字数据的高字节存放低地址中,而半字数据的低字节存放在高地址中。() > [!success]- 答案与解析 > 答案:T(正确) > > 大端模式(Big-Endian)的存储规则:高字节存放在低地址,低字节存放在高地址。这与网络字节序一致。 7. 不对齐地址访问时,如果不能安全分步存储在R0-R7中的数据,可能会造成该存储器数据的损坏。() > [!success]- 答案与解析 > 答案:T(正确) > > ARM 处理器要求数据访问地址对齐(字对齐为 4 字节边界,半字对齐为 2 字节边界)。不对齐访问可能导致不可预测的行为,包括存储器数据损坏。 8. ARM系统中的异常与中断概念是不完全等同的。() > [!success]- 答案与解析 > 答案:T(正确) > > 中断是异常的一种,异常的范围更广,包括复位、未定义指令、SWI、预取中止、数据中止、IRQ 和 FIQ。中断通常仅指外部设备触发的 IRQ 和 FIQ。 9. 芯片上电复位时会考虑将处理器的PC指针初始化。() > [!success]- 答案与解析 > 答案:T(正确) > > 芯片上电复位时,处理器会将 PC 指针初始化到复位异常向量地址(通常为 0x00000000),从该地址开始取指执行。 10. 程序状态寄存器中的中断禁止位是一个一位屏蔽位用于屏蔽所有可屏蔽的ARM中断。() > [!success]- 答案与解析 > 答案:F(错误) > > CPSR 中有两个中断禁止位:I 位用于屏蔽 IRQ 中断,F 位用于屏蔽 FIQ 中断。它们各自只屏蔽对应的中断类型,并非一个位屏蔽"所有"可屏蔽中断。 > [!note] 知识点辨析 > 第1题中,ARM7TDMI 的含义为:ARM7(处理器内核)、T(Thumb 指令集支持)、D(Debug 调试支持)、M(Multiplier 乘法器)、I(ICE 在线仿真接口)。D 代表 Debug,而非"嵌入式数字"。 --- ### 三、简答题(共4题,7+7+8+8共30分) #### 1. 简述嵌入式操作系统中占先式调度和非占先式调度各自的特点和它们之间的区别。(8分) > [!success]- 答案与解析 > 占先式内核按照每个任务优先级调度CPU的资源。非占先式内核中任务调度策略是按合作型调度方式工作的,各个任务彼此共享一个CPU,任务调度只是发生在任务切换之时。 > > 占先式内核可以使得一个高优先级的任务在紧急事件发生时,立即获得CPU的控制权,当中断返回后继续控制CPU的使用,当有更高优先级任务到达就绪态时,当前运行任务挂起,更高优先级任务开始运行。而非占先式调度只有在当前任务主动放弃CPU控制权时,更高优先级任务才能运行,因此实时性没有占先式好。 > > ```mermaid > flowchart TD > A["Task Scheduling Triggered"] --> B{"Preemptive or Cooperative?"} > B -->|"Preemptive"| C["High Priority Task Arrives"] > C --> D["Current Task Suspended Immediately"] > D --> E["High Priority Task Runs"] > B -->|"Cooperative"| F["Current Task Running"] > F --> G{"Task Voluntarily Yields CPU?"} > G -->|"Yes"| H["Scheduler Selects Next Task"] > H --> I["High Priority Task Runs"] > G -->|"No"| J["Continue Current Task"] > ``` > [!note] 教学提示 > 占先式调度的核心优势在于"立即响应",适用于对实时性要求高的场景,如工业控制、航空航天等。非占先式调度实现简单、开销小,适用于实时性要求不高的场景。 #### 2. 简述MOV指令与LDR指令的区别。(5分) > [!success]- 答案与解析 > MOV指令用于将数据从一个寄存器传送到另一个寄存器,或者将一个常数传送到一个寄存器中,但是不能访问内存空间。LDR指令用于从内存中读取数据到寄存器中。 > > ```armasm > ; MOV 指令示例 - 寄存器间传送 > MOV R1, R2 ; R1 = R2 > MOV R1, #0x10 ; R1 = 0x10 > > ; LDR 指令示例 - 从内存加载数据 > LDR R1, [R2] ; R1 = *R2 > LDR R1, =0x12345678 ; R1 = 0x12345678 > ``` > [!warning] 关键区别 > MOV 是数据传送指令,只能操作寄存器和立即数;LDR 是加载指令,可以访问内存地址。在实际编程中,需要加载内存数据时必须使用 LDR。 #### 3. 什么是程序状态寄存器?请简述其包含的内容。(9分) > [!success]- 答案与解析 > ARM内部包含1个CPSR和5个保留的备份SPSR。CPSR反映当前处理器的状态。 > > 其低5位为:M[4:0],处理器模式位。T位:Thumb指令。中断禁止位I和F位。条件标志位N、Z、C和V溢出标志。 > > ```mermaid > flowchart LR > subgraph CPSR["Program Status Register (CPSR)"] > direction LR > N["N: Negative"] > Z["Z: Zero"] > C["C: Carry"] > V["V: Overflow"] > I["I: IRQ Disable"] > F["F: FIQ Disable"] > T["T: Thumb State"] > M["M[4:0]: Mode Bits"] > end > ``` > > | 位域 | 名称 | 功能描述 | > |------|------|----------| > | N[31] | 负数标志 | 运算结果为负数时置1 | > | Z[30] | 零标志 | 运算结果为零时置1 | > | C[29] | 进位标志 | 运算产生进位时置1 | > | V[28] | 溢出标志 | 运算溢出时置1 | > | I[7] | IRQ禁止 | 置1时禁止IRQ中断 | > | F[6] | FIQ禁止 | 置1时禁止FIQ中断 | > | T[5] | Thumb状态 | 置1时为Thumb状态 | > | M[4:0] | 处理器模式 | 选择处理器工作模式 | #### 4. 指出以下每行ARM指令助记符的含义(8分) > [!success]- 答案与解析 > | 序号 | 指令 | 含义 | > |:----:|------|------| > | (1) | `ADD R1, R2, R3` | R1等于R2加R3 | > | (2) | `SWI 0` | 软件中断,中断号为0,具体功能由芯片厂商定义 | > | (3) | `MLS R1, R2, R3, R4` | R1等于R3乘R4的值减去R2 | > | (4) | `LDRB R2, [R3, #0x04]` | 将存储器地址为R3+4的字节数据传送到R2 | > | (5) | `STMFD SP!, {R1-R4}` | 将R1-R4中的数据依次压入堆栈,FD表示满递减堆栈 | > | (6) | `MRS R0, CPSR` | 将CPSR的值读取到R0 | > | (7) | `BL LOOP` | 带链接跳转到LOOP,返回地址保存到LR | > | (8) | `STMIA R0!, {R1-R4}` | 将R1-R4的值依次存入R0指向的地址,R0递增 | > | (9) | `MVNNE R0, R1, LSL#2` | 条件不等于时,将R1左移2位后按位取反送入R0 | > > ```armasm > ; 指令详解示例 > ADD R1, R2, R3 ; R1 = R2 + R3 > SWI 0 ; Software Interrupt > MLS R1, R2, R3, R4 ; R1 = R3 * R4 - R2 > LDRB R2, [R3, #4] ; R2 = *(R3 + 4) (byte) > STMFD SP!, {R1-R4} ; Push R1-R4 to stack (Full Descending) > ``` > [!note] 教学提示 > ARM 指令格式为:`操作码{条件码}{S} 目标寄存器, 操作数1, 操作数2`。条件码如 NE(不等于)、EQ(等于)等,S 后缀表示更新 CPSR 标志位。 --- ### 四、综合题(共2题,每题15分,共30分) #### 1. 紧急事件处理嵌入式系统设计 针对紧急事件处理等场合,需要根据紧急事件的预警等级(如家居安全管理、社区监管、交通管制、医疗卫生管理等),请根据紧急事件处理对实时性和高可靠性需求,设计一套嵌入式系统,简述其设计思路,并说明该系统怎样达到高可靠和实时的需求。 > [!success]- 答案与解析 > **评分标准:** 系统架构完整,具有较好的理论性和实际指导性给15分,其他酌情给分。 > - 本题描述该系统方案(包括硬件设计和软件系统),方案可行(8分) > - 主题明确,满足应用需求(4分) > - 其他(创新、合理性、系统控制等)(3分) > > **设计思路要点:** > > 1. **硬件层面:** 采用高性能嵌入式处理器(如 ARM Cortex-A/R 系列),配备冗余电源、看门狗定时器、外部中断控制器,确保硬件可靠性。 > 2. **软件层面:** 采用实时操作系统(RTOS),使用占先式调度算法,为紧急事件处理任务分配最高优先级。 > 3. **通信机制:** 设计多级中断优先级,紧急事件触发快速中断(FIQ),确保响应延迟最小化。 > 4. **容错设计:** 实现故障检测与恢复机制,关键数据采用双缓冲或冗余存储。 > > ```mermaid > flowchart TD > subgraph Hardware["Hardware Layer"] > Processor["ARM Cortex-R Processor"] > Watchdog["Watchdog Timer"] > RedundantPower["Redundant Power Supply"] > InterruptController["Interrupt Controller"] > end > subgraph Software["Software Layer"] > RTOS["Real-Time OS"] > PriorityScheduler["Priority Scheduler"] > TaskHigh["High Priority: Emergency Handler"] > TaskLow["Low Priority: Monitoring"] > end > subgraph Communication["Communication Layer"] > FIQ["Fast Interrupt (FIQ)"] > IRQ["Normal Interrupt (IRQ)"] > end > Hardware --> Software > Software --> Communication > InterruptController --> FIQ > InterruptController --> IRQ > FIQ --> TaskHigh > IRQ --> TaskLow > ``` > [!note] 设计要点 > 高可靠系统需要考虑:硬件冗余、软件容错、故障检测、数据校验、电源管理等多个维度。实时性则需要从调度算法、中断响应、任务优先级等方面进行优化。 #### 2. 可穿戴设备应用现状与未来趋势分析 嵌入式系统应用到实际的计步器、可穿戴设备智能手环等"穿戴"的方式进行使用。例如智能手环,可穿戴设备在人体运动中通过传感器对加速度变化规律检测,智能设备在对人体运动数据记录分析后,实现人体运动监测等应用。简要分析可穿戴设备的应用现状和未来趋势。 > [!success]- 答案与解析 > **评分标准:** 理论叙述完整,逻辑清晰,表达流畅,并附有相关要求可给满分,其他酌情给分。 > > 随着传感器技术的进步和低功耗蓝牙技术的成熟,可穿戴设备迎来了爆发式增长。 > > **应用现状:** > > - **穿戴方式:** 智能手环贴近皮肤、手表贴近手腕,都是贴身穿戴型。 > - **传感器数据:** 智能手环能够采集用户的心率、运动量等数据。 > - **设备特点:** > 1. 贴近人体,能持续采集生理数据 > 2. 低功耗设计,保证续航 > 3. 通过蓝牙等方式与手机同步数据 > > **未来趋势:** > > - 设备小型化 > - 功能集成化 > - 数据云端化 > - 功能更加专业化(如医疗级监测) > - 续航能力提升 > - AI算法优化数据分析 > > ```mermaid > flowchart LR > subgraph Current["Current State"] > Sensor["Motion Sensor"] > HeartRate["Heart Rate Monitor"] > BLE["Bluetooth Sync"] > end > subgraph Future["Future Trend"] > Mini["Miniaturization"] > Integration["Functional Integration"] > Cloud["Cloud Data"] > AI["AI Analytics"] > Medical["Medical Grade"] > end > Current -->|"Technology Evolution"| Future > ``` > [!note] 教学提示 > 可穿戴设备的核心技术包括:低功耗传感器技术、无线通信技术(BLE)、数据融合算法、电源管理技术。未来发展方向将更加注重医疗级精度和 AI 智能分析能力。 --- ## 关联笔记 - [[嵌入式系统/ARM架构与指令集]] - [[嵌入式系统/RTOS调度策略]] - [[嵌入式系统/异常与中断处理]] - [[嵌入式系统/嵌入式系统设计]]