目录

嵌入式三级知识点分类

嵌入式三级知识点分类

嵌入式三级知识点分类

ADS1.2(ARM公司的集成开发环境软件)

1.ADS1.2把目标文件中的信息按照3种存储区域类型进行划分,RO段,RW段,ZI段

2.RO段:代码存储区和常数存储区,具有只读性质;

3.地址映射配置的连接类型:Simple连接类型和Scattered连接类型;

4.ARM提供的可执行输出文件的模板包括三个:Release、Debug、DebugRel

ADSL

1.用户安装ADSL时,只需在已有电话线的用户端配置一个 ADSL MODEM 和一个 语音分离器 ,计算机中需要安装一块 以太网卡

ARM处理器

1.ARM Cortex-A系列的内核都是基于ARMV7-A体系结构;

2.当处理器处于用户模式时,如果没有异常发生是不能改变工作模式的;

3.ARM处理器中R0-R15是通用寄存器,

堆栈指针SP———————–R13;

程序链接寄存器LR————-R14;

程序计数器PC——————-R15;

4.Cortex-M3只有Thumb-2状态和调试状态;

具有Thumb-2状态的ARM处理器内核是Cortex-M3;

5.MPU:ARM处理器的内存保护单元(也叫微处理器)

MMU:ARM处理器的内存管理单元,管理虚拟内存系统(访问权控制)的器件,负责虚拟地址到物理地址的映射;

6.ARM7采用冯诺依曼结构;

ARM9~ARM11采用哈佛结构;

7.ARM处理器支持8位,16位,32位数据类型

8.PSP:进程堆栈指针;

MSP:主堆栈指针;

SPSR:程序状态保存寄存器;

CPSR:程序状态寄存器;(当前运算操作所产生的标志位记录在CPSR),决定ARM处理器工作模式;

CPSR标志位:

N:符号标志,N=1运算结果为负,N=1运算结果为正;

F:禁止快速中断符号位,F=0允许FIQ中断,F=1禁止FIQ中断;

V:溢出标志,加减法有溢出时为1,否则为0;

Z:全零标志,运算结果为0,则Z=1;

9.R0~R15寄存器的位数为32位;

ARM处理器的工作模式:

(1)用户模式(USER):ARM处理器正常的程序执行状态

(2)系统模式(SYS):运行具有特权的操作系统任务

(3)快速中断模式(FIQ):支持高速数据传输或通道处理

(4)管理模式(SVC):操作系统保护模式

(5)数据访问终止模式(ABT)

(6)中断模式(IRQ)

(7)未定义指令终止模式(UND):处理存储器故障;

七种工作模之间切换条件取决于:当前程序状态寄存器CPSR的低5位值;

ARM处理器工作状态

1.ARM处理器工作状态包括:ARM状态,Thumb及Thumb-2状态和调试状态;

2.ARM状态是32位指令的状态,指令代码全部是4个字节长度

Thumb状态为16位指令状态,指令长度为16位,为减少代码量而设计

Thumb-2状态兼容16位指令和32位指令编码

3.除支持Thumb-2的ARM处理器外,其他所有ARM处理器都可以工作在ARM状态;

4.从ARMV4T开始,所有处理器都有Thumb状态

5.Thumb-2指令集中,关外部中断指令:CPSID I;开外部中断指令:CPSIE I;

6.ARM处理器复位后总处于ARM状态

7.ARM处理器支持Thumb(16位)/ARM(32位)双指令集,能很好的兼容8位/16位器件

8.通过BX指令,ARM状态和Thumb状态是可以相互切换的

ARM处理器异常

(1)复位RESET

(2)未定义指令UND

(3)软件中断SWI

(4)指令预取终止PABT

(5)数据访问终止DABT

(6)外部中断请求IRQ

(7)快速中断FIQ

每个异常中断向量占据4个字节

ARM处理异常中断响应过程

(1)将CPSR保存到将要执行的异常中断各自对应的SPSR中,以实现对处理器当前状态、中断屏蔽 位及标志位的保护;

(2)设置当前状态寄存器CPSR的相关位,进入相应模式;

(3)将引起一场指令的下一条地址(断点位置)保存到异常工作模式的LR(R14)中,使异常处理程 序执行完后能回到原来的程序处继续向下执行;

(4)每种异常模式对应两个寄存器SP和LR分别存放堆栈指针和断点地址;

AMBA总线规范

1.AMBA总线规范,给予ARM内核的嵌入式处理器芯片采用系统总线与外围总线两层结构的方式构建片上系统;

2.AMBA的系统总线主要用于连接高带宽快速组件;

电源管理与时钟控制器,测试接口,外部存储器控制接口,DMA控制器,USB主机,中断控制器;

AMBA的外围总线主要用于连接低带宽组件以及外部相连的硬件组件;

GPIO,UART,SPI,IIC,USB设备,ADC,DAC;

3.系统总线通过桥接器与外围总线互连。

4.ARM公司定义的总线规范的英文AMBA,即先进的微控制器总线体系结构;

5.AMBA是用于连接和管理片上系统(SoC)中功能模块的开放标准和片上互连规范。

6.标准规定了ARM处理器内核与处理器内部高带宽RAM,DMA以及高带宽外部存储器等快速组件的接口标准,也规定了内核与ARM处理器内部外围端口及慢速设备接口组件的接口标准。

7.AMBA一共有4个版本;

编码标准

1.目前数字有线电视所传输的数字视频采用的压缩编码标准是MPEG-2;

2.汉字编码国家标准有GB2312和GB18030两种,汉字采用2个字节表示;

3.GB18030字符集与国际标准UCS/Unicode字符集基本兼容;

4.GB2312采用双字节进行存储和传输汉字,图形符号;

5.GB18030采用双字节或四字节存储和传输汉字;

6.Unicode/UTF-8采用三个字节存储和传输汉字;

7.Unicode/UTF-16采用双字节可变长编码(常用字符使用双字节编码,不常用的4字节编码)

8.目前计算机中使用最广泛的西文字符集是ASCII字符集,编码是ASCII码

9.基本的ASCII字符集共有128个字符,包括96个可打印字符和32个控制字符,每个字符使用7个二进制位进行编码。

板级支持包BSP

1.BSP含有电路板的初始化程序;

2.BSP所有与特定电路板上硬件相关的功能都集成在板级支持包的库里;

3.BSP操作系统的上层代码通过板级支持包访问底层硬件;

4.包含硬件相关的设备驱动程序,这些驱动程序为操作系统或应用程序访问硬件提供支持,对系统硬件进行管理,并实现数据的输入输出操作。但是,除了与在引导和加载操作系统过程中所需的硬件环境相关的设备驱动程序之外,BSP包含的其他设备驱动程序通常不直接由BSP使用;

5.BSP主要完成内存加电自检、外设存在自检、内存地址映射、初始化外围设备、加载和启动操作系统;

BootLoader

Bootloader的stage1的基本步骤:

基本硬件初始化

为加载stage2准备RAM空间

拷贝stage2的执行代码到RAM空间中

设置栈区指针SP

跳转到stage2的C程序入口点

1.BootLoader任务之一是加载和启动操作系统;

2.开源的BootLoader:ViVI、PMON、GRUB、U_Boot(功能最强/全)、REDBoot;

3.嵌入式系统上电复位后首先运行BootLoader程序;

4.bootROM存储BootLoader程序、操作系统映像、应用程序代码和用户配置数据;

5.BootLoader执行过程:

(1)加电自检;

(2)外设存在自检;

(3)内存地址映射;

(4)初始化外围设备;

(5)内存寻址定位;

(6)加载并启动操作系统;

6.BootLoader程序提供的几种装载方式:

(1)从串口或以太网装载;

(2)从非易失性存储器(Flash)装载

设备驱动程序

1.基本特征:

(1)只能被高层软件调用而不能自行运行;

(2)对上层软件屏蔽硬件细节,对下层硬件直接进行操作;

CAN总线

1.CAN是控制器局域网;

2.CAN采用差分传输;

3.利用CAN可构成多主多从系统;

4.CAN总线的数据帧由7个不同的域组成,七种域的长度可选为0~8位;

5.CAN是控制器局域网,仅有CANL和CANH两根信号线,采用差分方式,远距离多机通信(1200m);

6.CAN协议采用CRC检验并可提供相应的错误处理功能,保证了数据通信的可靠性;

7.一般面向控制应用领域的ARM芯片内部已经嵌入了CAN总线控制器,外部仅需要连接CAN的收发器即可构建完整的CAN网络;

IIC

1.IIC的信号线:数据线SDA,时钟线SCL;

2.IIC即集成电路互连总线;

3.IIC传送数据时,每次传送的字节数目没有限制;

4.IIC是多主总线;

IIC采用的是一种串行半双工传输的总线标准,发起数据传输操作的IIC器件是主控器件;

SPI

1.将数据写到SPI发送缓冲区后,一个时钟信号SCK对应一位数据的发送和另一位的数据的接收

2.在主机中数据从移位寄存器中自左向右发出送到从机,同时从机中的数据自有想做发送到主机,经过8个时钟周期完成1字节的发送

3.SPI(全双工同步串行外设接口)允许嵌入式处理器与各种外围设备以串行方式进行通信、数据交换,一般使用4跳线:SCK(串行时钟线)、MISO(主入从出)、MOSI(主出从入)、SSEL(低电平有效的从机选择线),采用SPI可以构成“一主一从式”“一主多从式”“多主多从式”“互为主从式”系统。

UART

1.UART是通用异步收发器;

2.UART是通用串行数据总线;

3.UART常用于全双工串行异步通信;

4.在ARM嵌入式芯片中,UART的接收器和发送器中的FIFO寄存器的字节数相同,但不固定;

5.有的ARM嵌入式芯片中集成了多个UART;

6.UART收发信息可以采用FIFO模式,也可以采用普通模式;

7.UART有发送器,接收器,控制单元,波特率发生器构成;

8.UART总线的波特率可以调整;

9.UART发送的字符数据位由编程决定,5、6、7、8位;

10.使用UART进行通信时,要求通信双方波特率和传输格式必须一致;

11.(9-18)一般接收和发送缓冲器的FIFO字节数N是一样大小,长度可编程选择(字节数不固定);

USB

1.各版本中最大数据传输速率为5Gbps的USB版本是USB 3.0;

2.USB OTG的作用是可以摆脱主机,直接在具有OTG的USB总线上完成点对点通信;

3.USB总线(1.1和2.0)有4根信号线,采用半双工差分方式,用来传送信号并提供电源;

4.USB接口提供内置电源,主机的USB接口向从设备提供电源;Mini USB也提供电源;

5.USB总线接口支持设备的即插即用和热插拔功能;

6.USB 2.0采用半双工差分方式传送信息;

7.USB2.0速度:480Mb/s,USB3.0速度:640MB/s;

8.USB总线通信时采用主从方式,有一个主机,负责管理所有USB设备的连接与删除,发起与USB设备的通信;

存储器

1.CPU使用最频繁的少量的程序代码和数据用SRAM作为高速缓冲存储器(Cache)存放

DRAM常用于存放正在运行/处理的程序/数据的工作存储器

2.系统正在运行中的程序的大部分数据和代码存放在主存储器(内存)中

3.尚未启动运行的其余程序或数据则存放在容量大的外部存储器如磁盘中待命

4.FRAM:铁电随机存取存储器,既有只读存储器非易失性的特点,又具有随机存储器可快速随机读写的特点;

5.MRAM:磁性随机存取存储器,是一种非易失性存储器,拥有SRAM的高速存取能力,以及DRAM的高集成度;

6.嵌入式系统使用的存储器按照其存取特性分为RAM,ROM;

7.嵌入式系统使用的存储器按照其所处物理位置可分为片内寄存器,片外寄存器,外部存储器;

8.嵌入式系统使用的存储器按照存储信息的类型可分为程序存储器,数据存储器;

9.目前的两种主要的闪存技术:NOR Flash(以字节为单位随机存取);

NAND Flash(以页为单位随机存取);

10.半导体存储器芯片的存储容量取决于该芯片的地址总线条数和数据总线的位数;

11.易失性存储器:掉电后信息丢失,如:SRAM,DRAM

12.非易失性存储器:断电后仍能保存数据,如:EPROM,EEPROM,Flash ROM

13.存储器带宽与存储器总线的工作频率(周期)有关,也与数据线的位数(位宽,宽度)和每个总线周期的传输次数有关;

操作系统

单内核

1.单内核结构也称为宏内核

缺点:占用内存大;缺乏可扩展性;维护困难;任务执行时间的可预测性较低;

可靠性较低;排除故障和增加新功能需要重编译

优点:应用程序生成效率高,系统花在内核功能切换上的开销非常小;

对外来事件反应速度快;操作系统内核的运行效率高;

微内核

1.微内核操作系统是对单内核做了结构改进后推出的,在这种操作系统内核机构中,将任务管理器,调度器,中断管理和进程间通信模块编译成一个功能精简,空间紧凑的模块;

2.嵌入式操作系统按照内核结构可以分为单内核操作系统和微内核操作系统

3.微内核结构操作系统:Symbian(普通实时系统),VxWorks,QNX,uC/OS-II,iOS

4.单内核结构操作系统:Unix,嵌入式Linux,WinCE,Mac OS,Android OS,DOS

5.微内核操作系统内核小巧,传统操作系统内核中的许多部分都被移除内核,采用服务器方式实现;

6.微内核操作系统接口移植,所有进程请求使用统一接口,进程不区分内核模式和用户模式服务;

7.微内核操作系统各个功能模块之间松散耦合,只完成服务功能,系统管理功能交给一个或多个特权服务程序;

8.微内核功能扩充方便,但是各个功能之间的切换而引起的开销比较大;

9.iOS追溯源是一个类UNIX操作系统,前身是UNIX-BSD;

10.iOS的系统结构分为四个层次:核心操作系统,核心服务层,媒体层,可触摸层;

11.WinCE的优点:源代码数量庞大,API函数丰富;

12.WinCE是一种大型嵌入式系统;

13.Android OS是典型的宏内核操作系统;

14.RTAL(实时应用接口)是典型的嵌入式Linux操作系统之一;

15.开源嵌入式操作系统:uCLinux,RTLinux,uC/OS-II;

16.大型商务操作系统:VxWorks;

17.(9-26)既按开发版本的授权数量收取授权费,也按最终产品售出的实际数量收取每份运行软件的版权费的是VxWorks;

18.VxWorks是目前公认实时性最强,可靠性最高的嵌入式实时操作系统;

19.(9-32)VxWorks操作系统属于硬实时微内核嵌入式操作系统;

20.RTEMS是GPL开源的无版税嵌入式实时操作系统;

21.商业实时操作系统Nucleus通常以源码的形式发售;

Android

1.属于单内核操作系统;各个模块之间的耦合度很高;

2.采用堆层式软件架构,分为四层,从低层到高层分别是内核,系统运行库,应用程序框架和应用;

3.Android运行环境由Dalvik虚拟机和核心库组成,Android包含一个核心库的集合,提供了JAVA编 程语言核心库的大多数功能;

4.Android是一种以Linux为基础的半开放源代码操作系统;

5.如果使用不同的软件开发包,则使用的编程语言也不同;

6.谷歌公司不对基于Android操作系统的第三方软件进行严格控制;

Linux

1.Linux内核为用户进程提供系统调用;

2.Linux内核的主要作用:进程管理与调度,内存管理,文件管理,网络接口,进程间通信;

3.Linux内核应用程序通过GLIBC调用通用函数和内核的内部功能;

4.Linux的运行效率低于Unix;

5.Linux是自由软件家族中的一个软件;

6.Linux的通用文件系统模型—虚拟文件系统(VFS);

7.某个应用程序在Linux操作系统环境下运行时,它就成为一个用户进程;

8.Linux提供的GLIBC是可移植的标准C库函数实现,提供标准I/O和标准流的一系列接口;

9.Linux系统最初以Unix为原型,以实现POSIX标准为目标;

10.Linux软件平台构建步骤:

(1)首先移植启动引导程序;

(2)移植Linux内核;

(3)构建根文件系统;

11.Linux属于一种类Unix系统;

12.Linux与Unix的源代码完全不同,但函数和命令的功能,处理结果,函数名称和参数十分相同;

13.Unix是优秀的主流操作系统;

14.Linux内核进程调度模块负责控制进程对CPU资源的使用,所采取的调度策略是使得各个进程能够公平合理地访问CPU,并保证内核能够及时地执行硬件操作;

15.Linux内存管理模块的功能之一就是屏蔽各种硬件内存结构的差异并向上返回统一的访问接口;

16.Linux内核网络接口模块包含网络接口驱动程序;

17.Linux内核支持的通信机制主要包括信号,管道,消息队列,信号量,共享内存和套接字;

18.Linux内核的子系统组成:进程调度(SCHED),内存管理(MM),虚拟文件系统(VFS),网络接口(NET),进程间通信(IPC);

19.Linux为用户进程提供了一个虚拟接口(系统调用);

20.系统调用是Linux中用户进程与操作系统之间的重要接口;

21.OS服务组件是位于Linux操作系统内核之上的一层服务模块或实时程序集合;

22.启动嵌入式Linux时,通常Bootloader程序会提供几种不同的OS装载方式:从串口或以太网装载,从非易失性存储器(主要指flash存储器)装载;

23.对于嵌入式Linux而言,BootLoader主要完成的工作步骤:

(1)初始化处理器及外设的硬件资源配置;

(2)建立内存空间的映射关系,使能MMU,将系统的外存和内存地址变换激活;

(3)装载操作系统映像到内存;

(4)对Flash存储器编程;

(5)运行操作系统;

(6)传递系统启动参数;

(7)命令行解析和输入/输出控制;

QNX

1.QNX:分布式实时操作系统;

2.QNX符合POSIX基本标准和实时标准,使其应用可以方便的进行移植;

3.QNX具备一个很小的内核,即微内核的操作系统;

4.QNX内核提供四种服务:进程调度,进程间通信,底层网络通信和中断处理;

Tiny OS

1.Tiny OS是开放源代码操作系统,属于深度轻量级的操作系统;

2.Tiny OS专为无线传感网络设计,功耗较低,适合传感器这种受内存,功耗限制的设备;

3.Tiny OS的技术特点是轻线程,主动消息,事件驱动和组件化编程

uC/OS-II

1.处于运行态的任务因更高优先级的任务就绪而被剥夺CPU使用权后将转入就绪态;

2.用户必须在多任务调度启动以后再使能时钟节拍中断;

3.在中断返回之前,必须调用推出中断函数void OSIntExit(void);

4.互斥信号量可以解决优先级翻转问题;

5.一个任务或中断服务子程序可以通过事件控制块来向另外的任务发信号;

6.uC/OS-II的事件控制块可以用于对信号量的管理;

7.uC/OS-II每个任务拥有自用栈;

8.uC/OS-II不支持时间片轮转调度法,因此赋给每一个任务的优先级是不同的;

9.uC/OS-II允许中断嵌套,嵌套层数可达255;

10.任务是uC/OS-II操作系统的基本调度单位;

11.最低优先级的任务名称:空闲任务;优先级:63;

12.处于运行态的任务执行节拍延时函数OSTimeDly( )后,该任务将转入挂起态,一旦预定的延时时间到达,该任务立即转入就绪态;

13.创建任务:OsTaskCreate( );

14.创建任务前用函数OsInit( )初始化uC/OS-II;

然后创建4个空白块链表:任务控制块链表、事件控制块链表、标志块链表、内存控制块链表;

15.系统中任务之间通过消息队列来传递数据:

OSQPend()函数获取消息;

OSQPost()函数发送数据;

16.uC/OS-II是抢占式实时操作系统内核;

17.uC/OS-II是微内核结构嵌入式操作系统;

18.uC/OS-II只有一个内核,不含设备驱动程序和文件系统;

19.uC/OS-II具有良好的可裁剪性和可移植性;

20.uC/OS-II只能管理64个任务,保留8个任务给系统,用户编写的应用程序最多可以有56个任务;

21.uC/OS-II可以定义的最高优先级定为0,最低优先级取值为实际定义的最大任务数减1;

22.uC/OS-II任务按优先级抢占式调度方式进行;

23.uC/OS-II属于源码公开的实时嵌入式操作系统;

24.uC/OS-II基本不包含设备驱动程序,只是一个纯内核;

25.uC/OS-II驱动程序属于底层,需要系统开发商自行开发;

26.使用uC/OS-II的栈空间校验函数,可以确定每个任务到底需要多少栈空间;

27.uC/OS-II能够提供周期性时钟信号,用于实现任务的正确延时和超时确认,节拍率为10Hz~100Hz;

28.uC/OS-II只提供任务调度,任务间通信与同步,任务管理,时间管理,存储管理;

29.uC/OS-II嵌入式系统的四层软件结构:

应用软件层,应用程序接口层,内核层,设备驱动层;

30.移植uC/OS-II到一个嵌入式电路板上正常运行,必须满足以下要求:

(1)处理器的C编译器能够产生可重入代码

(2)用C语言就可以打开和关闭中断

(3)处理器支持中断,并且能产生定时中断

(4)处理器支持能够容纳一定量数据的硬件栈区

(5)处理器有将栈区指针和其他CPU寄存器读出和存储到栈区或内存中的指令

31.uC/OS-II保护任务之间的共享数据和提供任务之间的通信的方法:

(1)利用宏OS_ENTER_CRITICAL( )和OS_EXIT_CRITICAL( )来关闭中断和打开中断

(2)利用函数OSSchedLock()和OSSchedUnlock()对任务调度函数上锁和开锁

(3)利用信号量,互斥信号量,邮箱和消息队列进行任务间通信

32.main()函数在执行过程中,除用户函数和硬件初始化函数之外,需要执行三个主要的uC/OS-II函数:

OSInit( ),OSTaskCreate( ),OSStart( );

33.uC/OS-II系统中每个任务都处在以下五种状态之一:休眠态,就绪态,运行态,挂起态,被中断态

(1)休眠态:该任务驻留在内存中,但没有交给内核管理

(2)就绪态:该任务已准备好,可以运行,但由于该任务优先级比正在运行的任务低,暂不能运行

(3)运行态:任务得到了CPU的控制权正在运行中

(4)挂起态:

(5)被中断态:发生中断时执行响应的中断服务,原来正在运行的任务暂时停止,进入中断状态

34.就绪表登记任务就绪时取值为1,没有就绪取值为0;

被中断态的任务在中断返回后进入运行态;

处于运行态的任务因等待事件发生而进入等待态;

35.uC/OS-II的事件控制块有4种类型,需要使用4个不同函数来创建:

OSSemCreat( ):使用信号量之前用该函数创建该信号量,

若信号量对共享资源互斥访问,则信号量初始值为1;

若信号量表示某事件发生的次数,则信号量初始值为0;

OSMutexCreate( ),OSMboxCreate( ),

OSQCreate( ):创建消息队列函数;

36.uC/OS-II的就绪任务在就绪表中,OSRdyTbl[ ]是就绪表的位图映像矩阵,每一位代表了一个优先级的就绪状态,称为就绪位,该矩阵最多可有64位;

37.uC/OS-II操作系统的主要函数:

(1)OSTaskCreate( ):与任务创建相关

(2)OSIntExit( ):中断级的调度

(3)OSTickISR( ):时钟节拍中断服务子程序,与实践管理有关

(4)OS_Sched( ):与任务调度相关

(5)OSCtxSw( ):任务切换函数

38.OSSched( )函数是任务调度的前导函数,判断进行任务调度的三个条件是否满足。

(1)中断嵌套层数共享全程变量OSIntNesting=0,所有的ISR已经执行完毕;

(2)任务调度加锁层数共享全程变量OSLockNesting=0,调度没有被禁止;

(3)就绪表查找到的最高优先级任务的优先级比当前任务的优先级高。

39.uC/OS-II中调用中断退出函数OSIntExit( )标志着中断服务子程序的终结,OSIntExit( )将中断嵌套层数计数器的值减1;

40.函数void OSIntEnter(void)在关中断状态下对变量OSIntNesting加1,并在返回前开中断;

41.中断服务程序中调用OSSemPost()函数,并不会立即发生切换;

中断服务程序只能用OSSemAccept()请求信号量;

函数OSFlagAccept()在事件标志未被释放时并不会挂起任务,而是会立即返回;

消息邮箱可以接收一条消息;

VxWorks

1.收取授权费也收取版权费的嵌入式操作系统:VxWorks;

2.VxWorks操作系统属于硬实时微内核嵌入式操作系统;

3.VxWorks将I/O设备分为字符设备、块设备、网络设备和其他非标准设备;

VxWorks的7个基本I/O操作函数:

(1)创建文件create();

(2)打开文件open();

(3)读取文件read();

(4)写入文件write();

(5)关闭文件close();

(6)移除文件remove();

(7)其他控制命令ioctl();

4.移植VxWorks操作系统有四种操作类型:

宿主机移植,体系结构移植,目标板移植,升级以前Tornado集成开发环境版本的BSP到最新版本

WinCE

属于大型嵌入式操作系统;

引导加载程序

1.具有操作系统的嵌入式系统加电后最初执行的操作称为引导或自举,对应的程序称为引导程序,或引导加载程序,英文术语是BootLoader;

2.引导加载程序主要完成加电自检,外设存在自检,内存地址映射,初始化外围设备,内存寻址定位,加载并启动操作系统;

3.嵌入式正常工作是一般采用启动加载方式,由BootLoader从非易失性存储介质中引导和加载操作系统代码;

4.在调试或维护更新阶段采用下载方式,BootLoader通过通信端口从调试主机上下载操作系统映像;

DSP

1.专用于数字信号处理的微处理器;

2.对通用处理器的逻辑结构和指令系统进行了优化设计,非高性能通用处理器;

3.在指令系统中增加单指令多数据(SIMD)并行处理的一些特殊指令;

4.能够显著提高音频,视频等数字信号的数据处理效率;

大端,小端

1.大端模式;数据的高位保存在内存的低地址中,数据的低位保存在内存的高地址中

2.小端模式:数据的高位保存在内存的高地址中,数据的低位保存在内存的低地址中

3.0x1234在小端模式CPU内存中的存放方式为:

内存地址 存放内容

0x10000000 0x34

0x10000001 0x12

4.0x1234在大端模式CPU内存中的存放方式为:

内存地址 存放内容

0x10000000 0x12

0x10000001 0x34

仿真开发平台

1.指嵌入式系统开发过程中使用的 虚拟机管理软件仿真软件 或者 指令集模拟器

GPIO

1.GPIO作为输入接口时具有缓冲功能;

2.GPIO作为输出接口时具有锁存功能;

3.GPIO具有0态,1态,高阻态;

4.GPIO端口的多个并行I/O接口中,有的接口的功能是单一的,有的接口的功能是复用的;

5.GPIO端口的每个并行I/O接口都有控制寄存器,数据寄存器以及上拉寄存器;

6.GPIO端口属于芯片内部的低带宽组件;

GNU

1.在GDB调试环境下file命令:装入需要调试的可执行文件;

run命令:执行当前被调试的程序;

kill命令:终止当前被调试程序运行;

2.GNU是一种常用于开发基于Linux操作系统的嵌入式软件的工具套件;

3.GNU开发工具套件中的编译器和连接器—GCC;

4.GNU开发工具套件中的程序调试工具—GDB;

5.GNU开发工具套件包含:编译器,连接器,调试器等工具;

6.若要对某应用程序进行调试(产生用于调试的符号表),在编译时,要在编译命令中加入参数-g;

GPS和GPRS

1.GPS:利用定位卫星,在全球范围内实时进行定位,导航的系统;

2.GPRS:通用分组无线服务技术是GSM移动电话使用的一种移动数据业务;

HAL

1.硬件抽象层向操作系统内核提供了访问底层硬件的函数接口;

2.常见的硬件抽象层规范大多是由操作系统厂家提出的;

3.Nios II软核处理器的硬件抽象层(HAL)系统库属于单线程的类UNIX运行库

4.HAL系统库提供以下服务:

(1)结合Newlib ANSI C标准库,向用户提供熟知的标准库函数;

(2)提供设备驱动,使用户可以访问系统中的所有设备;

(3)为用户提供了与HAL服务相统一的标准接口(HAL API);

(4)系统初始化,在main()函数之前完成软核处理器Nios和运行库环境的初始任务;

(5)设备初始化,在main()函数之前完成每个设备的实例化和初始化;

5.硬件抽象层(HAL):嵌入式软件层中直接访问底层硬件的例程集合

6.HAL位于硬件电路板和操作系统内核之间,是嵌入式硬件电路板的最基本软件

7.HAL的函数是移植操作系统的基础

8.HAL隐藏了不同硬件平台的差异性,从而改善了操作系统的可移植性

9.HAL的作用是向操作系统内核提供了访问底层硬件的函数接口;

10.属于嵌入式操作系统的底层软件;

HDMI

1.HDMI是高清晰度多媒体接口;

2.HDMI是一种数字化视频/音频接口技术;

3.HDMI是适合影像传输的专用型数字化接口;

4.HDMI可同时传送音频和影像信号;

5.HDMI最高数据传输速度为10.2Gb/s;

6.目前多个ARM芯片内置了HDMI控制器接口;

7.无需经行A/D或D/A转换;

哈佛结构与冯诺依曼结构

1.哈佛结构是一种将程序指令储存和数据储存分开的存储器结构。

2.冯.诺伊曼结构是一种将程序指令存储器和数据存储器合并在一起的电脑设计概念结构。

I P地址

1.IP地址分为:基本类(A类,B类,C类),组播地址(D类),备用地址(E类)

类别 IP地址范围 最大主机数

A类 1.0.0.1-127.255.255.254 16777214

B类 128.0.0.0-191.255.255.255 65534

C类 192.0.0.0-223.255.255.255 254

第1个字节,第2个字节,第3个字节为网络地址(网络地址的最高位必须是“0”)

第4个字节为主机地址;

2.Internet有126个A类地址;

3.每个终端设备的IP地址并不是始终固定不变的,而是可以修改的;

4.IPv4协议规定IP地址用32位二进制表示;

IPv4协议规定IP地址用128位二进制表示,16位字节;

5.为方便使用IP地址也可以使用“点分十进制”表示。

集成电路

1.单块集成电路的集成度平均每18~24个月翻一番;

2.世界上集成电路批量生产的主流技术已经达到12~14英寸晶圆,45nm或32nm的工艺水平;

3.芯片的集成度越高,同时电路的工作频率也越来越高,功耗越来越高;

JTAG

1.开发嵌入式系统时,需要构建一个宿主机-目标机的开发环境。目标机的初始启动程序调试,硬件接口的调试,采用JTAG;

2.JTAG标准是片上调试技术的一种国际标准;

3.JTAG标准规定TAP接口具有5条信号线;

(1)TCK——时钟信号线;

(2)TMS——模式选择信号线;

(3)TDI——数据输入信号线;

(4)TDO——数据输出信号线;

(5)TRST——复位信号线;

4.JTAG技术是一种嵌入式测试技术,大多数嵌入式CPU,DSP,FPGA器件都支持JTAG标准;

5.多个器件可以通过JTAG接口串联在一起进行测试;

6.通过芯片的JTAG接口可以实现在线编程功能;

7.JTAG是对芯片或印制电路板进行片上调试最常用的一种技术;

8.人们通常用JTAG来表示满足IEEE 1149规范的便捷扫描测试方法和TAP接口(也称为JTAG接口);

9.JTAG标准允许多个芯片的边界扫描寄存器BSR通过JTAG接口串联在一起,实现对多个器件测试;

10.通过芯片的JTAG接口可以实现在线编程功能。

路由器

1.是一台高性能的嵌入式计算机系统;

2.是遵循IP协议把异构网络互相连接起来的关键设备;

3.工作在网络层;

4.功能:(1)网络互连,实现不同网络互相通信

(2)数据处理,提供包括分组过滤,分组转发,优先级,复用,加密,压缩和防火墙等功能

(3)网络管理,提供包括配置管理,性能管理,容错管理,流量控制等功能

5.集线器:信号放大的设备

6.协议转换器:传输层及以上各层的协议转换的设备

嵌入式系统

1.通常嵌入式系统的软件配备没有通用系统多;

2.影响嵌入式CPU性能的有:

(1)定点运算器和浮点运算器(VFT)数量;

(2)有无协处理器;

(3)内部流水线级数和条数;

(4)有无指令预取功能和数据预取功能;

3.嵌入式分为两部分:硬件和软件;

4.硬件主体是中央处理器(CPU)和存储器,通过I/O接口和I/O设备与外部联系,借助总线相互连接;

5.中央处理器(CPU)由运算器,控制器,寄存器,高速缓冲存储器(Cache)等组成;

6.嵌入式系统的CPU有:ARM,DSP,FPGA;

7.嵌入式系统使用的存储器以半导体存储器为主;

8.嵌入式系统硬件的逻辑组成:中央处理器和存储器,用户界面;

9.嵌入式最小硬件系统包括嵌入式处理器,时钟电路,电源电路,复位电路,存储器,调试测试接口;

10.嵌入式系统常用的电源模块有:AC-DC模块,DC-DC模块,LDO模块;

11.设计电源电路时考虑的因素:

(1)输出的电流、电压;

(2)输入的电流、电压;

(3)安全因素;

(4)电磁兼容;

(5)体积限制;

(6)功耗限制;

(7)成本限制;

12.基于ARM处理器内核的嵌入式处理器芯片都有调试接口;

13.嵌入式系统中CPU的特点:(1)支持实时处理,(2)低功耗,(3)结构可扩展,(4)集成了测试电路;

14.嵌入式应用程序经过交叉工具链生成映像文件之后需要下载到目标机进行调试,调试完毕后映像文件必须存储在目标机的非易失性存储器中,即要求生成软件的固化版本,烧写到目标机的ROM中。将程序代码烧写到ROM中去的专用设备和工具程序俗称“编程器”。

15.嵌入式系统的特点

(1)专用性,与具体应用紧密结合

(2)隐蔽性,总是非计算机设备中的一个部分,隐藏在内部

(3)软硬件资源受限,不易扩展,小型化,轻量化,低功耗,低成本

(4)高可靠性

(5)实时性

(6)软件固化,软件大多固化在只读存储器中

16.嵌入式系统的开发过程按顺序:需求分析与规格说明,系统设计,构件设计,系统集成与测试;

17.多数嵌入式系统具有时间约束性,因而至少是软实时系统;

18.通用计算机系统也是典型的实时系统;

19.嵌入式系统结构:

(1)带中断的轮询结构:也被称为中断驱动结构或前后台结构,前台由若干中断服务程序组成

一般情况下,中断服务程序只进行紧急事务的处理,非紧急的处理操作由后台循环程序处理,与简单的轮询结构相比,带中断的轮询结构提高了系统对紧急事件的响应速度,可以并发处理不同的异步事件;

20.嵌入式系统中,对系统进行测试的目的是发现系统的错误或故障,调试的目的是发现系统错误后,分析原因、检查原因、定位错误或故障位置;

RS-232与RS-485

1.嵌入式处理器至少有一个UART接口,采用标准的电平转换电路可构成RS-232和RS-485接口;

2.RS-232无法消除共模干扰,且通信距离只有15m左右;接口标准采用负逻辑,逻辑0用正电平表示;

3.RS-485采用差分信号传输方式,因此具有很强的抗共模干扰能力,传输距离可达1200m,通常用于主从式多机通信系统,主机可采用轮询方式与各从机建立通信连接,由主机逐一向从机寻址,当从机地址与主机发送的地址一致时,才建立通信链接,进行有效数据通信;

RISC

1.ARM采用RISC精简指令集,采用冯诺依曼或哈佛结构;

2.RISC:精简指令集计算机;CISC:复杂指令集计算机;

注:RISC设计者把主要精力放在那些经常使用的指令上,对不常用的功能,常通过组合指令来完成,在RISC机器上实现特殊功能时,效率较低。但可利用流水技术和超标量技术加以改进和弥补。

CISC计算机的指令系统比较丰富,有专用指令来完成特定的功能。因此处理特殊任务效率较高。

3.嵌入式处理器的体系结构按指令集可分为两大类:复杂指令集结构(CISC),精简指令集(RISC)

按存储机制分为:冯诺依曼结构(数据和程序统一),哈佛结构(指令和数据分开)

RVDS开发工具

1.RVDS开发工具套件中,主要包括工程管理器(IDE),编译连接器(RVCT),调试器(RVD)和指令集仿真器(RVISS)等。

2.RVDS调试器支持硬件在线调试和软件仿真调试,通过它可以进行单步,断点调试,并观察程序运行中的变量,寄存器,主存储器单元等的内容,使设计者能够根据此判断程序运行的状况是否正常。

RTC

1.实时时钟模块RTC采用单独的供电引脚和单独的时钟源

2.RTC控制寄存器RTCCON共4位,控制时钟计数复位,BCD计数,始终选择,是否允许RTC读写

3.RTC内部的数据寄存器都是8位寄存器,存放相应的BCD码值

实时操作系统(RTOS)

1.中断延迟时间:从接受到可屏蔽中断请求信号到操作系统做出响应并转入中断服务程序所需要的的最长时间;

2.中断延迟时间包括:最长关中断时间(系统因执行临界区代码等原因不允许响应中断请求的时间);

从硬件开始响应中断到开始执行中断服务程序第一条指令之间的时间;

3.实时操作系统完成每次任务所需时间的偏差称为:抖动;

4.评价实时系统的实时性最重要的指标:响应时间;

5.评判实时系统的关键是处理事件的时间的可预测性和确定性;

6.按照响应时间将实时系统分为三类:

(1)强实时系统:VxWorks,pSOS,uC/OS-II、QNX、Nucleus、RTEMS

(2)普通实时系统:

(3)弱实时系统:

软实时、硬实时和准实时的概念与时限的长短无关,而与超过时限的容忍程度有关;

7.实时操作系统的七个特征

(1)具有异步I/O和中断处理能力

(2)任务切换时间和中断延迟时间确定

(3)优先级中断和调度

(4)抢占式调度

(5)内存锁定

(6)连续文件

(7)同步

8.实时操作系统(RTOS)是一种专门服务于实时系统应用请求的操作系统。不以在给定时间完成更多的 任务为目标,而是以响应外部事件尽可能快,且响应时间具有确定性为目标的操作系统;

9.(9-25)实时操作系统性能指标:

响应时间,吞吐量,生存时间

响应时间:中断延迟时间和任务切换时间;(任务抢占时间属于任务切换时间)

10.实时系统的属性:

(1)可靠性:

(2)可预测性:能够对外部事件的响应时间和实时任务的执行事件进行判断,确定被事件触发的实时任务能否在规定的时间内完成;

(3)时间约束性:

  1. 实时系统的任务时限的两种类型:截止时间,任务执行预设时间;

  2. RTOS响应中断请求并且完成相应中断服务子程序(ISR)的时间非常快,这个时间必须具有某种程度的一致性;精细衡量这个时间一致性变化的术语是抖动;

  3. 响应时间具体指标有:中断延迟时间和任务切换时间;

15.(9-27)硬实时系统:一旦任务执行时间超过截止时间系统的总损益就为负;否则为软实时系统;

16.(9-27)硬实时系统超过时限将导致严重的负效益后果;软系统则不会;

  1. 实时系统对外界的响应是否正确不仅取决于功能正确性,而且取决于时间处理的时间正确性;

S3C2410

1.S3C2410是三星公司给予ARM920T核的两款嵌入式微处理器,属于中高档32位嵌入式微处理器;

2.S3C2410采用哈佛结构;

3.S3C2410内部具有分离的16KB大小的指令Cache和16KB大小的数据Cache;

4.S3C2410使用AMBA总线,高速组件采用AHB总线,低速外设接口采用APB总线;

5.S3C2410芯片内部集成了许多硬件组件,包括了内部SRAM,外部存储器控制器,ADC等;

6.S3C2410嵌入式微处理器芯片的电源管理模块的四种工作模式

(1)正常模式

(2)慢速模式:不使用PLL时钟(MPLL)关闭不使用,由外部时钟直接提供给其他组件使用

(3)休眠模式:仅断开ARM内核时钟FCLK,让CPU处于休眠状态,但仍为外围组件提供时钟

(4)掉电模式:断开内部电源,除非唤醒逻辑有效,否则内核不产生功耗

7.S3C2410存储器控制组件包括存储器控制器,总线控制器,外部主控器,NAND Flash控制器等;

8.S3C2410有两个中断挂起寄存器:源中断挂起寄存器SRCPND和中断挂起寄存器INTPND;

9.当多个中断源请求服务时,SRCPND响应的位被写1,通过优先级仲裁当前最高优先权的中断源对应的INYPND位写入1;

10.中断模式寄存器的功能:决定中断源的中断属于普通终端IRQ还是快速中断;

11.中断屏蔽寄存器的功能:屏蔽中断源的中断请求;

12.子源中断挂起寄存器的功能:记录子中断源请求的挂起状态;

13.S3C2410存储器控制器提供访问外部存储器所需的存储器控制信号,支持大/小端模式,地址空间共有1GB(8个BANK,每个BANK大小为128MB);

14.以ARM为核心的嵌入式系统其I/O与存储器采用统一编址方式;

15.BANK0只能是16位和32位总线宽度的访问,其他所有BANK可访问8位,16位和32位。

16.S3C2410的GPIO端口有GPA/GPB/GPC/GPD/GPE/GPF/GPG/GPH多个并行I/O接口;

17.S3C2410有三个UART接口UART0/UART1/UART2,其对应的线路控制寄存器为ULCON0,ULCON1,ULCON2,用于确定传输帧的格式;

18.UART的波特率由除数寄存器存储器决定,也取决于外部时钟,还可以是UEXTCLK,由相应控制寄存器决定;

19.通过对UART的控制寄存器进行编程可确定每个UART的相关终端是否允许;

20.开发以S3C2410为核心的目标机的Linux应用程序,通常使用arm-linux-gcc交叉编译器来编译应用程序;若要对一个应用程序进行调试排错,应该在编译命令中加g参数对它进行编译。

21.引导加载程序首先完成异常向量表的设置,并完成关中断和关看门狗部件,完成堆栈指针的设置;

22.S3C2410芯片中专用于连接LCD显示屏的GPC端口和GPD端口

SoC(片上系统)

1.SoC芯片分为通用SoC(又分为单核SoC,多核SoC)和专用SoC(又分为定制嵌入式处理芯片,可编程嵌入式处理芯片)。

2.单核SoC:SoC芯片中只有一个CPU或DSP;

多核SoC:SoC芯片中有多个CPU或DSP。

3.为提高SoC的设计效率,减少重复开发,SoC芯片中的CPU绝大多数是以IP核的方式集成在芯片中的,目前32位嵌入式处理器主要采用的是由英国一家专门从事RISC处理器内核设计公司设计的ARM内核。(IP核:具有一定功能的电路模块,是个模板)

数字图像,数字音频

1.获取数字图像的过程:扫描—分色—取样—量化;

2.数字音频未压缩前,比特率 = 波形声音的码率 = 取样频率×量化位数×声道数;

压缩编码后的码率 = 压缩编码前的码率 / 压缩倍数;

表征数字音频每秒钟数据量的参数称为波形声音的码率;

3.高清电视的图像分辨率为:1920×1080,宽高比为16:9;

4.BMP:每个文件存放一幅图像,可以使用行程长度编码进行无损压缩也可以不压缩;

5.JPEG:静止图像数据压缩编码的国际标准,适合处理连续色调的彩色或灰度图像,互联网和数码相 机广泛使用;

6.GIF:颜色数目较少,文件特别小,适合互联网传输;

7.GIF图像文件格式颜色数目仅256种;

8.数字音频信息数字化过程中,处理顺序是:取样–量化–编码

9.数字音频的主要参数:取样频率,量化位数,声道数目,使用的压缩编码及比特率;

数码相机

1.数码相机由前端和后端组成,前端负责数字图像获取,后端负责数字图像处理;

2.后端通常是以嵌入式DSP作为核心的SoC芯片,DSP用于完成数字图像处理;

3.负责进行数码相机操作控制的是一个8位的MCU;

4.高端数码相机配置有实时操作系统和图像处理软件;

5.数码相机中用于存储相片的大多是闪存卡,Flash闪存卡(NAND Flash);

无线局域网(WLAN)

1.主要通信协议IEEE 802.11(俗称Wi-Fi);

IEEE 802.11n使用2.4GHz频段和5GHz频段,传输速度300Mbps,最高可达600Mbps;

传输距离大约在10m之内;

2.“热点”:无线接入点;实际是一个无线交换机或无线路由器;

3.无线局域网简称WLAN,最早的802.11b采用跳频扩频技术,最高可达11Mbps;

以太网

以太网数据帧内容:前导码(7字节),帧起始定界符(1字节),目的MAC地址(6字节),类型/长度(2字节),数据(46~1500字节),帧校验序列(4字节)。

分类

1.嵌入式处理器内核分类,按照字长分为:8位,16位,32位,64位

按照存储结构分为:冯诺依曼结构,哈佛结构

按照体系结构分为:CISC和RISC

2.按照IC设计文件的类型,IP核通常分为软核,固核,硬核

3.按照软硬件技术复杂程度进行分类,嵌入式系统分为:高端系统,中端系统,低端系统;

低端系统:硬件核心–4位/8位单片机

不使用操作系统,由监控程序对系统进行控制

在工控领域和白色家电领域占主导地位

高端系统:采用32/64位处理器,支持网络连接;

使用的操作系统功能齐全,软件扩展性好;

有良好的用户界面;

典型应用有智能手机,路由器等;

配置板级支持包、设备驱动程序、中间层、实时操作系统、嵌入式应用软件;

4.集成电路根据集成度的高低可以分为:小规模,中规模,大规模,超大规模,极大规模,嵌入式处理器芯片属于超大规模或极大规模集成电路

5.嵌入式系统使用的存储器按照其存取特性分为RAM,ROM

嵌入式系统使用的存储器按照其所处物理位置可分为片内寄存器,片外寄存器,外部存储器

嵌入式系统使用的存储器按照存储信息的类型可分为程序存储器,数据存储器

6.嵌入式操作系统按照内核结构可以分为单内核操作系统和微内核操作系统

7.SoC芯片分为通用SoC(又分为单核SoC,多核SoC)和专用SoC(又分为定制嵌入式处理芯片,可编程嵌入式处理芯片)

8.嵌入式处理器的体系结构按指令集可分为两大类:复杂指令集结构(CISC),精简指令集(RISC)

按存储机制分为:冯诺依曼结构(数据和程序统一),哈佛结构(指令和数据分开)

9.随机存取存储器包括静态(SRAM)和动态(DRAM)两种形式,均是易失性存储器

计算题:

(1024×1024=1M,1GB=1024M)

1.一次拍摄16位色1024×1024的彩色相片80张,数据压缩比平均是4

图像数据量=图像水平分辨率×图像垂直分辨率×像素深度/8

一张照片大小=1024×1024×16/8=2M

所需存储器容量=2M×80/4=40M

2.一本小说大小128KB,包含多少汉字?

一个汉字两个字节,128×1024/2=65536,所以大约6万字

3.一种存储器的总线工作频率为333MHz,数据线宽度为32位,每个存储器总线周期传输1次数据,则该存储器的带宽为(1332MB/s)。

带宽=总线频率×数据宽度/8×传输次数/总线周期;

某芯片内部具有20条地址线和16条数据线,该芯片的存储容量为(2MB)。

容量为:V=220×16=16Mb=2MB

汇编指令

1.如果相等,则进行带进位的加法:ADCEQ R1 , R2 , R3

ADD:加操作

ADC:带进位加操作

AND:逻辑与操作

NE:不相等判断

EQ:相等判断

SBC:带借位减法指令

2.ARM指令中寄存器间接寻址:以寄存器中的值作为操作数地址,而操作数本身存放在存储器中

用于间接寻址的寄存器必须用[ ]括起来;例:LDRB R1 , [R2]

3.DCD:ARM汇编器的数据定义伪指令,用于分配一片连续的字存储单元并用指定的数据初始化。

例:DCD 0X12:在内存区域分配一个32位字的内存空间并初始化为0x00000012

4.DCB:ARM汇编器的数据定义伪指令,用于分配一片连续的字节存储单元并用指定的数据初始化。

例:DCB 0x56:在内存区域分配一个字节的内存空间并初始化为0x56

5.CODE16:伪指令通知编译器,其后的指令序列为16位的Thumb指令

6.CODE32:伪指令通知编译器,其后的指令序列为32位的ARM指令

7.EQU:等于伪指令,用于为程序中的常量,标号等定义一个等效的字符名称

例:Test EQU 50定义标号Test的值为50,最大数为32位

8.IMPORT伪指令用于通知编译器要使用的标号在其他源文件中定义,但要在当前源文件中引用,而且无论当前源文件是否引用该标号,该标号均会被加入到当前源文件的符号表中

9.EXPORT:伪指令用于在程序中声明一个全局的标号,该标号可在其他的文件中引用,可用GLOBAL代替

10.R1=0x12345678,R2=0x80000101,执行指令AND R0,R1,R2后

寄存器R0=0,R2=0x80000101 (按位相与)

11.R2=1000,R3=200,执行指令MOV R2,R3,LSL#2后

R2=800,R3=200

(将寄存器R3的值左移2位之后传送到R2;R3值不变)

12.HI:无符号数大于;

CC:无符号数小于;

GT:带符号数大于;

LE:带符号数小于或等于

13.SUBVS:溢出时相减

SUBEQ:相等时相减

SUBLS:无符号数小于或等于时相减

SUBNE:不相等时相减

14.AND R1, R, R3:寄存器寻址

LDRB R0, [R1]:寄存器间接寻址

MOV R1, #0X0B:立即寻址

SWI 0x01

15.DCD:用于分配一片连续的字存储单元并用指定的数据初始化

CODE16:伪指令通知编译器,其后的指令序列为16的Thumb指令

EQU:伪指令用于程序中的常量,标号等定义一个等效的字符名称

IMPORT:伪指令用于通知编译器要是用的标号在其他的源文件中定义,但要在当前源文件中引用,而且无论当前源文件是否引用该标号,该标号均会被加入到当前源文件的符号表中

16.在ARM汇编语言中,子程序的调用一般是通过BL指令来实现的。

B:(无)条件转移

BL:带链接转移

BX:带状态切换的转移

BLX:带链接和切换的转移

17.R0=8000,R1=8800,执行MOV R0, R1, LSR#2,R0=2200, R1=8800。

表示:将R1中的内容右移两位后送到R0中,左端用0来填充

18.LDRB R2, [R1]:将R1指示区域中的一个字节数据读入R2

LDR:无条件读内存32位数据的指令助词符

19.STRH:将16位数据无条件写入指定I/O端口的指令助词符

STR R2, [R0+4]!:将R2中的一个字写入由R0+4指示的内存区域中,并将地址自动更新

STRH R0,[R1],#2:将R0的半字数据写入R1为地址的存储器中,并将新地址R1+2写入到R1中

MOV R2,[R0]:寄存器R0的值传送给寄存器R2

20.LDMIA R1!,{R2,R3}:R2=R1,R3=R1+4;

21.HI:无符号数大于;

CS:无符号数大于等于;

GT:带符号数大于;

LT:带符号数小于

22.LSL:逻辑左移,LSR:逻辑右移;ASR:算数右移

23.LDR:存储器到寄存器的数据传送指令,#是立即数符号

LDR R2, [R5, #2]!,执行后,R5中的值为R5=R5+2

24.将ARM处理器R0中的一个字节的数据,存入R1+4指示的内存区域,且地址自动更新,

指令:STRB R0, [R1, #4]!

字节数据存储指令:STRB

25.DDR:双倍数据速率;

DDR2:使原来DDR可预读取2位变成可预读4位、,把DDR的数据传输速率又提高两倍

1.(9-10)不属于转移(分支)类指令的是:

A.BLX R0 B. BCC Lable C. BEQ R1 D. BIC R1,R0,#1000

分支指令:B转移指令

BL带返回的转移指令

BLX带返回且带状态切换的转移指令

BCC条件跳转指令

BEQ跳转指令

BX带状态切换的转移指令

BIC位清除指令

2.(9-13)已知R1=0x20000000,R0=0x55667788,在大端模式下执行ARM指令STR R0,[R1]之后,0x20000003中的值为(0x88)

大端模式:高字节存储在低地址中,低字节存储在高地址中;

STR:寄存器到存储器的数据传送指令;

题中指令为寄存器间接寻址,将R0的值传到以R1值为地址的存储器中;

3.(9-14)已知R3=0x80001000,R4=0x00A00010,执行ARM指令MOV R3,R4,LSL#8后,R3的值为(0xA0001000)

将R4中的内容左移8位送到R3中

4.(9-15)ARM指令LDR R0,[R1,#4]!执行后,以下说法正确的是()

A.R0中的值不变 B. R1中的值不变 C. 内存中的值不变 D. R0和R1中的值均不改变

题中为基址加变址寻址,“!”表示指令在完成数据传送之后应该更新基址寄存器

因此R0,R1中的值都会改变,但内存中的值不变

5.如果R0=0x80000000,R1=4,R2=0x31322375,而指令STR R2,[R0,R1]!执行后,0x80000004中的数据为0x31,0x80000005中的数据为0x32,0x80000006中的数据0x23,0x80000007中的数据0x75,则这种存储器格式为大端模式,R0=0x80000004;

6.ARM指令中,两个无符号数在寄存器R5和R6中,若R5<R6,则将R5与R6进行逻辑与操作,结果放R7中,并要求更新程序状态寄存器的状态位。两条指令:CMP R5, R6和ANDCCS R7, R5, R6