2.96k likes | 3.08k Views
嵌入式系统讲义 第 4 章 S3C2410X 系统结构. 周国运 2007.3. 第三章习题解答 1 、 ARM 指令中的第二操作数“ operand2” 有哪些具体形式? 解:有三种:寄存器、寄存器移位、 8 位位图立即数。. 2 、 对于 ARM 的变址寻址方式,有基地址和偏移地址两部分组成。( 1 )基地址可以是哪些寄存器?( 2 )偏移地址可以有哪些形式?( 3 )总地址的计算方法有哪些?怎么表示?( 4 )变址寻址应用于哪些指令? 解:( 1 )基地址可以是通用寄存器 R0---R15 中的任意一个。
E N D
嵌入式系统讲义第4章 S3C2410X系统结构 周国运 2007.3
第三章习题解答 1、 ARM指令中的第二操作数“operand2”有哪些具体形式? 解:有三种:寄存器、寄存器移位、8位位图立即数。
2、 对于ARM的变址寻址方式,有基地址和偏移地址两部分组成。(1)基地址可以是哪些寄存器?(2)偏移地址可以有哪些形式?(3)总地址的计算方法有哪些?怎么表示?(4)变址寻址应用于哪些指令?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、 存储器从0x400000开始的100个单元中存放着ASCII码,编写程序,将其所有的小写字母转换成大写字母,对其它的ASCII码不做变换。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、 编写程序,比较存储器中0x400000和0x400004两无符号字数据的大小,并且将比较结果存于0x400008的字中,若两数相等其结果记为0,若前者大于后者其结果记为1,若前者小于后者其结果记为-1。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,=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的运算。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的Flash有哪些特点? 5、S3C2410X的DMA有哪些特点?其工作过程是怎样的?每个通道配置有哪些寄存器? 6、S3C2410X的A/D转换器有哪些特点?有哪些相关的寄存器? 7、编写一程序,用查询的方式,对S3C2410X的A/D转换器的第0通道连续进行100次A/D转换,然后将其结果求平均值。注意:A/D转换器有独立的模拟信号输入引脚AIN0---AIN9。
8、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的定时器系统有哪些特点?由哪几部分构成?相关的寄存器有哪些?是如何工作的?
v 0 t0 2*t0 t 12、编写一程序,使用timer0产生并输出频率为10KHz、占空比为1/2的方波。设fpclk=50MHz。(注意对timer0和相关引脚初始化) 13、编写一程序,利用S3C2410X的PWM功能对一直流电机进行调速,要求使用timer1产生并输出频率为10KHz、占空比可变的方波进行控制,电机的转速变化如下图所示。设fpclk=50MHz。(注意对timer0和相关引脚初始化) 14、S3C2410X的串行接口UART有哪些特点?由哪几部分构成?相关的寄存器有哪些?是如何工作的?
15、编写一程序,使用S3C2410X的UART2进行串行数据收发,要求用脉冲请求中断的方式、使用收/发FIFO,8个数据位、1个停止位、不校验,波特率为125kb/s。设Pclk为50MHz。(提示:主程序对UART2初始化、引脚配置、中断初始化等,并进行一次发送;中断服务程序进行收发,并且清除中断请求标志和中断服务标志)15、编写一程序,使用S3C2410X的UART2进行串行数据收发,要求用脉冲请求中断的方式、使用收/发FIFO,8个数据位、1个停止位、不校验,波特率为125kb/s。设Pclk为50MHz。(提示:主程序对UART2初始化、引脚配置、中断初始化等,并进行一次发送;中断服务程序进行收发,并且清除中断请求标志和中断服务标志) 16、S3C2410X的SPI接口有哪些特点?由哪几部分构成?相关的寄存器有哪些?是如何工作的? 17、编写一程序,使用S3C2410X的UART2进行串行数据收发,要求用脉冲请求中断的方式、使用收/发FIFO,8个数据位、1个停止位、不校验,波特率为125kb/s。设Pclk为50MHz。(提示:主程序对UART2初始化、引脚配置、中断初始化等,并进行一次发送;中断服务程序进行收发,并且清除中断请求标志和中断服务标志)
18、 把S3C2410的SPI0设为主设备,同时把SPI1设为从设备,将二者的MOSI、MISO交叉相连,二者的SCL对连, 用GPG0引脚控制nSS1。编写程序, SPI0用中断方式、 SPI1用查询方式,采用格式B、1Mb/s的波特率,SPI0发送数据、SPI1接收数据,发送、接收100个字节的数据。设系统Pclk=50MHz。
第4章 S3C2410X系统结构 主要内容 4.1 S3C2410X概述 4.2 存储器配置 4.3 DMA 4.4 ADC和触摸屏接口 4.5 中断控制器 4.6 I/O端口 4.7 PWM 4.8 UART接口 4.9 SPI接口 4.10 IIC接口 4.11 RTC 4.12时钟和电源管理 4.13看门狗 4.14 其它接口
4.14 其它接口 1、 USB接口 2、 LCD控制器 3、 SD接口 4、 IIS接口
4.1 S3C2410X概述 主要内容 • 主要特性 • 系统结构 • 引脚信号
4.1 S3C2410X概述 S3C2410X是韩国三星公司推出的16/32位RISC微控制器,其CPU采用的是ARM920T内核,加上丰富的片内外设,为手持设备和其它应用,提供了低价格、低功耗、高性能微控制器的解决方案。 一、主要特性 • 具有16KB指令Cache、 16KB数据Cache和存储器管理单元MMU。 • 外部存储器控制器,可扩展8组,每组128MB,总容量达1GB;支持从Nand flash存储器启动。
55个中断源,可以设定1个为快速中断,有24个外部中断,并且触发方式可以设定。55个中断源,可以设定1个为快速中断,有24个外部中断,并且触发方式可以设定。 • 4通道的DMA,并且有外部请求引脚。 • 3个通道的UART,带有16字节的TX/RX FIFO,支持IrDA1.0功能。 • 具有2通道的SPI、1个通道的IIC串行总线接口和1个通道的IIS音频总线接口。 • 有2个USB主机总线的端口,1个USB设备总线的端口。 • 有4个具有PWM功能的16位定时器和1个16位内部定时器。 • 8通道的10位A/D转换器,最高速率可达500kB/s;提供有触摸屏接口。 • 具有117个通用I/O口和24通道的外部中断源。
兼容MMC的SD卡接口。 • 具有电源管理功能,可以使系统以普通方式、慢速方式、空闲方式和掉电方式工作。 • 看门狗定时器。 • 具有日历功能的RTC。 • 有LCD控制器,支持4K色的STN和256K色的TFT,配置有DMA通道。 • 具有PLL功能的时钟发生器,时钟频率高达203MHz。 • 双电源系统:1.8/2.0V内核供电,3.3V存储器和I/O供电。
二、系统结构 主要由两大部分构成: ARM920T内核 片内外设。
1、ARM920T内核 由三部分:ARM9内核ARM9TDMI、32KB的Cache、MMU。
2、片内外设 分为高速外设和低速外设,分别用AHB总线和APB总线。
三、引脚信号 S3C微控制器是272-FBGA封装。 其信号可以分成 addr0---addr26、 Data0---data31、 GPA0---GPA22 GPB10、GPC15、 GPD15、GPE15、 GPF7、GPG15、 GPH10、EINT23、 nGCS0—nGCS7、 AIN7、IIC、SPI、 OM0---OM3 等,大部分都是复用的
4.2 S3C2410X的存储器 主要内容 • 存储器配置 • 存储器概述 • 控制寄存器 • Flash及控制器 • Flash控制器概述 • 控制器主要特性 • 控制器的寄存器 • 控制器的工作原理
4.2 存储器配置 4.2.1 S3C2410X的存储器配置 一、概 述 S3C2410X的存储器管理器提供访问外部存储器的所有控制信号:26位地址信号、32位数据信号、8个片选信号、以及读/写控制信号等。 S3C2410X的存储空间分成8组,最大容量是1GB,bank0---bank5为固定128MB,bank6和bank7的容量可编程改变,可以是2、4、8、16、32、64、128MB,并且bank7的开始地址与bank6的结束地址相连接,但是二者的容量必须相等。 bank0可以作为引导ROM,其数据线宽只能是16位和32位,复位时由OM0、OM1引脚确定;其它存储器的数据线宽可以是8位、16位和32位。 S3C2410X的存储器格式,可以编程设置为大端格式,也可以设置为小端格式。
第9次到 此此 二、存储器的控制寄存器 内存控制器为访问外部存储空间提供存储器控制信号, S3C2410X存储器控制器共有13个寄存器。
1、总线宽度和等待控制寄存器 STn:控制存储器组n的UB/LB引脚输出信号。 1:使UB/LB与nBE[3:0]相连; 0:使UB/LB与nWBE[3:0]相连 WSn:使用/禁用存储器组n的WAIT状态 1:使能WAIT;0:禁止WAIT DWn:控制存储器组n的数据线宽 00:8位;01:16位;10:32位;11:保留
2、BANKn---存储器组控制寄存器(n=0--5) Tacs:设置nGCSn有效前地址的建立时间 00:0个;01:1个;10:2个;11:4个时钟周期 Tcos:设置nOE有效前片选信号的建立时间 00:0个;01:1个;10:2个;11:4个时钟周期 Tacc:访问周期 000:1个;001:2个;010:3个;011:4个时钟 100:6个:101:8个;110:10个;111:14个
Tcoh:nOE无效后片选信号的保持时间 00:0个;01:1个;10:2个;11:4个时钟 Tcah: nGCSn无效后地址信号的保持时间 00:0个;01:1个;10:2个;11:4个时钟 Tacp:页模式的访问周期 00:2个;01:3个;10:4个;11:6个时钟 PMC:页模式的配置,每次读写的数据数 00:1个;01:4个;10:8个;11:16个 注:00为通常模式。 注:紫色为实验箱上的配置,其值为0x0700
3、BANK6/7---存储器组6/7控制寄存器 MT:设置存储器类型 00:ROM或者SRAM,[3:0]为Tacp和PMC; 11:SDRAM, [3:0]为Trcd和SCAN;01、10:保留 Trcd:由行地址信号切换到列地址信号的延时时钟数 00:2个时钟;01:3个时钟;10:4个时钟 SCAN:列地址位数 00:8位; 01:9位; 10:10位
4、REFRESH---刷新控制寄存器 REFEN:刷新控制。 1:使能刷新;0:禁止刷新 TREFMD:刷新方式。 1:自刷新 0:自动刷新 Trp:设置SDRAM行刷新时间(时钟数) 00:2个时钟;01:3个;10:3个;11:4个时钟 Tsrc:设置SDRAM行操作时间(时钟数) 00:4个时钟;01:5个;10:6个;11:7个时钟 注: SDRAM的行周期= Trp + Tsrc。 Refresh_count:刷新计数值
Refresh_count:刷新计数器值 计算公式: 刷新周期=(211- Refresh_count+1)/HCLK 例子:设刷新周期=15.6µs,HCLK=60MHz 则 刷新计数器值=211+1-60×15.6=1113 1113=0x459=0b10001011001
5、BANKSIZE---BANK6/7组大小控制寄存器 高24位未用。 BURST_EN:ARM突发操作控制 0:禁止突发操作;1:可突发操作 SCKE_EN:SCKE使能控制SDRAM省电模式 0:关闭省电模式;1:使能省电模式 SCLK_EN:SCLK省电控制,使其只在SDRAM访问周期内使能SCLK 0:SCLK一直有效;1:SCLK只在访问期间有效 BK76MAP:控制BANK6/7的大小及映射
BK76MAP:控制BANK6/7的大小及映射 100:2MB; 101:4MB; 110:8MB 111:16MB; 000:32MB; 001:64MB 010:128MB
6、MRSRB6/7---BANK6/7模式设置寄存器 WBL:突发写的长度。0:固定长度;1:保留 TM:测试模式。 00:模式寄存器集;其它保留 CL:列地址反应时间 000:1个时钟;010:2个时钟; 011:3个时钟;其它保留 BT:猝发类型 0:连续; 1:保留 BL:猝发时间000:1个时钟;其它保留
4.2.2 Nand Flash及其控制器 主要内容 1、Nand Flash控制器概述 2、控制器主要特性 3、控制器的寄存器 4、控制器的工作原理
4.2.2 Nand Flash及其控制器 Nor flash存储器:读速度高,而擦、写速度低,容量小,价格高。 Nand flash存储器:读速度不如Nor flash,而擦、写速度高,容量大,价格低。有取代磁盘的趋势。 因此,现在不少用户从Nand flash启动和引导系统,而在SDRAM上执 行主程序代码。 一、Nand Flash控制器概述 S3C2410X微控制器从Nand flash的引导功能:其内部有一个叫做“起步石(Steppingstone)”的 SRAM缓冲器,系统 启动时,Nand flash存储器的前面4KByte字节将被自动载入到起步石中,然后系统自动执行这些载入的引导代码。引导代 码执行完毕后,自动跳转到SDRAM执行。 Nand flash操作的校验功能:使用S3C2410X内部硬件ECC功能可以对Nand flash的数据进行有效性的检测。
二、 Nand Flash控制器主要特性 • Nand Flash模式:支持读/擦/编程Nand flash存储器。 • 自动导入模式:复位后,引导代码被送入Steppingstone,传送后,引导代码在 Steppingstone中执行。 • 具有硬件ECC(纠错码)功能:硬件产生纠错代码。 • 内部4KB的SRAM缓冲器Steppingstone,在Nand flash引导后可以作为其他用途使用。
主要由6部分组成 引脚信号: CLE:命令锁存 R/nB :就绪/忙 Nand Flash控制器功能框图
1、NFCON---Flash配置寄存器 NFEN:NF控制器使能控制 0:禁止使用; 1:允许使用 IECC:初始化ECC编码/解码器控制位 0:不初始化ECC; 1:初始化ECC NFCE:NF片选信号nFCE控制位持续时间设置 0: nFCE为低有效; 0: nFCE为高无效 TACLE:CLE/ALE持续时间设置值(0---7) 持续时间=HCLK * (TACLS + 1) CLE/ALE :命令/地址锁存允许
TWRPH0:写信号持续时间设置值(0~7) 持续时间=HCLK * (TWRPH0+1) TWRPH1:写信号无效后CLE/ALE保持时间设置值(0~7) 持续时间=HCLK * (TWRPH1+1) 2、NFCMD---Flash命令寄存器
3、NFADDR---Flash地址寄存器 高24位未用,低8位为读入或者写出的数据 高24位未用,低8位为Flash存储器地址值 4、NFDATA---Flash数据寄存器
5、NFSTAT---Flash状态寄存器 RnB:Nand Flash存储器状态位 0:存储器忙; 1:存储器准备好 6、NFECC---Flash错误校正码寄存器
四、Nand Flash 控制器的工作原理 1、自动导入启动代码步骤 • 完成复位。 • 如果自动导入模式使能,Nand flash存储器的前面4K字节被自动拷贝到Steppingstone 内部缓冲器中。 • Steppingstone被映射到nGCS0对应的BANK0存储空间。 • CPU在Steppingstone的4-KB内部缓冲器中开始执行引导代码。 注意: 在自动导入模式下,不进行ECC检测。因此,Nand flash的前4KB应确保不能有位错误(一 般Nandflash厂家都确保)。
2、Nand FLASH模式配置 • 通过NFCONF寄存器配置Nand flash; • 写Nand flash命令到NFCMD寄存器; • 写Nand flash地址到NFADDR寄存器; • 在读写数据时,通过NFSTAT寄存器来获得Nand flash的状态信息。应该在读操作前或写入 之后检查R/nB信号(准备好/忙信号)。 • 在读写操作后要查询校验错误代码,对错误进行纠正。
3、系统引导和 Nand FLASH 配置 • OM[1:0] = 00b:使能Nand flash控制器自动导入模式; OM[3:0]为芯片引脚,设置引导模式、存储器bank0的数据宽度、时钟模式等。 OM[1:0] = 01b、10b: bank0数据宽度为16位、32位 OM[1:0]=11b:测试模式 • Nand flash的存储页面大小应该为512字节。 • NCON :Nand flash 寻址步骤数选择 0:3步寻址; 1:4步寻址
4、Nand Flash操作的校验问题 S3C2410A在写/读操作时,每512字节数据自动产生3字节的ECC奇偶代码(24位)。 24位 ECC 奇偶代码=18位行奇偶 + 6位列奇偶 ECC产生模块执行以下步骤: • 当MCU写数据到Nand时,ECC产生模块生成ECC代码。 • 当MCU从Nand读数据时,ECC产生模块生成ECC代码同时用户程序将它与先前写入时产 生的ECC代码比较。