嵌入式资料

更新时间:2023-09-09 08:01:01 阅读量: 教育文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

第一章:

嵌入式系统的概念 狭义:人们一般将埋藏在宿主设备中的专用的、使用者不可见的微处理器系统称为嵌入式系统。

广义:计算机可以作为某种技术过程的核心处理环节 嵌入式系统的特点:

[1]嵌入式系统通常是面向特定任务的,而不同于一般通用PC计算平台,是“专用”的计算机系统

⑵ 嵌入式系统运行环境差异很大

⑶ 嵌入式系统比通用PC系统资源少得多

⑷ 嵌入式系统“嵌入”到对象的体系中,对对象、环境和嵌入式系统自身具有严格的要求,一般的嵌入式系统具有低功耗、体积小、集成度高、成本低等特点

⑸ 完整的嵌入式系统的系统测试和可靠性评估体系,保证嵌入式系统高效、可靠、稳定工作

⑹ 具有较长的生命周期

⑺ 嵌入式系统的目标代码通常是固化在非易失性存储器(ROM,EPROM,EEPROM,FLASH)芯片中

⑻ 嵌入式系统使用的操作系统一般是实时操作系统(RTOS),系统有实时约束 ⑼ 嵌入式系统需要专用开发工具和方法进行设计 ⑽ 嵌入式微处理器通常包含专用调试电路

⑾ 嵌入式系统是技术密集、资金密集、高度分散、不断创新的知识集成系统 嵌入式系统的应用:

工业:工控设备、智能仪表、汽车电子 军事国防:军事电子

网络:网络设备、无线传感网络

消费电子:信息家电、只智能玩具、通信设备、移动存贮 嵌入式系统的软件层次结构: 驱动层程序

实时操作系统(RTOS)

操作系统的应用程序接口(API)

应用程序

嵌入式处理器: 嵌入式微处理器(就是和通用计算机的微处理器对应的CPU。目前的嵌入式处理器主要包括:Am186/88、386EX、PowerPC、Motorola 68000、ARM、MIPS系列等)

嵌入式微控制器(嵌入式微控制器又称单片机,顾名思义,就是将整个计算机系统集成到一

块芯片中,常见的有8051。) 嵌入式DSP

典型的嵌入式处理器:

MIPS处理器;PowerPC处理器;Sparc处理器;ARM处理器。 根据外围设备的功能可分为以下5类

存储器类型;通信接口;输入输出设备;设备扩展接口;电源及辅助设备。 嵌入式操作系统:就是支持嵌入式系统工作的操作系统。它在知识体系和技术本质上与通用操作系统没有太大的区别,一般用于比较复杂的嵌入式系统软件开发中。嵌入式操作系统具有实时的特点,是嵌入式系统的灵魂,它的出现大大提高了嵌入式系统开发的效率,减少了系统开发的总工作量,而且提高了嵌入式应用软件的可移植性。

嵌入式操作系统的管理功能:多任务管理;存储管理;周边资源管理;中断管理。 嵌入式操作系统但大体上可分为两种——商用型和免费型; 商用型的操作系统主要有VxWorks、Windows CE 、Psos、Palm OS、OS-9、LynxOS、QNX、LYNX等;免费型的操作系统主要有Linux和μC/OS-II。

典型的嵌入式操作系统介绍:VxWorks嵌入式实时操作系统 、WinCE操作系统 、Linux操作系统、μC/OS-II 嵌入式操作系统内核 (μC/OS-II是一个可裁减的、源码开放的、结构小巧、可剥夺型的实时多任务内核,主要面向中小型嵌入式系统,具有执行效率高、占用空间小、可移植性强、实时性能优良、可扩展性强等特点。)

第二章:

ARM体系结构:

ARM处理器为RISC芯片,其简单的结构使ARM内核非常小,这使得器件的功耗也非常低。它具有经典RISC的特点: 大的、统一的寄存器文件

装载/保存结构,数据处理 操作只针对寄存器的内容,而不直接对存储器进行操作 简单的寻址模式

统一和固定长度的指令域,简化了指令的译码 ARM体系结构的特点:

每条数据处理指令都对算术逻辑单元和移位器控制,以实现ALU(Arithmetic logic unit)和移位寄存器(除具寄存器的功能外,所存储的数码在时钟脉冲的作用下还可以移位)的最大利用; 地址自动增加和减少寻址模式,优化程序循环 多寄存器装载和存储指令实现最大数据吞吐量 所有指令的条件执行实现最快速的代码执行

ARM7TDMI处理器:是ARM通用32位微处理器家族的成员之一。它具有优异的性能,但功耗却很低,使用门的数量也很少。它属于精简指令集计算机(RISC),比复杂指令集计算机(CISC)要简单得多。这样的简化实现了:高的指令吞吐量;出色的实时中断响应;小的、高性价比的处理器宏单元。ARM7TDMI处理器使用流水线来增加处理器指令流的速度,ARM7TDMI的流水线分3级,分别为:取指-译码-执行

ARM体系结构支持7种处理器模式:用户模式、快中断模式、中断模式、管理模式、中止模式、未定义模式和系统模式。 计算偏移量程序代码:

SUB R1,PC,#4 ;R1=(下面STR指令的地址) STR PC,[R0] ;保存(STR指令地址+偏移量) LDR R0,[R0] ;然后重装 SUB R0,R0,R1 ;计算偏移量

R14寄存器与子程序调用:

操作流程:1、程序A执行过程中调用程序B;2、程序跳转至标号Lable,执行程序B。同时硬件将“BL Lable”指令的下一条指令所在地址存入R14;3、程序B执行最后,将R14寄存器的内容放入PC,返回程序A。 在处理中止的原因之后,不管处于哪种处理器操作状态,处理程序都会执行下面的指令恢复PC和CPSR并重试被中止的指令:SUBS PC , R14_abt , #4 在修复产生中止的原因后,不管处于哪种处理器操作状态,处理程序都必须执行下面的返回指令 :SUBS PC , R14_abt , #8 使用软件中断(SWI)指令可以进入管理模式,通常用于请求一个特定的管理函数。SWI处理程序通过执行下面的指令返回:MOVS PC , R14_svc 中断处理代码的开始部分和退出部分:

SUB LR,LR , #4 ;计算返回地址

STMFD SP!,{R0-R3, LR} ;保存使用到的寄存器 LDMFD SP!,{R0-R3, PC}^ ;中断返回

第三章:

ARM指令集: 立即数方式

例: MOV R1, #4 寄存器方式(Rm) 操作数为寄存器的数值 例: SUB R1, R1,R2

LDR R0, [R1], -R2;R0←[R1], R1=R1-R2 寄存器移位方式

例: MOV R1, R2, LSR #4 寻址方式:

寄存器寻址;2.立即寻址;3.寄存器移位寻址;4.寄存器间接寻址;5.基址寻址;6.多寄存器寻址;7.堆栈寻址;8.块拷贝寻址;9.相对寻址。 MOV指令举例如下: MOV R11,#0xF000000B ;R1= 0xF000000B MOV R0,R1 ;R0=R1 MOVS R3,R1,LSL #2 ;R3=R1<<2,并影响标志位 MOV PC,LR ;PC=LR,子程序返回 MVN指令举例如下: MVN R1,#0xFF ;R1=0xFFFFFF00 MVN R1,R2 ;将R2按位取反,结果存到R1 ADD应用示例:

ADDS R1,R1,#1020 ;R1=R1+1020,并影响标志位 ADD R1,R1,R2,LSL #2 ;R1=R1+R2<<2 RSB应用示例:

RSB R3,R1,#0xFF00 ;R3=0xFF00-R1

RSBS R1,R2,R2,LSL #2 ;R1=(R2<<2)-R2=R2×3 影响标志位

ADC应用示例(使用ADC实现64位加法,结果存于R1(高32位)、R0中): ADDS R0,R0,R2 ;R0等于低32位相加,并影响标志位 ADC R1,R1,R3 ;R1等于高32位相加,并加上低位进位

SBC应用示例(使用SBC实现64位减法,结果存于R1、R0中): SUBS R0,R0,R2 ; 低32位相减,并影响标志位 SBC R1,R1,R3 ;高32位相减,并减去低位借位 RSC应用示例(使用RSC指令实现求64位数值的负数 ): RSBS R2,R0,#0 ;R2=-R0

RSC R3,R1,#0 ;R3=-R1- !Carry AND应用示例:

ANDS R0,R0,#0x01 ;R0=R0&0x01,取出最低位数据 ANDEQ R2,R1,R3 ;R2=R1&R3

ORR应用示例:

ORR RO,RO,#0xOF ;将RO的低4位置1

MOV R1,R2,LSR#24 ;使用ORR指令将R2的高8位 ORR R3,R1,R3,LSL#8 ;数据移入到R3低8位中 EOR应用示例: EOR R1,R1,#0x0F ;将R1的低4位取反 EORS R0,R5,#0x01 ; 判断R5和0x01相等否 ADDEQ R1,R5,#10 ;若相等, (R5+10)操作 SUBNE R1,R5,#10 ;若不相等, (R5?10)操作 BIC应用示例:

BIC R1,R1,#0x0F ;将R1的低4位清零,其它位不变 BIC R1,R2,R3 ;将R3的反码和R2相逻辑“与”;结果保存到R1中 CMP应用示例:

CMP R1,#10 ; R1与10比较,设置相关标志位 ADDGT R1,R1,R2 ; 若R1>10, 则执行本指令(R1+R2) ADDLE R1,R1,R3 ; 若R1≤10, 则执行本指令(R1+R3) CMN应用示例:

CMN R0,#1 ; R0+1,判断R0是否为1的补码 ;如果是,则设置Z标志位 TST应用示例: TST R0,#0x01 ; 判断R0的最低位是否为0 TST R1,#0x0F ; 判断R1的低4位是否为0 TEQ应用示例:

TEQ R0,R1 ; 比较R0与R1是否相等 (不影响V位和C位) 练习:

将寄存器R0的第3,4位取反 EOR R0, R0, #0b1100

将寄存器R0的高四位和低四位互换 MOV R1, R0

MOV R2, R0 ;备份R0

MOV R1, R1, LSR #28 ;将高四位移动到低四位,其他位为0 MOV R2, R2, LSL #28 ;将低四位移动到高四位,其他位为0 ORR R1, R1, R2 ;将高四位和第四位合并到一起 AND R0, R0, #0x0FFFFFF0 ;将R0高低四位清0 ORR R0, R0 ,R1

3、将R0的低两位写到R1的低两位上,其余位不变 AND R2, R0, #3 ;保留R0的低两位 BIC R1, R1, #3 ;将R1的低两位清0 ORR R1, R1, R2

4、If(a!=10)&&(b!=20) a=a+b

CMP R0, #10 ;比较R0是否为10

CMPNE R1, #20 ;若R0<>10,则比较R1是否为20 ADDNE R0, R0, R1 ;若R0<>20,则R0+R1→R0 5、跳转指令 CMP R0 , #10

BEQ ENDCMP CMP R1, #20 BEQ ENDCMP ADD R0, R0, R1 ENDCMP NOP

X+10 (0

NEGITIVE RSB R0, R0, #0 ;R0=-R0 ENDPRO MOV R1, R0 MUL应用示例:

MUL R1,R2,R3 ;R1=R2×R3

MULS R0,R3,R7 ;R0=R3×R7,影响CPSR中的N位和Z位 MLA应用示例:

MLA R1,R2,R3,R0 ; R1=R2×R3+R0 UMULL应用示例:

UMULL R0,R1,R5,R8 ; (R1、R0)=R5×R8 UMLAL应用示例:

UMLAL R0,R1,R5,R8 ;(R1、R0)=R5×R8+(R1、R0) SMULL应用示例:

SMULL R2,R3,R7,R6 ; (R3、R2)=R7×R6 SMLAL应用示例:

本文来源:https://www.bwwdw.com/article/56kh.html

Top