嵌入式系统原理arm复习.docx
《嵌入式系统原理arm复习.docx》由会员分享,可在线阅读,更多相关《嵌入式系统原理arm复习.docx(15页珍藏版)》请在冰豆网上搜索。
嵌入式系统原理arm复习
注:
答案在答案处,请先对照复习提纲做完后再来对照答案
1嵌入式系统基础知识
1.1嵌入式的定义
1.1.1嵌入式系统是以为中心,以为基础,软硬件可裁剪,适应应用系统对、、
、、、等严格要求的专用计算机系统。
答案:
1.2三要素:
、、
1.3答案:
1.4软硬件组成:
1.4.1硬件:
由、组成
1.4.2软件:
包括和
2答案:
3ARM技术概述
3.1两套指令集(两种工作状态):
、,ARM上电时处於状态。
答案:
3.2ARM的基本数据类型:
、、
答案:
字、半字、字节
3.3存储器大/小端:
3.3.1大端模式(big-endian):
数据的字节存放在内存的地址
3.3.2小端模式(little-endian):
数据的字节存放在内存的地址
答案:
3.4流水线:
3.4.1假设某嵌入式处理器有3级流水线,每级流水线所耗时间均为为2ms,则执行25条指令需要耗费时间?
答案:
3.4.2影响流水线性能的因素:
、
3.4.2.1哪些指令能影响流水线?
答案:
3.5ARM920T工作模式
3.5.1除模式外,其余6种模式为权模式,除了
和模式外,其余5种模式为异常模式。
答案:
3.5.2arm有个寄存器,个通用寄存器,个状态寄存器(分别是),未分组寄存器包括,分组寄存器包括。
寄存器在ARM处理器中常用作堆栈指针,称为SP;
寄存器又被称为连接寄存器,称为LR;
寄存器被称为程序计数器,又称PC.
答案:
4ARM的指令系统
4.1根据使用的指令类型不同,指令的寻址方式分为
和。
答案:
4.2CPU指令所需要的操作数可以去哪些地方寻找呢?
4.2.1指令当中;
4.2.2存储单元中:
寄存器当中;内存单元当中
4.3ARM指令集可以分为6类:
4.3.1跳转指令(b\bx\bl\blx)
4.3.2数据处理指令:
4.3.2.1寻址方式;
4.3.2.2寻址方式;
4.3.2.3寻址方式。
答案:
4.3.3程序状态寄存器传输指令
4.3.4Load/Store指令(访问内存的如str和ldr,“!
”表示完成数据传输后要更新基址寄存器)
4.3.5协处理器指令
4.3.6异常中断产生指令。
5ARM汇编语言程序设计
5.1ARM标准APCS寄存器使用规则
5.1.1参数不超过4个时,可以使用寄存器来传递参数,当参数超过4个时,还可以使用来传递参数。
答案:
5.1.2结果为一个32位整数时,可以通过寄存器返回
答案:
5.1.3结果为一个64位整数时,可以通过寄存器R0和R1返回,依次类推。
5.1.4寄存器R13用于数据栈指针,记作SP。
寄存器SP在进入子程序时的值和退出子程序时的值必须相等。
5.1.5寄存器R14称为链接寄存器,记作LR。
它用于保存子程序的返回地址。
5.2寄存器R15是程序计数器,记作pc。
它不能用作其他用途。
5.2.1数据定义伪操作
5.2.1.1DCB
答案:
5.2.1.2DCW(DCWU)用于分配一片连续的半字存储单元并用指定的数据初始化
5.2.1.3DCD(DCDU)用于分配一片连续的字存储单元并用指定的数据初始化
5.2.1.4SPACE用于分配一片连续的存储单元
5.2.1.5MAP用于定义一个结构化的内存表首地址
5.2.1.6FIELD用于定义一个结构化的内存表的数据
5.2.2杂项伪操作
5.2.2.1AREA用于定义一个代码段或数据段。
5.2.2.2ENTRY用于指定程序入口点。
5.2.2.3END用于指示源程序结束。
5.2.2.4EQU用于定义字符名称。
5.2.2.5EXPORT(或GLOBAL)
答案:
5.2.2.6IMPORT
答案:
6GPIO
6.1S3C2410芯片上共有个多功能的输入/输出引脚,它们分为组I/O端口
1个23位的输出端口(端口A)
2个11位的输入/输出端口(端口B、H)
4个16位的输入/输出端口(端口C、D、E、G)
1个8位的输入/输出端口(端口F)
答案:
7串行通信接口(UART)
7.1发送数据的组成:
7.1.11位起始位,规定为;
7.1.25~8位数据位,即要传送的有效信息;
7.1.31位奇偶校验位;
7.1.41~2位停止位,规定为;
7.1.5空闲位持续为。
答案:
7.2S3C2410串行通信接口的结构
7.2.1主要由4部分构成:
、、
、。
7.2.1.1:
将总线上的数据通过TXDn引脚串行移出;
7.2.1.2:
将RXDn引脚上收到的数据送入数据总线;
7.2.1.3:
为数据的收发提供参考时钟信号;
7.2.1.4:
控制数据收发的速率,发送器、接收器的工作模式。
答案:
7.3波特率计算公式:
UBRDIVn = (int)(PLK/(bps × 16)) –1
7.3.1例:
UCLK或者PCLK等于40MHz,当波特率为115200时,UBRDIV0的值为:
答案:
8S3C2410时钟体系结构
8.1S3C2410的时钟控制逻辑给整个芯片提供4种时钟信号:
:
用于CPU内核;
:
用于AHB总线上的设备,如:
中断控制器、存储器控制器、LCD控制器、Nandflash、DMA控制器等;
:
用于APB总线上的设备,如:
UART、IIC、IIS、SPI、WATCHDOG、PWM定时器、ADC、GPIO、RTC等;
UCLK:
用于USB设备。
答案:
9ARM异常中断处理及编程
9.1S3C2410X的中断控制器可以接受多达个中断源的中断请求,其中有个一级中断。
答案:
;
9.2一级中断源通过就可以确定;
对于一级中断源的开中断,只需对清0;
对于一级中断源的中断清除,需要对要写1清0
答案:
INTOFFSET;INTMASK;INTPND、SRCPND
9.311个片上外围电路需要通过INTOFFSET和SUBSRCPND才可以确定;
20个外部二级可扩展的外部中断源需要通过INTOFFSET和EINTPEND确定;
对于二级中断源的开中断,需要对SUBMASK、INTMASK或EINTMASK、INTMASK清0;
对于二级中断源的中断清除,除了INTPND、SRCPND要写1清0外,SUBSRCPND和EINTPEND也需要写1清0。
9.4外部中断的使用方法:
9.4.1设置I/O管脚为EINTn功能(GPnCON)
9.4.2设置外部中断的触发方式(EXINTn)
9.4.3设置中断模式FIQ/IRQ(INTMOD)
9.4.4设置中断优先级(PRIORITY)
9.4.5清除外部中断悬挂指示寄存器(EINTPEND)
9.4.6清除中断源悬挂指示寄存器(SRCPND)
9.4.7清除中断悬挂指示寄存器(INTPND)
9.4.8打开外部中断(EINTMASK、INTMSK)
9.4.9判断产生的中断是哪个EINTn(INTOFFSET、EINTPEND)
9.4.10处理完毕后,清除中断指示寄存器(EINTPEND、SRCPND、INTPND)
10RTC(RealTimeClock)
10.1RTC功能与结构
10.1.1S3C2410RTC三大主要功能:
为系统提供、
产生(闹钟中断)、产生(滴答中断或节拍时间中断)。
答案:
10.1.2S3C2410RTC使用时钟信号源,振荡电路只需外接2个20P左右的小电容、32.768KHz的晶振即可。
答案:
自己的独立
10.2S3C2410的RTC主要有5部分构成:
、
、(时分秒年月日星期)、
、等部分。
如下图所示。
答案:
10.2.1RTC节拍时间用于中断请求,TICNT寄存器有一个中断使能位和一个相关的计数器值,当节拍中断发生时,计数器值到达0。
中断时长如下:
Period=(n+1)/128;
以秒作为单位,n为节拍时间计数值,范围为1~127。
10.3RTC三大功能使用编程方法:
10.3.1初始化中断控制器;
10.3.2清除悬挂指示寄存器(SRCPND、INTPND)
10.3.3去除对相应中断的屏蔽(INTMSK)
10.3.4使能节拍中断,设置节拍时间中断时长(TICNT);
10.3.5使能报警中断(RTCALM);
10.3.6使能RTC寄存器写操作(RTCCON),设置当前时间(BCDSEC-BCDYEAR),禁止RTC寄存器写操作(RTCCON);
10.3.7使能RTC寄存器写操作(RTCCON),设置报警时间(ALMSEC-ALMYEAR),禁止RTC寄存器写操作(RTCCON);
10.3.8中断发生后,判断中断类型(INTOFFSET),进行中断处理;
10.3.9处理完毕后,再次清除悬挂指示寄存器(SRCPND、INTPND),返回
11看门狗定时器
11.1看门狗增强系统稳定性原理
答案:
11.2看门狗定时器的结构与工作原理
11.2.1S3C2410看门狗的功能
11.2.1.1定时器功能:
可以作为常规定时器使用,它是一个十六位的定时器,并且可以产生中断,中断名为INT_WDT,中断号是0x09。
11.2.1.2复位功能:
作为看门狗定时器使用,当时钟计数减为0(超时)时,它将产生一个128个PCLK时钟周期的复位信号。
11.2.2S3C2410ARM9的看门狗主要由五部分构成:
、、、、。
答案:
11.3S3C2410看门狗定时时间
预分频器为8位,其值为:
0--255
再分频器可选择值为:
16、32、64、128
输入到计数器的时钟周期为:
T_wtd=1/[PCLK/(Prescaler+1)/Division_factor]
看门狗的定时周期为:
T=WTDAT×T_wtd
11.4例:
设PCLK为50MHz,则如何设置可使2410的看门狗定时器工作时钟频率约为10KHz?
在此时钟频率下让看门狗定时器定时半秒钟,又如何设置呢?
11.5S3C2410的看门狗控制器编程步骤
11.5.1初始化看门狗控制器
11.5.1.1时钟设置、输出类型设置:
给WTCON相应位赋值;
11.5.1.2计数器初始值设定:
给WTCNT相应位赋值;
11.5.1.3数据寄存器赋值:
给WTDAT相应位赋值;
11.5.2如果把看门狗作为一个普通的定时器使用,还必须把看门狗定时中断处理程序填入中断向量表中,并把相关的中断控制寄存器初始化;
11.5.3使能看门狗控制寄存器:
给WTCON相应位赋值
12PWM定时器
12.1构成
12.1.1S3C2410芯片内部拥有个16位的Timer部件
12.1.2具有脉宽调制(pwm)功能,具有PWM脉冲输出引脚;
12.1.3仅作定时器用,不具有PWM功能,没有输出引脚;
12.1.4有一个死区(deadzone)发生器。
答案:
12.2
12.2.1每个Timer部件所需的计数时钟信号均需系统提供的pclk时钟两次“变速”(预分频和再分频)所得。
12.2.2Timer0、Timer1共享一个8位的预分频器,共享一个4位的再分频器;
12.2.3Timer2、Timer3、Timer4共享另一个8位预分频器,共享另外一个4位的再分频器;
12.35个Time部件最核心的东西是一个
答案:
12.4请描述S3C2410PWMTimer的操作
答案:
13S3C2410启动代码分析
13.1安装中断向量表:
保证异常中断发生时能够正确执行中断处理程序;
13.2初始化硬件
13.2.1关闭看门狗:
防止处理器不断复位
13.2.2屏蔽所有中断:
避免在启动过程中意外触发中断
13.2.3初始化时钟和PLL:
为ARM920T内核及片内外设提供不同频率的时钟信号
13.2.4初始化存储系统:
使处理器能够正常读写外部存储设备
13.3初始化系统堆栈:
为处理器提供不同工作模式下相应的堆栈空间
13.4初始化应用程序执行环境:
完成重定位及ZI段数清零
13.5跳转至主函数:
执行用户程序
一、填空题
1.ARM的完整拼写形式为,ARM处理器内部正在执行的指令和正在预取的指令相差条指令。
2.ARM处理器的arm状态以外的状态的指令的长度为位。
3.ARM三种最基本的寻址方式中,最快寻址方式是。
4.异步串行通信数据格式的特点是一个字符一个字符的传输,并且传送一个字符时总是以起始位开始,以停止位结束,其中起始位的逻辑值为,停止位的逻辑值为,空闲位的逻辑值为。
5.S3C2410串口控制器中,串口0的波特率由寄存器设置,其值与时钟信号PCLK、波特率Baud的关系式。
6.S3C2410PWM定时器最核心的部件是,其初始值可以通过初始化编程设置。
7.当S3C2410看门狗的定时器溢出的时候,可能会产生两路输出
和。
8.S3C2410的RTC控制器的功能提供实时时间、、。
9.APCS中规定子程序间传递参数,参数个数少于等于4个时,使用寄存器;参数个数多于4个时,使用。
10.在ARM处理器中,寄存器间传送数据的指令是,寄存器和内存单元间传送数据的指令是,寄存器和状态寄存器间传送数据的指令是。
11.S3C2410是以ARM920T为处理器核的SOC,其芯片内部的总线可以分为、,其中,看门狗控制器所连的总线为。
12.伪操作import的作用是。
伪操作“ldrr0,=label”的含义是。
二、简答题
1、ARM在哪些工作模式下可以修改CPSR寄存器?
2、ARM处理器共有七种工作模式,哪些工作模式属于特权模式?
哪些工作模式属于异常模式?
3、ARM处理器有哪些异常中断?
每种异常中断的入口地址分别是什么?
4、4.S3C2410中断控制器相关特殊功能寄存器各有什么作用?
5、中断发生时,处理器硬件完成了哪些工作?
程序员需要完成那些工作?
6、查询方式使用串口时,由哪个寄存器判断发送器是否空闲以及接收器是否收到数据?
7、FCLK、PCLK、HCLK、UCLK分别为哪些部件提供工作时钟?
8、PWM定时器中断信号传递到内核涉及哪些寄存器的配置?
9、PWM定时器输出信号TOUTn的占空比受哪些寄存器值的影响?
10、S3C2410PWM定时器操作过程?
11、S3C2410定时器计数器和比较器,是由哪个寄存器实现重载?
以及重载的方法有哪些?
12、S3C2410RTC的特殊功能寄存器中,时间相关的寄存器如何设置才能表示:
13年05月21日,星期二,17时10分20秒?
13、S3C2410启动代码执行哪些操作步骤?
各操作步骤的功能是什么?
14、假设某嵌入式处理器有5级流水线,每级流水线所耗时间均为为0.2ms,则执行30条指令需要耗费时间是多久?
写出简要计算过程。
15、S3C2410串口的结构主要有哪几部分?
画出S3C2410串口的结构模块图,并简要描述各模块的功能。
16、简述看门狗定时器增强系统稳定性的原理。
17、编写一段c语言和汇编语言的混合程序,在c语言函数中实现字符串拷贝(不许用字符串操作相关函数),函数原型如下:
voidstrcpy(char*src,char*dest)//即src所指向的字符串复制到dest中
{
//自己编写字符串拷贝代码
}
然后,在汇编语言程序通过调用strcpy完成字符串src到dest的复制!
areainit,code,readonly
entry
……;此处需将汇编代码补充完整
blstrcpy
b.
src
dcb“Whereisawill,whereisaway!
”,0
dest
space50
end