周国运版ARM9第三、四章题解_第1页
周国运版ARM9第三、四章题解_第2页
周国运版ARM9第三、四章题解_第3页
周国运版ARM9第三、四章题解_第4页
周国运版ARM9第三、四章题解_第5页
已阅读5页,还剩4页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、ARM9 第三章习题解答第一章1. 嵌入式系统:“以应用为中心,以计算机技术为基础,软硬件可裁减,适用于应 用系统对功能、可靠性、成本、体积、功耗有严格要求的专用计算机系统”。2. 嵌入式系统与通用PC机的区别:1、通用计算机 沿着“高运算速度、高存储量” 方向发展,因此,通用微处理器是沿着以 Intel 公司产品为主导的 8086、 80286、 80386、 80486、 Pentium 、 Pentium II 、 Pentium III 、 Pentium 4 的路线发展,其主频从几 MHz发展到现在的3GHz字长从8位发展到64位,内存从几十KB到现在的GB存 储容量从从几十KB到现

2、在的数百GB2. 嵌入式系统 根据应用的要求,沿着“体积小、低功耗、高可靠”方向发展,对 运算速度、存储容量没有统一要求。三要素:嵌入、专用、计算机。3. 嵌入式系统有哪些部分组成:粗略划分:嵌入式处理器、外围设备、嵌入式操作 系统(可选)、嵌入式应用软件 稍细划分:嵌入式处理器、外围设备、驱动程序、嵌 入式操作系统、应用接口、嵌入式应用软件4. 嵌入式系统特点:嵌入式系统是面向具体应用的产品嵌入式系统软件、硬件 生命周期都比较长,有继承性需要软硬件开发工具和系统软件需要应用专家参 与开发嵌入式系统分散而不可垄断。5. 嵌入式系统分类: 按表现形式(硬件范畴) :芯片级嵌入 (含程序和算法的处

3、理器、 单片机 ) ;模块级嵌入(系统中的某个核心模块);系统级嵌入(系统中的电路板) 按实时性要求(软件范畴):非实时系统(PDA ;软实时系统(消费类产品); 硬实时系统(导引头等工业和军工系统)6. 嵌入式微处理器(MPU :就是和通用计算机的处理器对应的 CPU可以认为是 “增强型”通用微处理器。嵌入式微控制器(MCU :就是将整个计算机系统的主要硬件集成到一块芯片中,芯片内部集成 ROM/EPROMRAM总线,总线逻辑、定时/ 计数器、Watchdog I/O、串行口、A/D等各种必要功能和外设。嵌入式片上系统(SOC : 是追求产品系统最大包容的集成器件。绝大多数系统构件都在一个系

4、统芯片内部。 嵌入式可编程片上系统(SOPC :是用可编程逻辑技术把整个系统放到一块硅片上。 嵌入式DSP是专门用于信号处理方面的处理器,在系统结构和指令算法方面进行了 特殊设计,具有很高的编译效率和指令执行速度。第二章1. ARM是Advanee RISC Machine的缩写,既可以认为是一个公司的名字,也可以 认为是对一类微处理器的通称,还可以认为是一种技术的名字。2. 在ARM9TDMI“9TDM”的含义:9 :采用版本为9的ARM微处理器T :支持16为 压缩指令集Thumb称为T变种具D:支持片上Debug称为D变种M:内嵌硬件乘 法器Multiplier ,称为M变种I :嵌入式

5、ICE,支持片上断点和调试,称为I变种。3. ARM9两种工作状态:ARM犬态,处理器执行32位的字对齐的ARM指令;Thumb犬 态:处理器执行16位的半字对齐的Thumb指令。7种工作模式:用户模式(usr)、 快速中断模式( fiq )、外部中断模式( irq )、管理模式( svc) 、中止模式( abt)、 未定义模式(und)、系统模式(sys )。特权模式:除usr之外的其它的六种工作 模式都是持权模式。异常模式:除 usr 和 sys 之外的其它的五种工作模式都是持权 模式。4. ARM9寄存器分成哪几类?各类有哪些寄存器?寄存器LR有什么用途?分两类: 31 个通用寄存器和

6、6 个状态寄存器。6.ARM9异常响应过程(进入异常)执行哪些操作。保存返回地址、保存当前状态寄存器 CPSR勺内容、设置当前状态寄存器CPSR 中的相应位、转去执行中断处理程序。1、ARM指令中的第二操作数 “ operand2有哪些具体形式? 解:有三种:寄存器、寄存器移位、 8 位位图立即数。2、对于 ARM 的变址寻址方式,有基地址和偏移地址两部分组成。 ( 1 )基地址可以是哪些 寄存器?( 2)偏移地址可以有哪些形式?( 3)总地址的计算方法有哪些?( 4)变址寻址应用 于哪些指令?解: ( 1 )基地址可以是通用寄存器 R0-R15 中的任意一个。( 2)偏移地址可以有三种形式:

7、 12位立即数、寄存器、寄存器移位。( 3)总地址的计算方法有三种:前变址(前索引) 、后变址(后索引) 、自动变址。-前变址偏移:即先使用偏移传送数据;不修改基地址。女口: LDRRd , Rn, #m-后变址偏移:即先传送数据;后使用偏移修改基地址。如: STR Rd, Rn , #m-自动变址:即先使用偏移传送数据;再用偏移修改基地址。如: LDR Rd, Rn, #m !(4)变址寻址有 4 条指令: LDR 、 STR、 LDM 、 STM3、编写程序,将存储器从 域。0x400000 开始的 200 个字节的数据,传送到 0x400800 开始的区解:MOVR0,#0x400000

8、LDRR1 ,=0x400800MOVR7,#200LPLDRBR2,R0,#1STRBR2,R1,#1SUBSR7,R7,#1BNELPHEREBHERE3、编写程序,将存储器从0x400000 开始的 200 个字数据,传送到 0x400800 开始的区域,并且将它们相加,将其和存放在最后面。解:MOVR0, #0x400000LDRR1 , =0x400800MOVR7, #200MOVR3, #0MOVR4, #0LPLDRR2, R0 , #4STRR2, R1 , #4ADDSR3, R3, R2ADCR4, R4, #0SUBSR7, R7, #1BNELPSTRR3, R1 ,

9、 #4STRR4, R1HERE B HERE 4、编写程序,比较存储器中 0x400000 和 0x400004 两无符号字数据的大小,并且将比较结果存于 0x400008 的字中, 若两数相等其结果记为0,若前者大于后者其结果记为1,若前者小于后者其结果记为 -1。解:MOVR0,#0x400000LDRR1,R0,#4;取第 1 个数LDRR2,R0,#4;取第 2 个数CMPR1,R2;两个数相比较MOVHIR1,# 1;R1 大MOVLOR1 ,# -1;R1 小MOVEQ R1 ,# 0;两个数相等STRR1,R05、存储器从0x400000开始的100 个单元中存放着 ASCII

10、 码,编写程序,将其所有的小写字母转换成大写字母,对其它的 ASCII 码不做变换。解:MOVR0,#0x400000MOVR1,#0LPLDRBR2,R0,R1CMPR2,#0x61BLONEXTCMPR2,#0x7B;0x7A 为 zSUBLOR2, R2, #0x20STRBLOR2, R0,R1NEXTADDR1,R1,#1CMPR1,#100BNELP6、编写一程序,查找存储器从 0x400000 开始的 100 个字中为 0 的数目,将其结果存到 0x400190 中。解:MOVMOVMOVR0,#0x400000R7,#100R1,#0;控制循环变量;存 0 的数目LPLDRR2

11、,R0 ,#4;取数CMPR2,#0;比较为 0ADDEQR1,R1,#1;为 0 加 1SUBSR7,R7,#1;修改控制变量BNELPSTRR1,R0;保存 0 的数目HEREB HERE7、编写一程序,存储器中从 0x400200 开始有一个 64 位数。(1)将取反,再存回原处; (2)求其补码,存放到 0x400208 处 。解:LDR LDR LDR EOR STR ADDS STR LDR EOR STR ADC STRR0,=0x400200 R2,=0xFFFFFFFFR1,R0R1,R1,R2R1,R0 R1,R1,#1R1, R0 ,#8R1, R0 ,#4 R1,R1,

12、R2R1, R0 ,#4R1,R1,#0;取低 32 位数;取反;存低 32 位反码;又加 1 为求补;存低 32 位补码;取高 32 位数;取反;存高 32 位反码;高 32 位求补;存高 32 位补码R1,R0,#128、编写一ARM 汇编程序段,实现1+2+100的运算。解:MOVR2,#100MOVR1,#0LOOPADDR1,R1,R2; R1 中为累加和SUBSR2,R2,#1; R2 控制循环BNELOOP4、相对偏移变址方式 以 PC 值为基地址,以偏移量为变地址(由编译器计算) , PC 值加偏移为访问地址做 数据传送。不修改基地址(PC)值。实际是以PC值为基地址、立即数为

13、变址的前变址方式。格式:LDR/STRRd, LABEL (标号)例如:STRR1, LABEL1LDRR2, LABEL2ARM9 第四章习题解答11、编写一程序,用查询的方式,对 S3C2410X 的 A/D 转换器的第 0 通道连续 进行100次A/D转换,然后将其结果求平均值。设f pclk=50MHz。(注意:A/D转换 器有独立的模拟信号输入引脚 AIN0-AIN7 )解:( 1 )计算预分频值由于A/D转换器的最高输入时钟为2.5MHz,取为1MHz,贝U预分频值+1 = 50M/1M = 50所以 预分频值 = 49(2)程序如下:#define rADCCON(*(volat

14、ile unsigned *)0x58000000)#define rADCDAT0(*(volatile unsigned *)0x5800000c)#define pref49#define ch0int adc(int chan) rADCCON=(114)|(pref6)|(ch3)|1/设置预分频、通道、启动转换while(rADCCON&0x8000=0);/查询转换结束否return rADCDAT0&0x3ff;/读取并返回转换结果main(void) int i,val=0;for(i=0;i100;i+)val + = adc(ch); val / = 100;14、编写一

15、程序,使用外部中断 EINT0 ,用中断方式对端口 C 做数据输入。(注 意对中断系统和相关引脚进行初始化)提示: C 语言指向特定地址的方法:(1)#define rGPCDAT (*(volatile unsigned *)0x56000024)(2)int *rGPCDAT=0x56000024;(3)int *rGPCDAT; rGPCDAT=0x56000024;用第一种方法为好。#include #define rGPCCON #define rGPCDAT #define rGPFCON #define rSRCPND #define rINTMSK #define rINTPN

16、D #define rEXTINT0/(*(volatile unsigned *)0x56000020) (*(volatile unsigned *)0x56000024) (*(volatile unsigned *)0x56000050) (*(volatile unsigned *)0x4a000000) (*(volatile unsigned *)0x4a000008) (*(volatile unsigned *)0x4a000010) (*(volatile unsigned *)0x56000088) #define pISR_EINT0 (*(volatile unsig

17、ned *)(_ISR_STARTADDRESS+0x48) / void gpio_test(void)/设置 C 口为输入/上位置 F 口的第 0 位为中断输入/清除外中断 0 请求标志/开外中断 0 的屏蔽Uart_Printf( “ GPIO C Input tne”st );rGPCCON = 0x00;rGPFCON = rGPFCON & (0x03) | 0x02;rSRCPND &= 0x01;rINTMSK &= 0x01;/设置中断向量pISR_EINT0 = (int)Eint0Int;Uart_Printf( “ Press the EINT0/1 buttons o

18、r Pressn” );Uart_Getch( );/等待按键退出/屏蔽外中断 0/读取 C 口输入的数据 /显示读入的数据 /清除外中断 0 请求标志 /清除外中断 0 服务标志rINTMSK |= 0x01; static void _irq Eint0Int(void) int dd;dd = rGPCDAT & 0xffff;Uart_Printf(Test GPIO C dd = %dn”,dd); rSRCPND |= 0x01;rINTPND |= 0x01;16、编写一程序,使用timerO产生并输出频率为1OKHz、占空比为1/2的方波。 设 f pclk=50MHz 。(注

19、意对 timer0 和相关引脚初始化) 解:(1 )计算预分频值、分频值、计数值 三者总值 = 5OM/1OK = 5OOO 取计数值为100、分频值为1/2,则预分频值 +1 = (5OOO/1OO)*1/2 = 25 预分频值 = 25-1 = 24 = 0x18(2)计算比较寄存器初值 已知计数初值为 100,方波的占空比为 1/2,则:比较寄存器初值 = 100*1/2 = 50(3) 程序如下:#include #define rGPBCON#define rTCFG0#define rTCFG1#define rTCON#define rTCNTB0#define rTCMPB0/

20、GPB 口配置寄存器/定时器配置寄存器 0 /定时器配置寄存器 1 /定时器寄存器/定时器 0计数初值寄存器 /定时器 0比较初值寄存器(*(volatile unsigned *)0x56000010)(*(volatile unsigned *)0x51000000)(*(volatile unsigned *)0x51000004)(*(volatile unsigned *)0x51000008) (*(volatile unsigned *)0x5100000C)(*(volatile unsigned *)0x51000010)void Timer0_ test (void)var

21、iable0 = 0;variable1 = 0;variable2 = 0; variable3 = 0;variable4 = 0;Uart_Printf(nTest Timer0!n);rGPBCON = rGPHCON & (0x03) | (0x02); /设置 GPB0 为 T0 输出rTCFG0 = rTCFG0 & (0xffffff) | 0x000018; rTCFG1 =rTCFG1 & (0xf) | 0x0;/死区宽度 =0, T0 预分频为 0x18 /设置 T0 分频值为 1/2,其它不变rTCNTB0 =100;/设置 T0 计数初值rTCMPB00x18;/设

22、置 T0 比较初值rTCON = rTCON & (0xff) | 0x0a;/自动重装、手动装载 T0rTCON = rTCON & (0xffffff) | 0x599901; /自动重装、启动 T0程序如下:#definerUBRDIV2(*(unsigned int*)0x50008028)#definerULCON2(*(unsigned int*)0x50008000)#definerUCON2(*(unsigned int*)0x50008004)#definerUFCON2(*(unsigned int*)0x50008008)#definerURXH(*(unsigned int*)0x50008024)#definerUTXH(*(unsigned int*)0x50008028)#defineGPHCON#define#definerINTMSK#definerINTSUBMSK#definepISR_UART2#defineBIT_RXD216#defineBIT_TXD217#defineBIR_ERR218#defineBIT_UART211519、编写一程序,使用S3C2410的UART2进行串行数据收发,传输200字节数 据,要求用脉冲请求中断的方式、使用收 /发 FIFO, 8 个数据位、 1 个停止位、不校 验,波特率为1

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论