嵌入式系统讲义 第4章S3C2410X系统结构 周国运 2007.3
嵌入式系统讲义 第4章 S3C2410X系统结构 周国运 2007.3
第三章习题解答 1、ARM指令中的第二操作数“ operand2”有哪些具 体形式? 解:有三种:寄存器、寄存器移位、8位位图立即数
第三章习题解答 1、 ARM指令中的第二操作数“operand2”有哪些具 体形式? 解:有三种:寄存器、寄存器移位、8位位图立即数
2、对于ARM的变址寻址方式,有基地址和偏移地址两部分 组成。(1)基地址可以是哪些寄存器?(2)偏移地址可以 有哪些形式?(3)总地址的计算方法有哪些?怎么表示? (4)变址寻址应用于哪些指令? 解:(1)基地址可以是通用寄存器R0-R15中的任意一个。 (2)偏移地址可以有三种形式:12位立即数、寄存器、 寄存器移位 (3)总地址的计算方法。有三种:前索引偏移、后索引 偏移、程序相对偏移。 前索引偏移:即先使用偏移,后传送数据。不定修改基地址。 如: ldr Rd,IRn,#ml; STR Rd.,[Rn,#m]!(修改基地址) 后索引偏移:即先传送数据,后先使用偏移,修改基地址。 如: ldr Rd,[Rm,#m 相对偏移:寻址地址在PC中,以当前指令为基地址,土4KB内。 如: Ldr Rd, lable; lable为程序标号 (4)有4条指令:LDR、STR、LDM、STN
2、 对于ARM的变址寻址方式,有基地址和偏移地址两部分 组成。(1)基地址可以是哪些寄存器?(2)偏移地址可以 有哪些形式?(3)总地址的计算方法有哪些?怎么表示? (4)变址寻址应用于哪些指令? 解:(1)基地址可以是通用寄存器R0---R15中的任意一个。 (2)偏移地址可以有三种形式:12位立即数、寄存器、 寄存器移位。 (3)总地址的计算方法。有三种:前索引偏移、后索引 偏移、程序相对偏移。即偏移地址的计算方法 – 前索引偏移:即先使用偏移,后传送数据。不定修改基地址。 如:LDR Rd,[Rn,#m]; STR Rd,[Rn,#m]!(修改基地址) – 后索引偏移:即先传送数据,后先使用偏移,修改基地址。 如:LDR Rd,[Rn],#m – 相对偏移:寻址地址在PC中,以当前指令为基地址,±4KB内。 如:LDR Rd,lable ;lable为程序标号 (4) 有4条指令:LDR、STR、LDM、STM
3、存储器从0x4000始的100个单元中存放着ASCI 编写程序,将其所有的小写字母转换成大写字母,对其 的ASCI码不做变换。 解: MOV R0,#x400000 MOV R1,#0 LP LDRB R2,[R0,R1 CMP R2,#x61 BLO NEXT CMP R2,#0x7B;0x61-0x7A为小写字母的ASC SUBLO R2,R2,#x20 STRBLO R2, RO, RI NEXT ADD R1,R1,#1 CMP R1,#100 BNE
3、 存储器从0x400000开始的100个单元中存放着ASCII码, 编写程序,将其所有的小写字母转换成大写字母,对其它 的ASCII码不做变换。 解: MOV R0,#0x400000 MOV R1,#0 LP LDRB R2,[R0,R1] CMP R2,#0x61 BLO NEXT CMP R2,#0x7B ;0x61---0x7A为小写字母的ASC SUBLO R2, R2,#0x20 STRBLO R2,[R0,R1] NEXT ADD R1, R1,#1 CMP R1,#100 BNE LP
4、编写程序,比较存储器中0x40000830x400004 两无符号字数据的大小,并且将比较结果存于 0x400008的字中,若两数相等其结果记为0,若前 者大于后者其结果记为1,若前者小于后者其结果 记为-1。 解 MOV R0,#0x400000 LDR R1,[R0 ;取第1个数 LDR R2,[R0,#4;取第2个数 CMP R1,R2 ;两个数相比较 MOVH RI #1 ;R1大 MOVLO RI#-1 ;R1小 MⅤEQR1,#0 ;两个数相等 STR R1,[R0,#8
4、 编写程序,比较存储器中0x400000和0x400004 两无符号字数据的大小,并且将比较结果存于 0x400008的字中,若两数相等其结果记为0,若前 者大于后者其结果记为1,若前者小于后者其结果 记为-1。 解: MOV R0,#0x400000 LDR R1,[R0] ;取第1个数 LDR R2,[R0,#4] ;取第2个数 CMP R1,R2 ;两个数相比较 MOVHI R1,#1 ;R1大 MOVLO R1,# -1 ;R1小 MOVEQ R1,#0 ;两个数相等 STR R1,[R0,#8]
7、编写一程序,存储器中从0x400200开始有一个64位数。 (1)将取反,再存回原处;(2)求其补码,存放到 0x400208处。 解 LDR R0,=0x400200 LDR R2. =OXFFFFFFFF LDR R1,[R0 ;取低32位数 EOR R1,R1,R2 ;取反 STR R1,[R0 ;存低32位反码 ADDS R1,R1,#1 ;又加1为求补 STR R1,[R0,#8 ;存低32位补码 LDR R1,[R0,#4 ;取高32位数 EOR R1,R1,R2 ;取反 STR R1,[R0,#4 ;存高32位反码 ADC R1,R1,#0 ;高32位求补 STR R1,IR0,#12;存高32位补码
7、 编写一程序,存储器中从0x400200开始有一个64位数。 (1)将取反,再存回原处;(2)求其补码,存放到 0x400208处 。 解: LDR R0,=0x400200 LDR R2,=0xFFFFFFFF LDR R1,[R0] ;取低32位数 EOR R1,R1,R2 ;取反 STR R1,[R0] ;存低32位反码 ADDS R1,R1,#1 ;又加1为求补 STR R1,[R0,#8] ;存低32位补码 LDR R1,[R0,#4] ;取高32位数 EOR R1,R1,R2 ;取反 STR R1,[R0,#4] ;存高32位反码 ADC R1,R1,#0 ;高32位求补 STR R1,[R0,#12] ;存高32位补码
8、编写一简单ARM汇编程序段,实现1+2+.+100 的运算。 解 MOV R2,#100 MOV R1,# LOOP ADD R1,R1,R2;R1中为累加和 SUBS R2,R2,#1;R2控制循环 BNE LOOP
8、 编写一简单ARM汇编程序段,实现1+2+…+100 的运算。 解: MOV R2,#100 MOV R1,#0 LOOP ADD R1,R1,R2 ;R1中为累加和 SUBS R2,R2,#1 ;R2控制循环 BNE LOOP
习题 本章作业:2、3、5、7、10、12、15 1、S3C2410X主要特性有哪些? 2、S3C2410X的结构分为几个部分?每一部分主要由哪些部 件构成? 3、S3C2410X的存储器由哪几部分构成,每一部分有什么特 点? 4、S3C2410X的Fash有哪些特点? 5、S3C2410X的DMA有哪些特点?其工作过程是怎样的?每 个通道配置有哪些寄存器? 6、S3C2410X的AD转换器有哪些特点?有哪些相关的寄存器? 7、编写程序,月查询的方式,对S3C2410X的A①D转换器的 第通道连续进行100次AD转换,然后将其结果求平均值。 注意:A转换器有独立的模拟信号输入引脚AIN0-N9
习 题 本章作业:2、3、5、7、10、12、15 1、S3C2410X主要特性有哪些? 2、S3C2410X的结构分为几个部分?每一部分主要由哪些部 件构成? 3、S3C2410X的存储器由哪几部分构成,每一部分有什么特 点?存储器主要有哪些控制寄存器? 4、S3C2410X的Flash有哪些特点? 5、S3C2410X的DMA有哪些特点?其工作过程是怎样的?每 个通道配置有哪些寄存器? 6、S3C2410X的A/D转换器有哪些特点?有哪些相关的寄存器? 7、编写一程序,用查询的方式,对S3C2410X的A/D转换器的 第0通道连续进行100次A/D转换,然后将其结果求平均值。 注意:A/D转换器有独立的模拟信号输入引脚AIN0---AIN9
8、S3C2410X的中断系统有哪些特点?相关的寄存器有哪些? 9、S3C2410X的中断控制器的工作过程是怎样的?对于IRQ,整 个中断过程是怎样的(中断控制器处理,向CPU请求,转到 中断入口,转去获得中断服务程序的首地址,执行中断服务 程序)? 10、编写一程序,使用外部中断EINT0,用中断方式对端口C做 数据输入。(注意对中断系统和相关引脚进行初始化) 提示:C语言指向特定地址的方法 (1)#define rGPCDat (*(volatile unsigned *)0x56000024) (2) int *rGPCDAT=0x56000024 (3) int *rgPCdat: rGPCDaT=0x56000024 用第一种方法为好。 ll、S3C2410X的定时器系统有哪些特点?由哪几部分构成?相 关的寄存器有哪些?是如何工作的?
8、S3C2410X的中断系统有哪些特点?相关的寄存器有哪些? 9、S3C2410X的中断控制器的工作过程是怎样的?对于IRQ,整 个中断过程是怎样的(中断控制器处理,向CPU请求,转到 中断入口,转去获得中断服务程序的首地址,执行中断服务 程序)? 10、编写一程序,使用外部中断EINT0,用中断方式对端口C做 数据输入。(注意对中断系统和相关引脚进行初始化) 提示:C语言指向特定地址的方法: (1)#define rGPCDAT (*(volatile unsigned *)0x56000024) (2)int *rGPCDAT=0x56000024; (3)int *rGPCDAT; rGPCDAT=0x56000024; 用第一种方法为好。 11、S3C2410X的定时器系统有哪些特点?由哪几部分构成?相 关的寄存器有哪些?是如何工作的?
12、编写一程序,使用tmer0产生并输出频率为 10KHz、占空比为12的方波。设 fpclk-=50MHz (注意对 timer和相关引脚初始化) 13、编写一程序,利用S3C2410X的PWM功能对 直流电机进行调速,要求使用 timer产生并输出频 率为10KHz占空比可变的方波进行控制,电机的 转速变化如下图所示。设fplk=50MHz。(注意 对tmer0和相关引脚初始化) 14、S3C2410X的串行v 接口UART有哪些特 点?由哪几部分构成? 相关的寄存器有哪些?00 2*t0 是如何工作的?
12、编写一程序,使用timer0产生并输出频率为 10KHz、占空比为1/2的方波。设f pclk=50MHz。 (注意对timer0和相关引脚初始化) 13、编写一程序,利用S3C2410X的PWM功能对一 直流电机进行调速,要求使用timer1产生并输出频 率为10KHz、占空比可变的方波进行控制,电机的 转速变化如下图所示。设f pclk=50MHz。(注意 对timer0和相关引脚初始化) t0 2*t0 t v 0 14、S3C2410X的串行 接口UART有哪些特 点?由哪几部分构成? 相关的寄存器有哪些? 是如何工作的?