嵌入式系统开发

  • 嵌入式系统概述
  • ARM技术及体系结构
  • ARM7TDMI指令系统

嵌入式系统概述

1.什么是嵌入式系统?有何特点?

嵌入式系统是以应用为中心,以计算机技术为基础,且软、硬件可裁剪的,
适用于系统对功能、可靠性、体积、功能、功耗成本具有严格要求的计算机系统,
他一般由嵌入式微处理器。外围硬件设备,嵌入式操作系统和用户应用程序组成。
用于实现对其他设备的控制,监视、处理的功能。特点:技术先进,系统内核小,专用性强,系统精简,实时性高,
软件开发标准化,不具备二次开发的能力

2、嵌入式系统可以分为几层,每一层完成哪些功能?

I/O接口,组成嵌入式系统的基础,实现逻辑运算和算术运算;
中间层:相关底层硬件的备至和初始化,设备驱动程序
软件层:主要由RTOS,文件系统,图形用户接口,网络系统和通用组件模块组成,是软件开发的基础;
功能层:完成被控制对象的控制功能。

3嵌入式操作系统中硬件抽象层有什么特点?

硬件抽象层又称为中间层,是介于硬件层和软件层之间的,
它将硬件层和软件层分开。具有硬件相关性和操作系统相关性。

4.嵌入式处理器分为哪几类?他们有何特点?

嵌入式微处理器,嵌入式微控制器,嵌入式DSP处理器,嵌入式片上系统
嵌入式微处理器:处理能力强,具有较高的性能,价格相应较高
嵌入式微控制器:单片化,体积小,功耗小,成本低,可靠性提高,价格低廉,功能优良,品种数量多;
嵌入式DSP处理器:专用于信号处理,在系统结构和指令算法方面有特殊设计,具有较高的编程效率和指令执行速度。
嵌入式片上系统:实现软硬件的无缝结合,具有较高的综合性,
绝大部分系统构件在系统内部,系统简介,减少了系统的体积和功耗,提高了系统的设计效率和可靠性。

5.简述嵌入式系统的开发过程。

嵌入式系统的开发过程可以分为需求分析、体系结构设计、软件设计、硬件设计、系统集成和系统优化与测试6个阶段。
自下而上和自上而下的设计流程

ARM技术及体系结构

1.什么是哈佛结构?与普林斯顿结构有何区别?

哈佛结构是一种将程序中指令和数据分开存储的存储器结构。
即哈佛结构中程序存储器和数据存储器是两个独立的存储器,每个存储器独立编址、独立访问。
普林斯顿结构(冯·诺伊曼结构)是一种将程序指令存储器和数据存储器合并在一起的存储器结构。
程序指令存储地址和数据存储地址指向同一个存储器的不同物理位置。这便是。这便是两种结构的区别。

2.什么是RSIC?什么是CSIC?简述他们的特点与差别。

RSIC是精简指令集计算机,CISC是复杂指令集计算机。两者的区别在于不同的CPU设计理念和方法。
对于CISC:
⑴ 在CSIC结构的指令系统中,各种指令的使用频率相差悬殊。有80%的指令只在20%的运行时间内才会用到。
⑵ CISC结构指令系统的复杂性带来了计算机体系结构的复杂性,这不仅增加了研制时间和成本,而且还容易造成设计错误。
⑶ 在CISC结构指令系统中,由于各条指令的功能不均衡性,不利于采用先进的计算机体系结构技术来提高系统的性能。
对于RISC:
⑴ 简化指令集,只保留常用的基本指令;
⑵ 设计大量的通用存储器,减少访存的次数;
⑶ 采用简单的指令格式、规整的指令字长和简单的寻址方式。

3.ARM7处理器是几级流水线?在ARM7处理器中,“PC指向的是下一条要执行的指令”,这句话对吗?为什么?

ARM7处理器采用三级流水线。
“PC指向的是下一条要执行的指令”,这句话不对。在ARM处理器中将PC程序计数器定义到R15寄存器,
无论处理器处于何种状态,PC总是指向“正在取值”指令的地址,
一般来说,人们习惯性的约定将“正在执行的指令作为参考点”,成为当前第一条指令,那么PC总是指向随后的第三条指令,或者说PC总是指向当前正在执行的指令地址再加上2条指令的地址,即指向正在执行指令的下下一条指令,而不是指向下一条要执行的指令。

4.ARM处理器的工作状态分为哪二种?ARM处理器又是怎么定义和标志的?

ARM处理器的工作状态分为ARM状态和Thumb状态.
这两种状态有程序状态字CPSR中T标志位确定,为0时处理器工作在ARM状态,为1时处理器工作在Thumb状态。

5.ARM处理器的工作状态分为ARM状态和Thumb状态,这两种状态有程序状态字CPSR中T标志位确定,为0时处理器工作在ARM状态,为1时处理器工作在Thumb状态。

ARM7TDMI处理器内核包含2套指令系统,分别为ARM指令集和Thumb指令集,两种指令集的特点是:
ARM指令集:处理器执行32位字对齐方式的ARM指令,每条ARM指令长度为32位,指令的功能强大。
Thumb指令集:处理器执行16位字对齐方式的Thumb指令,每条Thumb指令长度为16位,是ARM指令功能的子集。

ARM7TDMI指令系统

1.ARM指令的寻址方式有几种?并指出下列指令中的寻址方式。

ARM指令的寻址方式有8种
分别为立即寻址、寄存器寻址、寄存器移位寻址、寄存器间接寻址、
基址变址寻址、相对寻址、多寄存器寻址、堆栈寻址。
⑴ SUB  R0, R1, R2   ;寄存器寻址
⑵ LDR  R0, [R2]   ;寄存器间接寻址
⑶ MVN  R0, #0x0F2    ;立即寻址
⑷ LDMIA  R0, {R1-R5} ;多寄存器寻址
⑸ STR  R2, [R4, #0x02]!  ;基址变址寻址
⑹ LDR  R1, [R2, R3]   ;基址变址寻址
⑺ MOV  R1, R1, ROR #2    ;寄存器移位寻址
⑻ LDR  R1, [R3], #0x04   ;基址变址寻址

2.指出下列指令是否正确,若不正确请说明原因。

⑴ MOVS  R1, 101  ;不正确,立即寻址方式应该是#101
⑵ MVN  R1, #0x10F  ;错误,立即数超出范围
⑶ STMDA  R11, {R2-R8}! ;错误,!位置错,
⑷ ADD  R0!, R2, #4  ;错误,加法操作中无!符号
⑸ LDR  R4, [R5]!  ;指令本身正确
⑹ MRS  PC, CPSR  ;指令本身不报错,但有严重警告,但会导致无法预料的结果,不正确,MRS是将CPSR传送到通用寄存器中,但这里的通用寄存器不包括R15,即PC
⑺ LDMFDS  R0!, { R5-R8, R2} ;错带S指令无法识别,序号
⑻ ADD  R3, [R3], R7  ;不正确,ADD指令不能访问存储器
(9) LDR  R11, [R15,R8] !  ;错误,R15作为PC指针,会产生不可预知的结果
(10) BXS  R0  ;错误,切换状态不带S

3.试说明MOV指令、LDR加载指令和LDR伪指令三者的区别。

MOV指令是把立即数、寄存器或寄存器移位后的数送给目标寄存器,可能会影响标志位。
LDR指令是将存储器中的数据按给定地址加载到寄存器中,数据来自存储器,目标也是寄存器,不影响标志位。
LDR伪指令(LDR   目标寄存器,=表达式)用于加载32位的立即数或一个地址值到指定寄存器,形式上与LDR指令有区别。

4.解释B指令、BL指令与BX指令的功能差别,并举例说明其使用方法。

B指令是分支指令,BL指令是带链接的分支指令,BX是带状态切换的分支指令。
B指令“B WAITA”指跳转至标号WAITA处开始执行,B指令的跳转范围为±32M;
BL指令,实现程序跳转,完成子程序调用,并保持PC到链寄存器LR中,跳转范围±32M,举例“BL DELAY”完成的跳转至标号DELAY处执行,并把PC-4存入LR。
BX指令,带状态切换的跳转,比如“BX  R0”表示跳转R0指定的地址开始执行,并查看R0[0]位的值,如果是1,对CPSR的T位置位,解释目标程序为Thumb指令,如果是0,对CPSR的T位清零,解释目标程序为ARM指令。

5.分析下列两段程序片断的功能,试用类C语言写出其等价功能。

(1)if(R0 > R1)R0++;elseR1++;(2)if((R0 != 10)&&(R1 != 20))R0 = R0+R1;

6.使用ARM汇编指令的条件执行功能,试用汇编语言实现下列两条C代码语句。
(1) if(x = = y)
a = b + c;
else
a = b – c;
(2) if(x = = y) && ( a = = b)
c = c * 2+b;

1)
LDR  R0, x
LDR  R1, y
LDR  R2, b
LDR  R3, c
CMP  R0,R1
ADDEQ  R4,R2,R3
SUBNE  R4,R2,R3
STR  R4,a
(2)
LDR  R0, x
LDR  R1, y
LDR  R2,a
LDR  R3,b
LDR  R4,c
CMP  R0,R1
CMPEQ  R2,R3,
MULEQ  R4,R4,#2
ADD R4,R4,R3
STR  R4,c

7.下列代码段是实现开IRQ中断和关IRQ中断功能,试补齐空白处内容。

⑴     MRS  R0,CPSRBIC  R1,R0,#0x80MSR  CPSR_c, R1
⑵
MRS  R1,CPSR
ORR   R1, R1, #0x80
MSR  CPSR_c, R1

嵌入式系统开发期末复习相关推荐

  1. 嵌入式系统开发期末复习——英文名词解释

    MMU:Memory Management Unit 内存管理单元 LCD:Liquid Crystal Display 液晶显示器 STN:Super Twisted Nematic TFT:Thi ...

  2. 嵌入式系统开发 (复习笔记)

    此书作者:李宥谋 主要是通过设计的ARM指令集和cpu内部的寄存器在内部的定时器的控制下工作.来完成数据运算处理和中断异常处理,外部数据通信通过连接外设接口处理. 目录 一.系统概述 (1)系统的概述 ...

  3. 面向对象开发期末复习概述(四)

    面向对象开发期末复习概述(四) 第7章 异常处理(内部类不作要求) 程序中的三类错误 编译错误.逻辑错误和运行时错误 (1)编译错误是由于没有遵循Java语言的语法规则而产生的,这种错误要在编译阶段 ...

  4. 面向对象开发期末复习概述(二)

    面向对象开发期末复习概述(二) 第2章 Java基础语法&第3章 运算符.表达式.语句 1.Java语言中定义了3种注释形式: (1)// 单行注释,注释到行尾 (2)/---------/ ...

  5. 移动应用开发期末复习(自用复习勿转)

    移动应用开发期末复习 题型 选择题 15*2=30 填空题 13*2=26 (题中已给候选项,选出正确的选项即可) 简答题 4*6=24 程序设计填空题 10*2=50 (题中已给候选项,选出正确的选 ...

  6. 《嵌入式系统开发之道——菜鸟成长日志与项目经理的私房菜》——02-08项目人力资源(Human Resource)管理...

    本节书摘来异步社区<嵌入式系统开发之道--菜鸟成长日志与项目经理的私房菜>一书中的第2章,第2.8节,作者:邱毅凌,更多章节内容可以访问云栖社区"异步社区"公众号查看 ...

  7. 《嵌入式系统开发之道——菜鸟成长日志与项目经理的私房菜》——第1章 系统•嵌入•硬件 01-01 Welcome on board!...

    本节书摘来自异步社区<嵌入式系统开发之道--菜鸟成长日志与项目经理的私房菜>一书中的第1章,第01-01节,作者 邱毅凌,更多章节内容可以访问云栖社区"异步社区"公众号 ...

  8. 嵌入式系统开发怎样快速度入门

    http://wenda.tianya.cn/wenda/thread?tid=392a249d9d6856c5 实践当然是最锻炼人的方式,但是我想在校生很少有这样的机会,别说本科生,硕士生也未必有条 ...

  9. labview嵌入c代码_LabVIEW与myRIO嵌入式系统开发入门

    一.概述 NI myRIO是NI公司推出的一款嵌入式系统开发平台,内嵌Xilinx Zynq芯片,可以利用双核ARM Cortex-A9的实时性能以及Xilinx FPGA可定制化I/O进行嵌入式系统 ...

最新文章

  1. 腾讯:我就是那只吃了假辣椒酱的憨憨。老干妈:企鹅你可长点心吧!
  2. ASIC开发设计流程
  3. ubuntu14.04 访问windows目录的方法 mount.cifs方式 取代smbfs方式
  4. android layout 层次感,FrameLayout的层次问题
  5. Solana生态项目DEX聚合器Dagg trade完成种子轮融资,credence.fund投资
  6. git ssh配置文件 服务器_【GIT】日常开发中的这些Git技巧你知道吗?
  7. 开源 CMS Drupal 修复 XSS 和开放重定向漏洞
  8. 敏捷开发的相关学习文档路径
  9. ArrayList类的使用方法
  10. python ocr文字识别竖排繁体_古籍族谱繁体竖排中文识别图文攻略-千百OCR
  11. 设置linux服务器时间自动同步
  12. 山无棱-天地合-乃敢与君绝
  13. java ee 7精粹_Java EE 7精粹 ([美]Arun Gupta) 中文pdf扫描版[68MB]
  14. JVM类加载、验证、准备、解析、初始化、卸载过程详解
  15. 突破次元壁垒,让身边的玩偶手办在屏幕上动起来!
  16. qt4 鼠标卡顿问题QBasicAtomicInt死锁导致的
  17. 游戏 AI 设计之 FSM 有限状态机
  18. java web JSP实用教程第二章
  19. ABAC基于属性的访问控制
  20. 插槽+生命周期+过滤器

热门文章

  1. xshell免费版本下载
  2. 安卓开发Material Design ToolBar的DrawerLayout 学习经验
  3. MindManager 思维导图全面介绍
  4. swiper ie11版本兼容调整
  5. 修改MTK平台Android P系统支持系统A/B分区升级
  6. 会声会影制作MV(带歌词字幕)的方法
  7. 学习逆变(DC-AC)电路和LLC的基本工作原理。
  8. PAT乙级--1033 旧键盘打字(测试点2,测试点4解决)
  9. 远程工具MobaXterm安装和使用教程
  10. Python 第三方模块 数据分析 Pandas模块 字符串处理