嵌入式系统习题(考试相关)

文章目录

  • 上一篇
  • 嵌入式系统概述
  • ARM技术概述
  • ARM指令
  • Thumb指令集
  • ARM程序设计

上一篇

嵌入式系统复习–基于ARM的嵌入式程序设计

嵌入式系统概述

  1. 嵌入式系统中常用的通信接口包括哪些?
    RS-232C串行通信接口,RS-422串行通信接口,RS-485串行通信接口,USB接口,以太网接口,IEEE1394接口,IEEE802.11接口,JTAG接口,蓝牙接口

  2. 大端存储与小端存储有什么异同?
    大端存储是将数据的低字节存入低地址高字节存入低地址,小端存储是将数据的高字节存入低地址低字节存入高地址

ARM技术概述

  1. RISC的主要特点

    • 数据通道中只保留有用的指令
    • 确保通道能够快速执行每个指令
    • 确保CPU硬件设计的足够简单
  2. 简述ARM处理器的数据类型

    • 有符号/无符号字节(B)
    • 有符号/无符号半字(H)
    • 有符号/无符号字(D)
  3. 简述哈佛结构和冯诺依曼结构的主要区别
    在这里插入图片描述

  4. 简述ARM体系结构的版本情况。

    • v6
      • 增加了Thumb-2 提高了代码密度
      • 增加了SIMD 提高了数字和媒体处理能力
      • TrustZone增加了安全性能力
      • IEM增强了功耗管理能力
    • v7
      • A型号提供了应用处理能力,支持复杂的操作系统
      • R型号提供了实时操作系统
      • M型号提供了成本敏感的系统
    • v8
      • 支持64位的处理器架构
      • 64位的通用寄存器和PC, SP
      • 支持64位AArch64, 和32位AArch32两种指令
  5. 简述ARM处理器异常处理情况。
    进入异常:

    1. 将CPSR中的内容拷贝到SPSR中
    2. 改变CPSR中的中断标志位
    3. 将指令的下一条指令拷贝到链接寄存器LR中
    4. 强制改变PC中的值,进入异常状态

    异常返回:

    1. 将异常改变的寄存器保护存入栈中
    2. 将SPSR_mode中的值拷贝到CPSR中
    3. 将PC恢复到指令异常前的指令流中
    4. 修改CPSR中的中断标志位
  6. ARM处理器支持哪几种工作模式?
    用户模式,快速中断fiq模式,普通中断irq模式,软件中断模式svc,中止模式abt,未定义模式und, 系统模式

  7. ARM处理器共有多少个寄存器?ARM状态下通用寄存器可以分为几类?
    37个寄存器,可以分为31个通用寄存器(不分组寄存器、分组寄存器、程序计数器),6个状态寄存器

  8. 简述ARM指令中12位压缩的立即数是如何构成的?
    由8位常数及4位循环移位位构成,及 将8位立即数循环右移2 * 循环移位位后得到对应的立即数

ARM指令

  1. 用ARM汇编指令实现下面列出的几种操作

    • R0 = 16
      MOV R0, #16
      
    • R0 = R1 / 16
      MOV R0, R1, LSR #4
      
    • R1 = R3 * 4
      MOV R1, R3, LSL #2
      
    • R1 = -R1
      MVN R1, R1
      
  2. 下面的ARM指令完成什么功能?

    • LDRH R0, [R1, #6]
      以前变址的方式将R1中的内容作为地址加上偏移量6后,以半字的方式载入R0中
    • LDR R0, =0x999
      伪指令,编译时通过多条指令运算得到32位的0x999并将它载入到R0中
  3. BX指令与BL指令有什么不同,请说明之?
    BX指令是在ARM与Thumb两个状态间的切换,当寄存器的第0位是1,则切换到Thumb状态,如果是0则切换到ARM状态,BL指令是跳转链接指令,在调到对应指令前,会将当前指令的地址拷贝到链接寄存器LR中,然后在进行跳转。

  4. 请指出MOV指令与LDR指令的区别和用途?
    MOV是完成寄存器与寄存器之间或与立即数之间的数据移动
    而LDR是寄存器与存储器之间的数据传输

  5. 调用子程序使用B还是BL指令?写出返回子程序的指令?
    调用子程序使用BL指令,因为需要返回到主程序所以要将下一条的指令地址链接到LR中
    没有嵌套的返回指令

    	BL LABEL
    LABELMOV PC LR
    

    有嵌套的返回指令

    	STMFD SP! {R0-R7, LR}BL SUBPROGRAMSUBPROGRAM;从子程序返回LDMFD SP! {R0-R7, PC}
    
  6. 编写一个子程序,从存储器某处拷贝一个字符串到存储器另一处。源字符串的开始地址放入R1, 长度(以字节为单位)放入R2, 目的字符串的开始地址在R3

    AREA COPYSTRING, CODE, READONLY
    ENTRY
    CODE32
    startBL SUBCOPY
    stopMOV R0, #0x18LDR R1, =0x20026SWI 0x123456
    ;子程序
    SUBCOPYCMP R2, #0BEQ ENDCOPY
    LOOPLDRB R4, [R1], #1; 后变址 mem32R1 -> R4, R1 + 1 -> R1STRB R4, [R3], #1SUBS R2, R2, #1BNE LOOPENDCOPYMOV PC, LR ; 子程序返回END
    
  7. 请将下面C语言代码转换成汇编语言

    if (a > 10 && a < 100)b = b + 1
    elseb = b - 1
    

    汇编语言为

    假设R0中存入a的内容, R1中存入b的内容CMP R0, #10BLS SECONDCMP R0, #100BCS SECONDADD R1, R1, #1
    SECONDSUB R1, R1, #1
    
  8. ARM寻址方式有哪几种?
    立即数寻址,寄存器寻址,基址加偏址寻址,寄存器间接寻址,块拷贝寻址,堆栈寻址,相对寻址方式

Thumb指令集

  1. ARM指令集与Thumb指令集中移位操作是如何实现的?有什么异同点?
    移位通过移位寄存器进行,一个移位类型一个移位量字段,前者决定移位方式,后者决定移位步数
    异同:

    1. ARM可以同时进行移位和逻辑运算,而Thumb只能单独进行移位运算
    2. ARM可以进行循环移位,但是Thumb不行
  2. 用语言描述ARM处理器如何进入和退出Thumb指令模式?
    ARM通过使用BX指令寄存器第0位为1进入Thumb模式,或者通过异常返回进入Thumb模式
    通过BX指令,寄存器第0位为0推出Thumb模式,或者通过发生异常推出Thumb

  3. 编写一个子程序,从存储器某处拷贝一个字符串到存储器另一处。源字符串的开始地址放入R1, 长度(以字节为单位)放入R2, 目的字符串的开始地址在R3

    AREA TCOPY, CODE, READONLY
    ENTRY
    CODE 16
    startBL SUBCOPY
    stopMOV R0, #0x18LDR R1, =0x20026SWI 0x123456
    SUBCOPYCMP R2, #0BEQ ENDCOPY
    LOOPLDRB R4, [R1], #1STRB R4, [R3], #1SUBS R2, #1BNE LOOP
    ENDCOPYMOV PC, LR
    END
    

    异同Thumb在使用寄存器时需要使用R0~R7, 低位寄存器使用受到限制, Thumb指令大多是二地址指令(CMP,MOV,LDR,STR等用法还和ARM类似), 多了移位指令

ARM程序设计

  1. 简述IRQ/FIQ异常中断处理程序中所使用的的_fiq/_irq的作用
    标记对应函数为中断函数,编译器会自动在函数内部增加中断现场保护代码
  2. 简述#include<头文件.h>与 #include "头文件.h"的区别
    带<>的是直接在标准路径下搜索相应文件,而带“”的是先在标准路径下搜索相应文件如果找不到,则在对应工程目录下搜索对应文件

  1. 变量的存储类型有几种?各自的作用是什么?
    • 全局变量:在整个程序的生命周期内都可访问,其存储空间在程序启动时分配,在程序结束时释放。
    • 局部变量:仅在被声明的函数或代码块内可见,器存储空间在声明该变量的函数或代码块时分配,在退出时释放
    • 静态变量:静态变量的生命周期延长到整个程序执行期间,但其作用域仍限定在声明它的函数或代码块内部
    • 寄存器变量:将变量存储在寄存器中,以提高访问速度。

  1. 函数的参数传递方式有几种?分别是什么?
    2中,寄存器传递和栈传递

  2. ATPCS包含那些规则?分别是什么?

    • 寄存器使用规则:R0-R3是用来传递参数的,R4-R11是用来保存局部变量的
    • 栈的使用规则:使用FD满递减堆栈,采用字对齐方式
    • 参数传递规则:当参数个数是固定的,第一个参数使用R0-R3传递,其余使用数据栈传递,当参数不是固定的时候,前4个参数使用R0-R3传递,超过4个的使用数据栈传递
  3. 在完成以下操作后,R0的内容是什么?

    MOV R1, #5
    ADD R0, R1, R1, LSL #3
    

    R1 = 5, R0 <- R1 + R1 * 8
    R0 = 5 + 5 * 8 = 45

  4. 请将下面C语言代码转换成汇编语言

    if (a == 0 || b == 1)c = d + e 
    
    AREA EXAMPLE, CODE, READONLY
    GBLA a, b, c, d, e
    ENTRY
    CODE 32
    startMOV R4, aMOV R5, bMOV R6, cMOV R7, dMOV R8, eCMP R4, #0CMP R5, #1BNE COMPAREENDADD R6, R7, R8
    COMPAREEND
    stopMOV R0, #0x18LDR R1, #0x20026SWI 0x123456
    END
    
  5. 编写一段汇编语言程序,实现ARM到Thumb状态的转换

    AREA SWITCH, CODE, READONLY
    ENTRY
    start 
    CODE 32MOV R0, into_ThumbADD R0, R0, #1 BX R0
    CODE 16
    into_ Thumb
    END
    
  6. 编写一段汇编程序,利用跳转表实现子程序的跳转。(跳转条件在R2中,R2的值为0,1,2,3,4…,子程序分别为SUB0, SUB1, SUB2…)

AREA JUMPTAB, CODE, READONLY
ENTRY
CODE 32
start BL JUMPTABJUMPTABADR R0, SUBTABCMP R2, #SUBMAXLDRS PC, [R2, R0, LSL 2]MOV PC, LRSUBTABDCD SUB1DCD SUB2...
SUBMAXSUB1...
SUB2...
END

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/604519.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【JAVA】Iterator 和 ListIterator 有什么区别?

&#x1f34e;个人博客&#xff1a;个人主页 &#x1f3c6;个人专栏&#xff1a; JAVA ⛳️ 功不唐捐&#xff0c;玉汝于成 目录 前言 在Java中&#xff0c;遍历集合是日常编程中常见的任务&#xff0c;而Iterator和ListIterator作为遍历集合的两个主要接口&#xff0…

application.properties 如何改成 application.yml

Convert YAML and Properties File 右键直接转换即可 Further Reading &#xff1a; idea 常用插件

【两阶段鲁棒】计及需求响应的多能互补微网两阶段鲁棒优化matlab

目录 1 主要内容 算例模型 目标函数 第一阶段 第二阶段 求解流程图 2 部分程序 3 程序结果 4 下载链接 1 主要内容 该程序参考文献《多能互补微网两阶段鲁棒优化调度研究》&#xff0c;在考虑风光不确定集的基础上提出采用计及DR响应的多能互补微网两阶段鲁棒备用调度模…

通信触发流程

该示例方案主要介绍如何通过建立的Modbus或TCP通信来实现触发方案、协议解析、发送事件和以及响应配置等功能。 需求&#xff1a;使用Modbus通信触发指定流程运行。 搭建思路&#xff1a;在接收事件中使用协议组装&#xff0c;比较规则选择上升沿&#xff0c;当接收到的值从其…

知识图谱之汽车实战案例综述与前瞻分析

知识图谱的前置介绍 什么是知识图谱 知识图谱本质(Knowledge Graph&#xff09;上是一种叫做语义网络(semantic network &#xff09; 的知识库&#xff0c;即具有有向图结构的一个知识库&#xff1b;图的结点代表实体&#xff08;entity&#xff09;或者概念&#xff08;con…

大数据 Yarn - 资源调度框架

Hadoop主要是由三部分组成&#xff0c;除了前面我讲过的分布式文件系统HDFS、分布式计算框架MapReduce&#xff0c;还有一个是分布式集群资源调度框架Yarn。 但是Yarn并不是随Hadoop的推出一开始就有的&#xff0c;Yarn作为分布式集群的资源调度框架&#xff0c;它的出现伴随着…

Java Base64简单介绍

1. Base64工具 工具链接 2. Base64示例代码 public class Base64Demo {// 请注意&#xff0c;在处理二进制数据时&#xff08;例如图片或文件&#xff09;&#xff0c;不需要将字节数组转换为字符串再进行编码或解码&#xff0c;// 可以直接对字节数组进行Base64操作。上述…

路由器01_工作原理

一、回顾交换机工作原理 交换机里面维护了一张MAC地址表&#xff0c;主要记录的是MAC地址和接口的对应关系。 交换机在初始状态下&#xff0c;MAC地址表是空的&#xff0c;当收到一个来自某接口的数据时&#xff0c;首先查看数据帧中的MAC地址表&#xff0c;对照自己的MAC地址…

在IDEA中使用git分支进行开发然后合并到Master分支,2022.1.x版本

在实际开发过程中&#xff0c;为了避免因为在开发中出现的问题以及方便发布版本&#xff0c;如果是多版本发布的情况相下&#xff0c;我们通常需要采用分支进行开发&#xff0c;这个时候&#xff0c;我们就需要了解git分支的相关知识点了&#xff0c;本篇博客也是博主在实际公司…

【MySQL】MySQL如何查询和筛选存储的JSON数据?

MySQL如何查询和筛选存储的JSON数据&#xff1f; 一、背景介绍二、支持的JSON数据类型三、基础数据3.1 创建表3.2 插入 JSON 数据3.3 查询 JSON 数据 四、操作函数4.1 JSON_OBJECT4.2 JSON_ARRAY4.3 JSON_EXTRACT 一、背景介绍 JSON(JavaScript Object Notation)是一种轻量级的…

每周一算法:倍增法查找位置

倍增法 倍增法&#xff08;Binary Lifting&#xff09;&#xff0c;顾名思义&#xff0c;就是利用“以翻倍的速度增长”的思想来解决问题的一类算法&#xff0c;它能够使线性的处理转化为对数级的处理&#xff0c;大大地优化时间复杂度。这个方法在很多算法中均有应用&#xf…

【IDEA】 解决在idea中连接 Mysql8.0,驱动无法下载问题

本篇继【idea】解决sprintboot项目创建遇到的问题2-CSDN博客 目录 一、Failed to download https://download.jetbrains.com/idea/jdbc-drivers/MySQL/8/LICENSE.txt:Remote host terminated the handshake 二、no dirver files provided com.mysql.cj.jdbc.Driver 三、Serv…

STM32F407ZGT6时钟源配置

1、26M外部时钟源 1、25M外部时钟源

计算机Java项目|基于SpringBoot+Vue的图书个性化推荐系统

项目编号&#xff1a;L-BS-GX-10 一&#xff0c;环境介绍 语言环境&#xff1a;Java: jdk1.8 数据库&#xff1a;Mysql: mysql5.7 应用服务器&#xff1a;Tomcat: tomcat8.5.31 开发工具&#xff1a;IDEA或eclipse 二&#xff0c;项目简介 图片管理系统是一个为学生和…

【linux学习】重定向

目录 重定向标准输出、标准输入和标准错误标准输出重定向标准错误重定向将标准输出和标准错误重定向到同一个文件处理不想要的输出标准输入重定向 管道过滤器uniq-报告或者忽略文件中重复的行wc-打印行数、字数和字节数grep-打印匹配行head/tail 打印文件的开头部分/结尾部分te…

How can I be sure that I am pulling a trusted image from docker?

1、Error response from daemon: manifest for jenkins:latest not found: manifest unknown: manifest unknown 2、Error response from daemon: pull access denied for nacos, repository does not exist or may require ‘docker login’: denied: requested access to th…

[蓝桥杯学习] ST表

RMQ问题 ST 表 用状态 s[i][j] 记录区间长度为 2^j 的长度的区间的最大值 所以状态转移方程就是 st[i][j] max( st[i][j-1] , st[i(1 << (j-1))][j-1] ) 注意状态转移的方向&#xff0c;保证区间合法性&#xff08;i2^j 不能超过数组大小&#xff09; 写完这些后&am…

大数据Doris(五十一):Colocation Join介绍

文章目录 Colocation Join介绍 一、原理 二、使用方式 1、建表 2、删表

HarmonyOS 应用开发学习笔记 stateStyles:多态样式

1、 HarmoryOS Ability页面的生命周期 2、 Component自定义组件 3、HarmonyOS 应用开发学习笔记 ets组件生命周期 4、HarmonyOS 应用开发学习笔记 ets组件样式定义 Styles装饰器&#xff1a;定义组件重用样式 Extend装饰器&#xff1a;定义扩展组件样式 前面记录了ets组件样式…

Python的基础练习题之学生管理系统

需求 使用Python基础写一个基于控制台的学生管理平台&#xff0c;里面功能分别是&#xff1a;1.录入学生信息2.查找学生信息3.删除学生信息4.修改学生信息5.排序6.统计学生总人数7.显示所有学生信息&#xff0c;要求数据存储在文件里。 代码 代码资源地址可以直接下载 效果图…