嵌入式技术.docx
- 文档编号:5369146
- 上传时间:2022-12-15
- 格式:DOCX
- 页数:15
- 大小:115.72KB
嵌入式技术.docx
《嵌入式技术.docx》由会员分享,可在线阅读,更多相关《嵌入式技术.docx(15页珍藏版)》请在冰豆网上搜索。
嵌入式技术
1、嵌入是系统定义
(1,从技术的角度定义:
以应用为中心、以计算机技术为基础、软件硬件可裁剪、适应应用系统对功能、可靠性、成本、体积、功耗严格要求的专用计算机系统。
(2,从系统的角度定义:
嵌入式系统是设计完成复杂功能的硬件和软件,并使其紧密耦合在一起的计算机系统。
术语嵌入式反映了这些系统通常是更大系统中的一个完整的部分,称为嵌入的系统。
嵌入的系统中可以共存多个嵌入式系统。
2、从体系结构上看,嵌入式系统主要由嵌入式处理器、支撑硬件和嵌入式软件组成。
其中嵌入式处理器通常是单片机或微控制器,支撑硬件主要包括存储介质、通信部件和显示部件等,嵌入式软件则包括支撑硬件的驱动程序、操作系统、支撑软件及应用中间件等。
3、图1-1嵌入式系统组成:
嵌入式系统硬件平台,嵌入式操作系统,嵌入式系统应用。
4、嵌入式操作系统的主要特点如下:
(1)体积小
(2)实时性
(3)特殊的开发调试环境
•实时操作系统的特点
实时性、可靠性和灵活性,实时系统的应用特点来看实时操作系统可以分为两种:
一般实时操作系统和嵌入式实时操作系统
5、ARM有3种含义,它是一个公司的名称,是一类微处理器的通称,还是一种技术的名称
6、ARM公司定义了5种主要的ARM指令集体系结构版本,以版本号V1~V5表示。
V1V2都是26位寻址空间v3是32位v4有了可以转换到Thumb状态的指令v5增加计数前导零指令和软件断点指令
第二章
1、机器指令包括ARM指令集和Thumb指令集;
⏹除用户模式之外的其余6种称为非用户模式,或特权模式(PrivilegedModes);而特权模式中,除系统模式之外的其余5种又称为异常模式(ExceptionModes),不同的工作模式间可以相互切换。
⏹ARM体系结构支持7种处理器模式,分别为:
用户模式、快中断模式、中断模式、管理模式、中止模式、未定义模式和系统模式,
⏹ARM处理器有如下37个32位长的寄存器:
(1)30个通用寄存器;
(2)6个状态寄存器:
1个CPSR(CurrentProgramStatusRegister,当前程序状态寄存器),5个SPSR(SavedProgramStatusRegister,备份程序状态寄存器);
(3)1个PC(ProgramCounter,程序计数器)。
N(Negative)、Z(Zero)、C(Carry)和V(oVerflow)通称为条件标志位。
程序计数器R15又被记为PC。
程序计数器在下面两种情况下用于特殊的目的。
(1)读程序计数器。
(2)写程序计数器
ØARM状态:
处理器执行32位的arm指令集时,工作在此状态;
ØThumb状态:
处理器执行16位的thumb指令集时,工作在此状态。
2、通用寄存器:
包括R0~R15,以及程序计数器PC.
ØR0~R7称为不分组寄存器;
ØR8~R12有两组物理寄存器。
一组属于快速模式(R8_fiq~R12_fiq),另一组属于其它模式(R8_usr~R12_usr);
ØR13和R14有6组物理寄存器。
其中用户模式和系统模式共用一组。
寄存器R13通常作为堆栈指针(SP),寄存器R14常用作连接寄存器(LR);
Ø寄存器R15,又称为PC
3、状态寄存器:
当前程序状态寄存器CPSR,可以在任何工作模式下被访问;
程序状态备份寄存器SPSR,只有在异常模式下,才能被访问;
Ø条件标志位
N当两个补码表示的带符号数运算时,N=1表示运算的结果为负数;N=0表示运算的结果为正数或零;
ZZ=1表示运算的结果为零;Z=0表示运算的结果不为零;
C有3种情况会改变C的值:
加法运算(包括比较指令CMN):
当运算结果产生了进位时(无符号数上溢出),C=1,否则C=0。
减法运算(包括比较指令CMP):
当运算时产生了借位(无符号数下溢出),C=0,否则C=1。
对于包含移位操作的非加/减运算指令,C为移出值的最后一位。
V对于加/减法运算指令,当操作数和运算结果为二进制的补码表示的带符号数时,V=1表示符号位溢出。
Q在ARMv5及以上版本的E系列处理器中,用Q标志位指示增强的DSP运算指令是否发生了溢出。
II=1,表示禁止IRQ中断;否则,表示允许IRQ中断
FF=1,表示禁止FIQ中断;否则,表示允许FIQ中断
T对于ARMv4以上版本的T系列处理器,T=0,表示执行ARM指令,否则,表示执行Thumb指令;对于ARMv5以上版本的非T系列处理器,T=0,表示指令ARM指令,否则,表示强制下一条执行的指令产生未定义指令中断。
4、ARM指令在汇编程序中用助记符表示,一般ARM指令的助记符格式为:
Ø
5、ARM指令集
数据处理指令Ⅰ
1.MOV数据传送指令:
MOV{
2. MVN数据取反传送指令:
MVN{
3.ADD加法指令:
ADD{
4.ADC带进位加法指令:
ADC{
5.SUB减法指令:
SUB{
6.RSB反向减法指令:
RSB{
7.SBC带借位减法指令:
SBC{
8.RSC带借位的反向减法指令:
RSC{
9. MUL32位乘MUL{
10.MLA32位乘加指令:
MLA{
11.SMULL64位有符号数乘法指令:
SMULL{
12.SMLAL64位有符号数乘加指令:
SMLAL{
13.UMULL64位无符号数乘法指令:
UMULL{
14.UMLAL64位无符号数乘加指令:
UMLAL{
15.AND逻辑与指令:
AND{
16.ORR逻辑或指令:
ORR{
17.EOR逻辑异或指令:
EOR{
18.BIC位清除指令:
BIC{
19.CMP比较指令:
CMP{
20.CMN反值比较指令:
CMN{
21.TST位测试指令:
TST{
22.TEQ相等测试指令:
TEQ{
6、Load/Store指令用于寄存器和内存间数据的传送,Load用于把内存中的数据装载到寄存器中,而Store则用于把寄存器中的数据存入内存。
Load/Store指令分为三类:
Ø单一数据传送指令(LDR和STR等);
Ø多数据传送指令(LDM和STM);
Ø数据交换指令(SWP和SWPB)。
1.LDR字数据加载指令:
LDR{
2.LDRB字节数据加载指令:
LDR{
3.LDRBT用户模式的字节数据加载指令:
LDR{
4.LDRH半字数据加载指令:
LDR{
5.LDRSB有符号的字节数据加载指令:
LDR{
6.LDRSH有符号的半字数据加载指令:
LDR{
7.LDRT用户模式的字数据加载指令:
LDR{
8.STR字数据存储指令:
STR{
9.STRB字节数据存储指令:
STR{
10.STRBT用户模式的字节数据存储指令:
STR{
11.STRH半字数据存储指令:
STR{
12.STRT用户模式的字数据存储指令:
STR{
13.LDM批量数据加载指令:
LDM{
},
14.STM批量数据存储指令:
STM{
},
15.SWP字数据交换指令:
SWP{
16.SWPB字节数据交换指令:
SWP{
7、ARM协处理器指令可分为3类:
ARM处理器最多可支持16个协处理器
ARM处理器用于初始化协处理器的数据操作指令(CDP);
协处理器寄存器和内存单元之间的数据传送指令(LDC,STC);
ARM处理器寄存器和协处理器寄存器之间的数据传送指令(MCR,MRC)
8、Thumb指令集可以看作是ARM指令集的一个子集,Thumb指令长度为16位,但Thumb指令集中的数据处理指令的操作数仍然是32位的,指令寻址地址也是32位的。
Thumb指令集由四大类构成:
数据处理指令;跳转指令;Load/Store指令;和软件中断指令
9、3级流水线ARM组织
(1)取指令(fetch):
从寄存器装载一条指令。
(2)译码(decode):
识别被执行的指令,并为下一个周期准备数据通路的控制信号。
(3)执行(excute):
处理指令并将结果写回寄存器。
5级流水线包括下面的流水线级。
(1)取指令:
从存储器中取出指令,并将其放入指令流水线。
(2)译码:
指令被译码,从寄存器堆中读取寄存器操作数。
(3)执行:
将其中1个操作数移位,并在ALU中产生结果。
(4)缓冲/数据:
如果需要则访问数据存储器,否则ALU只是简单地缓冲1个时钟周期。
(5)回写:
将指令的结果回写到寄存器堆,包括任何从寄存器读出的数据。
10、影响流水线性能的因素
(1.互锁一条指令的结果被作为下条指令的操作数
(2.跳转指令被预取的指令必须放弃
11、复位异常中断通常用在下面两种情况下:
(1)系统上电;
(2)系统复位。
12、异常响应流程
(1.判断处理器状态当异常发生时,处理器自动切换到ARM状态,所以在异常处理函数中要判断在异常发生前处理器是ARM状态还是Thumb状态。
这可以通过检测SPSR的T位来判断。
通常情况下,只有在SWI处理函数中才需要知道异常发生前处理器的状态。
所以在Thumb状态下,调用SWI软中断异常必须注意以下两点。
(1)发生异常的指令地址为(lr−2),而不是(lr−4)。
(2)Thumb状态下的指令是16位的,在判断中断向量信号时使用半字加载指令LDRH
(2.向量表其中快速中断处理函数FIQ_handler()可以直接从地址0x1C处开始,省下一条跳转指令
(1)MOVPC,#imme_value
(2)LDRPC,[PC+offset]
13、当一个异常处理返回时,一共有3件事情需要处理:
通用寄存器的恢复、状态寄存器的恢复及PC指针的恢复。
通用寄存器的恢复采用一般的堆栈操作指令即可
14、数据处理指令寻址方式可以分为以下几种。
(1)立即数寻址方式;
(2)寄存器寻址方式;
(3)寄存器移位寻址方式
内存访问指令的寻址方式可以分为以下几种。
(1)字及无符号字节的Load/Store指令的寻址方式;
(2)杂类Load/Store指令的寻址方式;
(3)批量Load/Store指令的寻址方式;
(4)协处理器Load/Store指令的寻址方式。
15、寄存器移位寻址ⅡLSL逻辑左移:
Rx,LSL
LSR逻辑右移:
Rx,LSR
ASR算术右移:
Rx,ASR
ROR循环右移:
Rx,ROR
RRX带扩展的循环右移:
Rx,RRX
•寄存器中的值为操作数的物理地址,而实际的操作数存放在存储器中。
例:
STRR0,[R1];[R1]=R0
LDRR0,[R1];R0=[R1]
•将寄存器(称为基址寄存器)的值与指令中给出的偏移地址量相加,所得结果作为操作数的物理地址。
例:
LDRR0,[R1,#5];R0=[R1+5]
LDRR0,[R1,R2];R0=[R1+R2]
根据堆栈的不同种类,将其寻址方式分为以下4种。
(1)满递减FD(FullDescending)。
(2)空递减ED(EmptyDescending
(3)满递增FA(FullAscending)。
(4)空递增EA(EmptyAscending)
简单的ARM程序
;文件名:
TEST1.S
;功能:
实现两个寄存器相加
;说明:
使用ARMulate软件仿真调试
AREAExample1,CODE,READONLY;声明代码段Example1
ENTRY;标识程序入口
CODE32;声明32位ARM指令
STARTMOVR0,#0;设置参数
MOVR1,#10
LOOPBLADD_SUB;调用子程序ADD_SUB
BLOOP;跳转到LOOP
ADD_SUB
ADDSR0,R0,R1;R0=R0+R1
MOVPC,LR;子程序返回
END;文件结束
第三章
1、Thumb指令集把32位ARM指令集的一个子集编码为一个16位的指令集
代码密度高是Thumb指令集的一个主要优势。
第五章
1、JTAG主要作用:
(1用于芯片内部测试及对系统进行仿真、调试
(2实现ISP功能,如对Flash器件进行编程等
JTAG技术是一种嵌入式调试技术,它在芯片内部封装了专门的测试电路TAP,通过专用的JTAG测试工具对内部节点进行测试。
目前大多数比较复杂的器件都支持JTAG协议,如ARM、DSP、FPGA器件等。
标准的JTAG接口是4线:
TMS、TCK、TDI、TDO,分别为测试模式选择、测试时钟、测试数据输入和测试数据输出
JTAG接口的连接有两种标准,即14针接口和20针接口
2、Flash存储器又称闪存,主要有两种:
NorFlash和NandFlash。
1.接口对比
NorFlash带有通用的SRAM接口,可以轻松地挂接在CPU的地址、数据总线上,对CPU的接口要求低。
NorFlash的特点是芯片内执行。
NandFlash器件使用复杂的I/O口来串行地存取数据,8个引脚用来传送控制、地址和数据信息。
2容量和成本对比
相比起NandFlash来说,NorFlash的容量要小在价格方面,NorFlash比NandFlash高。
3.可靠性对比
NandFlash中的坏块是随机分布的,而坏块问题在NorFlash上是不存在的。
在Flash的位翻转现象上,NandFlash的出现几率要比NorFlash大得多。
4.寿命对比
在NandFlash中每个块的最大擦写次数是一百万次,而NorFlash的擦写次数是十万次。
5.升级对比
NorFlash的升级较为麻烦、而不同容量的NandFlash的接口是固定的,所以升级简单。
6.读写性能对比
NandFlash执行擦除操作是十分简单的,而NorFlash则要求在进行擦除前先要将目标块内所有的位都写为1。
NorFlash的读速度比NandFlash稍快一些
3、SDRAM电路(同步动态随机存储器
与Flash存储器相比,SDRAM不具有掉电保持数据的特性,但其存取速度大大高于Flash存储器,且具有读/写的属性。
作用:
SDRAM在系统中主要用作程序的运行空间、数据及堆栈区。
当系统启动时,CPU首先从复位地址0x0处读取启动代码,在完成系统的初始化后,程序代码一般应调入SDRAM中运行,以提高系统的运行速度,同时,系统及用户堆栈、运行数据也都放在SDRAM中。
系统带有两个串行接口,分别是UART0和UART1,其中UART1复用为支持RS485和RS422的接口,另外还将其复用为IRDA红外模块
4、要完成最基本的串行通信功能,实际上只需要RXD、TXD和GND即可,但由于RS-232-C标准所定义的高、低电平信号与S3C2410B系统的LVTTL电路所定义的高、低电平信号完全不同,LVTTL的标准逻辑“1”对应2~3.3V电平,标准逻辑“0”对应0~0.4V电平;而RS-232-C标准采用负逻辑方式,标准逻辑“1”对应−5~−15V电平,标准逻辑“0”对应+5~+15V电平。
显然,两者间要进行通信必须经过信号电平的转换,目前常使用的电平转换电路为MAX3232。
第七章
1、交叉开发环境是由开发主机和目标板两套计算机系统构成的。
目标板和主机之间通常可以使用串口、以太网接口、USB接口及JTAG接口等方式连接
2、文件传输方式
(1)串口传输方式。
(2)网络传输方式。
ftp,telnet
(3)USB接口传输方式。
(4)JTAG接口传输方式。
JTAG仿真器跟主机之间的连接通常是串口、并口、以太网接口或者USB接口。
(5)移动存储设备。
3、TFTP协议是简单的文件传输协议,所以实现简单,使用方便,正好适合目标板
4、Bootloader是在操作系统运行之前执行的一段小程序。
通过这段小程序,我们可以初始化硬件设备、建立内存空间的映像表,从而建立适当的系统软硬件环境,为最终调用操作系统内核做好准备。
5、使用目录树结构,并且使用Makefile组织配置编译。
Linux内核主要由五个子系统组成:
进程调度,内存管理,虚拟文件系统,网络接口,进程间通信
6、编译内核之前要先配置。
为了正确、合理地设置内核编译配置选项,从而只编译系统需要的功能的代码,一般主要有下面4个考虑。
(1)尺寸小。
(2)节省内存。
(3)减少漏洞。
(4)动态加载模块。
7、所谓移植就是把程序代码从一种运行环境转移到另外一种运行环境。
对于内核移植来说,主要是从一种硬件平台转移到另外一种硬件平台上运行。
对于内核移植工作来说,主要是添加开发板初始化和驱动程序的代码
第三章汇编语言程序设计
⏹1、
ARM的汇编语言程序一般由几个段组成,每个段均由AREA伪操作定义。
⏹段可以分为多种,如代码段、数据段、通用段,每个段又有不同的属性,象代码段的默认属性为READONLY,数据段的默认属性为READWRITE。
⏹本程序定义了两个段,第一个段为代码段codesec,它在存储器中存放用于程序执行的代码以及main函数的本地字符串;第二个段为数据段constdatasec,存放了全局的字符串,由于本程序没有对数据进行写操作,该数据段定义属性为READONLY。
格式:
⏹[标签]指令/伪操作/伪指令操作数[;语句的注释]
Ø所有的标签必须在一行的开头顶格写,前面不能留空格,后面也不能跟C语言中的标签一样加上“:
”;
ØARM汇编器对标识符的大小写敏感书写标号及指令时字母的大小写要一致;
Ø注释使用“;”符号,注释的内容从“;”开始到该行的结尾结束。
⏹标签
标签是一个符号,可以代表指令的地址、变量、数据的地址和常量。
一般以字母开头,由字母、数字、下划线组成。
当符号代表地址时又称标号,可以以数字开头,其作用范围为当前段或者在下一个ROUT伪操作之前。
⏹指令/伪操作
指令/伪操作是指令的助记符或者定义符,它告诉ARM的处理器应该执行什么样的操作或者告诉汇编程序伪指令语句的伪操作功能。
程序中的常量是指其值在程序的运行过程中不能被改变的量。
Ø数字常量:
数字常量有3种表示方式:
•十进制数,如1、2、123
•十六进制数,如0x123,0xabc
•n进制数,形式为n_XXX,n的范围是2到9,XXX是具体数字
Ø字符常量:
由单引号及中间的字符组成,包括C语言中的转义字符,如’a’,’\n’
Ø字符串常量:
由一对双引号及中间的字符串表示,中间也可以使用C语言中的转义字符,比如:
“abcdef\0xa\r\n”
Ø逻辑常量:
{TRUE},{FALSE},注意带大括号
这里所说的变量,是相对于汇编程序的“变量”,是用于汇编程序进行处理的,但一旦编译到程序中,则不会改变,成为常量。
Ø如果在字符串变量的前面有一个$字符,在汇编时编译器将用该字符串变量的内容代替该串变量。
Ø如果在数字变量前面有一个代换操作符“$”,编译器会将该数字变量的值转换为十六进制的字符串,并用该十六进制的字符串代换“$”后的数字变量。
Ø如果需要将“$”字符加入到字符串中,可以用“$$”代替,此时编译器将不再进行变量代换,而是把“$$”看作一个“$”.
Ø一般的,在两个“|”之间的“$”并不进行变量的代换,但如果“|”在双引号内,则将进行变量代换。
Ø使用“.”来表示字符串中变量名的结束。
⏹内嵌的ARM汇编与纯粹的ARM汇编的区别有:
Ø内嵌的ARM汇编不支持ADR、ADRL伪指令;
Ø十六进制数使用0x作为前缀,而后者使用&;
Ø编译器在编译函数时使用R0、R1、R2、R3、IP和LR存放中间结果,因此使用这些寄存器时要特别小心;
Ø注意C语言中的C语言变量不要和物理寄存器同名,否则可能出现混乱;
Ø内嵌的汇编代码不能使用PC寄存器返回当前指令的地址;
ØSTM和LDM指令中不能使用C语言表达式;
Ø不支持BX和BLX;
Ø用户可以改变处理器的模式,但仍然需要自己把处理器模式恢复过来,编译器不会自动做处理;
Ø嵌汇编指令常量前面的符号“#”可以省略;
Ø嵌汇编指令不支持内存分配的伪操作。
⏹标号只能由a~z,A~Z,0~9,“.”,_等字符组成.当标号为0~9的数字时为局部标号,局部标号可以重复出现,使用方法如下:
Ø标号f:
在引用的地方向前的标号;
Ø标号b:
在引用的地方向后的标号
⏹使用局部符号的例子(“@”符号后的语句为注释):
1:
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 嵌入式 技术