版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、第第 6 章章 嵌入式最小系统设计嵌入式最小系统设计第一节系统设计概述第二节s3c44b0x概述第三节系统硬件基本单元电路设计第四节s3c44b0x 启动程序设计第一节 系统设计概述 图6.1为嵌入式最小系统原理框图, 如图中所示一个嵌入式控制器自己是不能独立工作的,必须给它提供电源,加上时钟信号、复位信号,如果芯片没有片内程序存储器,则还要加上存储器系统,然后嵌入式控制器才可能工作。其中存储器系统是可选的,这是因为很多面向嵌入式领域的嵌入式微控制器内部设计了程序存储器和数据存储器。这些提供嵌入式控制器运行所必须条件的电路与嵌入式控制器共同构成了嵌入式的最小系统。而大多数基于arm7处理器核的
2、微控制器都有调试接口,这部分在芯片实际工作时不是必需的,但在开发时很重要,所以把这部分也归入最小系统中。 图6.1 最小系统原理框图嵌入式控制器时钟系统调试测试接口复位及其配置系统存储器系统供电系统(电源) 图图6.2是一个典型的嵌入式系统硬件结构框图是一个典型的嵌入式系统硬件结构框图,部分基本功能描述如下: 8 段 数码显示 8 段驱动器 ide 接口 db9 串口 db9 串口 rs232 驱动器 rs232 驱动器 iis 接口 控制器 音频 rom flash flash 固态硬盘 ics& tsp 接口 接口 以太网 10mhz magnetic mac+ phy lcd usb 接
3、口 usb 控制器 sdram mcu s3c44b0x 44 键盘 接口 电源开关 电源 2.5v 3.3 v 扩展接口 扩展接口 eeprom i2c jtag 接口 button 复位 lcd v复位电路可完成系统上电复位和在系统工作时用户按键复位。v电源电路为s3c44b0x及其他需要3.3v电源的外围电路供电。v晶振为系统提供工作时钟,通过片内pll(时钟发生器)电路倍频作为微处理器的工作时钟。vflash存储器可存放已调试好的用户应用程序、嵌入式操作系统或其他在系统掉电后需要保存的用户数据等。vsdram存储器作为系统运行时的主要区域,系统及用户数据、堆栈均位于sdram存储器中。
4、vjtag接口可对芯片内部的所有部件进行访问,通过该接口可对系统进行调试、编程等。v系统总线扩展引出了数据总线、地址总线和必需的控制总线,便于用户根据自身的特定要求扩展外围电路。v串行接口电路用于系统与其他应用系统的短距离双向串行通信。v10 m以太网接口为系统提供以太网接入的物理通道,通过该接口,系统可以10mb/s的速率接入以太网。第二节 s3c44b0x概述6.2.1 s3c44b0x 引脚及信号描述6.2.2 s3c44b0x 特性6.2.3 arm 存储器6.2.4 s3c44b0x 存储控制器第二节 s3c44b0x概述 s3c44b0x微处理器是三星公司生产的基于arm7tdmi
5、核的微处理器,采用0.25m cmos工艺制造,并在arm7tdmi核基本功能的基础上集成了丰富的外围功能模块,便于低成本设计嵌入式应用系统。片上集成的主要功能如下片上集成的主要功能如下:l在arm7tdmi基础上增加8 kb的cache。l外部扩充存储器控制器(fp/edo/sdram控制,片选逻辑)。llcd控制器(最大支持256色的dstn),并带有1个lcd专用dma通道。l2个通用dma通道/2个带外部请求引脚的dma通道。l2个带有握手协议的uart和1个sio。l1个多主的ic总线控制器。l1个iis总线控制器。l5个pwm定时器及1个内部定时器。l看门狗定时器。l71个通用可编
6、程i/o口,8个外部中断源。l功耗控制模式是正常、低、休眠和停止。l8路10位adc。l具有日历功能的rtc(实时时钟)。lpll时钟发生器。6.2.1 s3c44b0x 引脚及信号描述s3c44b0x引脚如图引脚如图6.3所示所示。 d a t a 1 3 d a t a 1 2 d a t a 1 1 d a t a 1 0 v d d i o v s s i o d a t a 9 d a t a 8 d a t a 7 d a t a 6 d a t a 5 d a t a 4 d a t a 3 d a t a 2 d a t a 1 d a t a 0 a d d r 2 3 g
7、p a 9 v d d v s s a d d r 2 3 g p a 8 a d d r 2 2 g p a 7 a d d r 2 1 g p a 6 a d d r 2 0 g p a 5 a d d r 1 9 g p a 4 a d d r 1 8 g p a 3 a d d r 1 7 g p a 2 a d d r 1 6 g p a 1 a d d r 1 5 a d d r 1 4 a d d r 1 3 a d d r 1 2 v s s i o a d d r 1 1 a d d r 1 0 a d d r 9 a d d r 8 a d d r 7 a d d r 6
8、a d d r 5 a d d r 4 1 2 1 1 2 2 1 2 4 1 2 5 1 2 6 1 2 7 1 2 8 1 2 9 1 3 0 1 3 1 1 3 2 1 3 3 1 3 4 1 3 5 1 3 6 1 3 7 1 3 8 1 3 9 1 4 0 1 4 1 1 4 2 1 4 3 1 4 4 1 4 5 1 4 6 1 4 7 1 4 8 1 4 9 1 5 0 1 5 1 1 5 2 1 5 3 1 5 4 1 5 5 1 5 6 1 5 7 1 5 8 1 5 9 1 6 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 1
9、9 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 8 0 7 9 7 8 7 7 7 6 7 5 7 4 7 3 7 2 7 1 7 0 6 9 6 8 6 7 6 6 6 5 6 4 6 3 6 2 6 1 6 0 5 9 5 8 5 7 5 6 5 5 5 4 5 3 5 2 5 1 5 0 4 9 4 8 4 7 4 6 4 5 4 4 4 3 4 2 4 1 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 10
10、4 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 exint6msdogpg6 exint5msdogpg5 exint4msdogpg4 exint3msdogpg3 exint2msdogpg2 vss vdd exint1nd5gpg1 exint0nd5gpg0 nxdackonxbackgpf3 nxdrckonxbackgpf4 nwaitgpf2 sclkgpb1 sckegpb0 ngcs7mscs1mras1 ngcs6mscs0mras0 ngcs5gpb10 ngcs4gpb9 vss vd
11、d ngcs3gpb8 ngcs2gpb7 ngcs1gpb6 ngcs0 nwe noe nbe3nwbe3dqm3gpb5 nbe2nwbe2dqm2gpb4 nbe1nwbe1dqm1 nbe0nwbe0dqm0 vssio vddio ncas3nsrasgpb3 ncas2nscasgpb2 ncas1 ncas0 addrggpa0 addr1 addr2 addr3 a n 5 a n 4 a n 3 a n 2 a n 1 a n 0 v s s a d c v s s i d t o u t 4 / v d 7 g p e 7 t o u t 3 / v d 6 g p e
12、6 t o u t 2 / t c l k g p e 5 t o u t 1 / t c l k g p e 4 t o u t q g p e 3 e x t c l k p l l c a p e a t a l 0 x t a l 0 v s s v d d i c s c u g p f 0 i c s c a g p f 1 s o t x d n r t s w s l r c x g p f 5 s o r d y / t x d 1 / s d d / g f f 5 s o r x d / r x d 1 / s d 1 / g f f 7 s o c l k / c t
13、s 1 / i s c l k / g f f 8 c m 3 c m 2 c m 1 c m 0 n r e s e t c l k o u t g p e 0 v s s i o v d d i o t d 0 t d 1 t m s t c k n t r s t e x n t 7 / s l r c k / g f g 7 an6 an7 areft arefb avoom vddadc xtal1 extal1 vddrtc vsso vframe/gpd7 vm/gpd6 vlne/gpd6 vclk/gpd4 vd3/gpd3 vd2/gpd2 vd1/gpd1 vd0/gpd
14、0 rxd0/gpe2 txd0/gpe1 data31/ncts0/gpc15 data30/ncts0/gpc14 data29/rxd1/gpc13 data28/txd1/gpc12 data27/ncts1/gpc11 data26/nrts1/gpc10 data25/nxdreq1/gpc9 data24/nxdack1/gpc8 vdd vss data23/vd4/gpc7 data22/vd5/gpc6 data21/vd6/gpc5 data20/vd7/gpc4 data19/sclk/gpc3 data18/sd/gpc2 data17/sdo/gpc1 data16
15、/slrck/gpc0 data15 data14 s 3 c 4 4 b 0 x 1 6 0 - q f p s3c44b0x引脚信号的详细描述见表引脚信号的详细描述见表6.1。表6.1 s3c44b0x引脚信号详细描述6.2.2 s3c44b0x 特性 1. 体系结构体系结构l集成了手持设备和通用嵌入式系统应用的解决方案。l16/32位risc体系结构和arm7tdmi处理器内核强大的指令体系。lthumb代码压缩机,最大代码密度同时保持了32位指令的性能。l基于jtag的片上集成ice调试支持解决方案。l328的硬件乘法器。l实现低功耗samba ii(三星arm处理器嵌入式微控制器总线
16、体系结构)的新型总线结构。 2系统管理器系统管理器l支持大、小端模式(通过外部引脚来选择)。l包含8个地址空间,每个地址空间为32 mb,总共有256 mb。l所有地址空间都可以通过编程设置为8位、16位或32位宽数据对齐访问。l8个地址空间中,6个地址空间可用于rom、sram等存储器,2个用于rom、sram、fp/edo/sdram等存储器。l7个起始地址固定及大小可编程的地址空间。l1个起始地址及大小可变的地址空间。l所有存储器空间的访问周期都可通过编程配置。l提供外部扩展总线的等待周期。l在低功耗模式下支持dram/sdarm自动刷新。l支持地址对称或非地址对称的dram。3. ca
17、che和片内和片内sraml4路相连统一的8kb指令/数据cache。l未作为cache使用的0/4/8kb cache存储空间可作为片内sram使用。lcache伪lru(最近最少使用)的替换算法。l通过在主内存和缓冲区内容之间保持一致的方式写内存。l具有4级深度的写缓冲。l当缓冲区出错时,请求数据填充。v4. 时钟和功耗管理时钟和功耗管理l低功耗。l片上pll使得mcu的工作时钟频率最高为66mhz。l时钟可通过软件选择性地反馈回每个功能块。l功耗管理模式为:l正常模式:正常运行模式。l低速模式:不带pll的低频时钟。l休眠模式:使cpu的时钟停止。l停止模式:所有时钟都停止。leint7
18、:0或rtc警告中断可使功耗管理从停止模式中唤醒。 5. 中断控制器中断控制器u30个中断源(1个看门狗定时器中断、6个定时器中断、6个uart中断、8个外部中断、4个dma中断、2个rtc中断、1个adc中断、1个i2 c中断和1个sio中断)。u矢量irq中断模式缩短中断响应周期。u外部中断源的电平/边沿模式。u可编程的电平/边沿极性。u支持紧急中断请求的fiq(快速中断请求)。6. 带带pwm的定时器的定时器(脉宽可调制脉宽可调制)u5个16位带pwm的定时器,1个16位基于dma或基于中断的内部定时器。u可编程的工作周期、频率和极性。u死区产生器。u支持外部时钟源。7. 实时时钟实时时
19、钟rtc充分的时钟特性:毫秒、秒、分、时、天、星期、月、年。32.768 khz时钟。cpu唤醒的警告中断。可产生时钟节拍中断。8. 通用输入通用输入/输出端口输出端口l8个外部中断端口。l71个(多功能)复用输入/输出口。9. uartl2个基于dma或基于中断的uart。l支持5位、6位、7位、8位串行数据传送/接收l在传送/接收时支持硬件握手。l波特率可编程。l支持irda 1.0(115.2 kb/s)。l用于回环测试模式。l每个通道有2个用于接收和发送的内部32字节fifo。10. dma控制器控制器2路通用的无cpu干涉的dma控制器。2路dma桥(外设dma)控制器。支持i/o到
20、内存、内存到i/o、i/o到i/o的桥式dma传送,有6种dma请求方式软件、4个内部功能块(uart、sio、实时器和iis)和外部引脚。dma之间优先级次序可编程。突发传送模式提高了fpdram、edodram和sdram的传送率。支持内存到外围设备的fly-by模式和外围设备到内存的传送模式。 11. a/d转换转换8通道多路adc。最高转换速率100 kb/s/10b。 12. lcd控制器控制器n支持彩色/单色/灰度lcd。n支持单扫描和双扫描显示。n支持虚拟显示功能。n系统内存可作为显示内存。n专用dma用于从系统内存中提取图像数据。n可编程屏幕大小。n16级灰度。n彩色模式为25
21、6色。 13. 看门狗定时器看门狗定时器l16位看门狗定时器。l定时中断请求或系统超时复位。14. i2 c总线接口总线接口n1个基于中断操作的多主的i2 c总线。n8位双向串行数据传送器能够工作于100 kb/s的标准模式和400 kb/s的快速模式。15. iis总线接口总线接口u1路基于dma操作的音频iis总线接口。u每通道8/16位串行数据传送。u支持msb可调整的数据格式。16. sio(同步串行同步串行i/o)1路基于dma或基于中断的sio。波特率可编程。支持8位sio的串行数据传送/接收操作。17. 工作电压范围工作电压范围内核:2.5 v。i/o:3.03.6 v。18.
22、工作频率工作频率最高达66mhz。19. 封装封装160lqfp/160fbga。6.2.3 arm 存储器 在现代soc设计中,为了实现高性能,微处理器核必须连接一个容量大、速度高的存储器系统。如果存储器容量太小,就不能存储足够大的程序来使处理器全力处理,如果速度太慢,就不能像处理器执行指令那样快地提供指令。但一般存储器容量大,速度相对会慢。因此,设计一个足够大又足够快的单一存储器,使高性能处理器充分发挥其能力,是有一定困难的,一般的解决方法是构建一个复合的存储器系统,这就是普遍使用的多级存储器层次的概念。 多级存储器包括一个容量小但速度快的从存储器,以及一个容量大但速度慢的主存储器。容量小
23、但速度快的元件是cache,能自动保存处理器经常用到的指令和数据的复制。根据典型程序的实验统计,这个存储器系统的外部行为在绝大部分时间像一个既大又快的存储器。2级存储器原理可扩展为多级存储器层次,如cache、主存和硬盘构成3级存储层次(嵌入式系统目前多是2级的)。这里首先对arm支持的存储数据类型和处理器中数据存储格式进行介绍,建立起arm处理器的存储体系的概念。 1. 存储数据类型和存储格式存储数据类型和存储格式 (1)数据类型)数据类型 arm处理器支持以下6种数据类型(较早的arm处理器不支持半字和有符号字节):l8位有符号和无符号字节。l16位有符号和无符号半字,它们以2字节的边界对
24、齐。l32位有符号和无符号字,它们以4字节的边界对齐。 arm指令全是32位的字,并且必须以字为单位边界对齐。thumb指令是16位半字,而且必须以2字节为单位边界对齐。 在内部,所有arm操作都面向32位的操作数,只有数据传送指令支持较短的字节和半字的数据类型。当从存储器调入一个字节或半字时,根据指令对数据的操作类型,将其无符号0或有符号“符号位”扩展为32位,进而作为32位数据在内部进行处理。 arm协处理器可以支持其他数据类型,特别是定义了一些表示浮点数的数据类型。在arm核内没有明确地支持这些数据类型,然而在没有浮点协处理器的情况下,这些类型可由软件用上述标准类型来解释。 (2)存储器
25、组织)存储器组织在以字节为单位寻址的存储器中有小端和大端两种方式存储字,这两种方式是根据最低有效字节与相邻较高有效字节相比,是存放在较低的地址还是较高的地址来划分的。两种存储方式如图6.4所示。l小端模式:较高的有效字节存放在较高的存储器地址,较低的有效字节存放在较低的存储器地址。l大端模式:较高的有效字节存放在较低的存储器地址,较低的有效字节存放在较高的存储器地址。 arm处理器能方便地配置为其中任何一种存储器方式,但其默认设置为小端模式。在本书中将采用小端模式。(a)小端存储器组织图 (b)大端存储器组织图图图6.4 小端和大端存储器组织小端和大端存储器组织23 22 21 20 位31
26、位0 19 18 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0 字16 半字14 半字12 字8 字节6 字节4 字节3 字节2 字节1 字节0 字节 地址 20 21 22 23 位31 位0 16 17 18 19 12 13 14 15 8 9 10 11 4 5 6 7 0 1 2 3 字16 半字12 半字14 字8 字节4 字节6 字节0 字节1 字节2 字节3 字节 地址 2. 存储器层次简介存储器层次简介存储层次的管理由计算机硬件和操作系统来完成,典型的计算机存储层次由多级构成,每级都有特定的容量及速度。(1)寄存器组)寄存器组微处理器
27、寄存器组可看作存储器层次的顶层。典型的risc微处理器大约有32个32位寄存器,总共128b,其访问时间为几ns。(2)片上)片上ram如果微处理器要达到最佳性能,采用片上存储器是必需的。它和片上的寄存器组具有同级的读/写速度。与片外存储器相比,它有较好的功耗效率,并减少了电磁干扰。许多嵌入式系统中采用简单的片上ram而不是cache,因为它简单、便宜、功耗低。但片上ram又不能太快(消耗太多功率)、太大(占用太多芯片面积),因为片上ram和片上寄存器组具有较高的实现成本,所以一般片上集成ram的容量是必须考虑的。 (3)片上)片上cache 片上cache存储器的容量为8k32 kb,访问时
28、间大概为10ns。高性能pc机系统可能有第2级片外cache,其容量为几百kb,访问时间为几十ns。arm cpu芯片采用多种cache组织结构。(4)主存储器)主存储器 嵌入式系统通常没有硬盘,主存储器可以是几mb到1gb的动态存储器,访问时间大约为50ns。6.2.4 s3c44b0x 存储控制器 在基于arm核的嵌入式应用系统中可能包含多种类型的片外存储器件,如flash、rom、sram和sdram等,而且不同类型的存储器件要求不同的速度、数据宽度等。为了对这些不同速度、类型、总线宽度的存储器进行管理,存储器管理控制器是必不可少的。在基于s3c44b0x处理器的嵌入式系统开发中,也是通
29、过存储控制器为片外存储器访问提供必要的控制信号,管理片外存储部件的。1. s3c44b0x存储器空间划分存储器空间划分 图6.5为s3c44b0x复位后的存储器地址分配图。图6.5 s3c44b0x复位后的存储器地址分配 srom /dram /sdram ( ngcs7) srom /dram /sdram ( ngcs6) 0 x10000000 0 x0e000000 srom ( ngcs5) 0 x0c000000 32m srom ( ngcs4) 0 x0a000000 32m srom ( ngcs3) 0 x08000000 32m srom ( ngcs2) 0 x0600
30、0000 32m srom ( ngcs1) 0 x04000000 32m srom ( ngcs0) 0 x01c00000 0 x02000000 2/4/8/16/32m b 2/4/8/16/32m b 参 考 表 256m b sa27 0 可 访 问 区 域 28m 4m b 特 殊 功 能 寄 存 器 0 x00000000 从图从图6.5中可以看出:中可以看出:l特殊功能寄存器位于0 x01c000000 x02000000的4mb空间内。lbank0bank5的起始地址和空间大小都是固定的。lbank6的起始地址是固定的,空间可配置为2/4/8/16/32mb。lbank7
31、的空间大小和bank6一样是可变的,也可配置为2/4/8/16/32 mb。bank6和bank7的详细地址与空间大小的关系可参考表6.2。 3. s3c44b0x存储控制器的特殊功能寄存器存储控制器所实现的功能主要是通过对其特殊功能寄存器的设置来进行的,下面将对各特殊功能寄存器进行介绍。 (1)总线宽度)总线宽度/等待控制寄存器等待控制寄存器总线宽度/等待控制寄存器(bwscon)见表6.6。它的设置决定了bank上的sram是否使用ub/lb(写高/低字节使能)、bank7上的sram存储器的等待状态、bank7的数据总线宽度、bank0的数据总线宽度以及存储模式。 (2)bank控制寄存
32、器控制寄存器bank控制寄存器(bankconn:ngcs0ngcs5)见表6.7和表6.8。其各位的设置决定了在ngcsn有效之前地址建立时间和在noe上芯片选择建立时间等。 注:bankcon0地址:0 x01c80004;r/w初始值:0 x0700;bankconl地址:0 x01c80008;r/w初始值:0 x0700;bankcon2地址:0 x01c8000c;r/w初始值:0 x0700;bankcon3地址:0 x0lc80010;r/w初始值:0 x0700;bankcon4地址:0 x01c80014;r/w初始值:0 x0700;bankcon5地址:0 x01c80
33、018;r/w初始值:0 x0700。(3)dram/sdram刷新控制寄存器刷新控制寄存器 dram/sdram刷新控制寄存器(refresh)见表6.9。它的设置决定了dram/sdram刷新是否允许、刷新模式、ras预充电时间、ras和cas最短时间、cas保持时间以及刷新计数值。 (5)bank6和和bank7模式设置寄存器模式设置寄存器 bank6和bank7模式设置寄存器(mrsr)见表6.11,它的设置主要决定bank6和bank7的存储模式.4. s3c44b0x存储器应用编程存储器应用编程 下面给出了存储器的两个编程实例,包括存储控制寄存器的配置和存储器的读/写。通过这两个简
34、单的例子,可以使读者对存储器的应用编程有一定的了解。(1)13个存储控制寄存器的配置示例个存储控制寄存器的配置示例13个存储控制寄存器配置如下所示:ldr r0,=smrdataldmia r0,r1-r13ldr r0,=0 x01c80000 ;bwscon addressstmia r0,r1-r13smr data:.long 0 x22221210 ;bwscon.long 0 x00000600 ;gcs0.long 0 x00000700 ;gcs1.long 0 x00000700 ;gcs2.long 0 x00000700 ;gcs3.long 0 x00000700 ;g
35、cs4.long 0 x00000700 ;gcs5.long 0 x0001002a ;gcs6,edo dram(trcd=3, ;tcas=2,tcp=1,can=10 bits).long 0 x0001002a ;gcs7,edo dram.long 0 x00960000+953 ;reflash(refen=1,trefmd=0,trp=3, ;trc=5,tchr=3).long 0 x0 ;bank size,32 mb/32mb.long 0 x20 ;mrsr 6(cl=2).long 0 x20 ;mrsr 7(cl=2) 观察上面寄存器介绍中的寄存器地址可发现,13个
36、寄存器分布在从0 x01c80000开始的连续地址空间。所以上面的程序先将各个寄存器需要配置的值从起始地址为smrdata的区域取出来,然后利用指令“stmia r0,r1r13”实现将配置好的寄存器的值依次写入到相应的寄存器中,这就完成了存储器13个控制寄存器的配置。 (2)存储器的读)存储器的读/写代码写代码存储器的读/写代码可用汇编语言来编写,也可用c语言来编写,如下所示:/*/*名称:srwramtest*功能:使用汇编语言读/写已初始化的ram区,即向一个存储器地址写一个字、半字、字节或者从一个存储器地址处读取一个字、半字、字节,分别用相应的ldr指令str,这在arm指令中有详细介
37、绍。*/srwramtest: ldr r2,=0 x0c010000 ldr r3,=0 x55aa55aa str r3,r2 /*将一个字0 x55aa55aa写入地址0 x0c010000*/ ldr r3,r2 /*从地址0 x0c010000处读取一个字*/ldr r2,=0 x0c010000 ldrb r3,r2 /*从地址0 x0c010000处读取一个半字*/ strb r3,r2,#1 /*地址加1后,向该地址写入一个字节*/*/*名称:crwramtest*功能:使用高级语言c读/写已初始化的ram区,即向已定义的指针变量赋值或将指针变量值赋给其他变量。这需要提前定义指
38、针变量并赋值,并且也要定义相应的普通变量。*/#define rwram (*(unsigned long *)0 x0c010200)void crwramtest(void) unsigned long *ptr=0 x0c010200; /定义一个长指针并赋初值 unsigned long *ptrh=0 x0c010200; /定义一个短指针并赋初值 unsigned long *ptrb=0 x0c010200;/定义一个字符指针并赋初值 unsigned char tmpd; /定义一个字符变量 unsigned char tmph; /定义一个短整型变量 unsigned cha
39、r tmpb; /定义一个长整型变量*ptr=0 xaa55aa55;tmpw=*ptr; /字长读*ptr=tmpw+1; /字长写tmph=*ptrh; /半字*ptrh=tmph+1; /字节5. s3c44b0x功能结构框图功能结构框图s3c44b0x体系结构的功能框图如图6.6所示。 第三节 系统硬件基本单元电路设计6.3.1 电源、复位、时钟电路和jtag接口6.3.2 flash 存储器接口电路6.3.3 sdram 存储器接口电路第三节 系统硬件基本单元电路设计 嵌入式系统的硬件是嵌入式系统软件环境运行的基础,它提供了软件运行的物理平台和通信接口。下面介绍嵌入式硬件系统设计的方
40、法。6.3.1 电源、复位、时钟电路和电源、复位、时钟电路和jtag接口接口1. 电源和复位电路电源和复位电路系统采用dc5v稳压电源进行供电,电源输入后经过两个稳压芯片产生3.3v和2.5v 电压,给mcu的i/o和arm内核供电,如图6.7所示。图图6.7 电源原理图电源原理图 v d d 3 3 v d d 3 3 v d d 2 5 in in r 1 0 k c 1 0 c 1 0 g n d g n d g n d 电 池 s w f u s e 5 0 0 m a p o w e r c 1 0 0 在系统中,复位电路主要完成系统的上电复位和系统在运行时用户的按键复位功能。复位电
41、路可由简单的rc电路构成,也可使用其他的相对较复杂,但功能更完善的电路。本系统采用较简单的rc复位电路,如图6.8所示。该复位电路的工作原理如下:在系统上电时,通过电阻r向电容c充电,当c两端的电压未达到高电平的门限电压时,reset端输出为低电平,系统处于复位状态;当c两端的电压达到高电平的门限电压时,reset端输出为高电平,系统进入正常工作状态。 图图6.8 时钟与复位时钟与复位 vdd33 vdd33 extclk pllcap xtal0 nreset cpu 8m s c vdd33 当用户按下按钮s时,c两端的电荷被泄放掉,reset端输出为低电平,系统进入复位状态,再重复以上的
42、充电过程,系统进入正常工作状态。两级非门电路用于按钮去抖动和波形整形;通过调整r和c的参数,可调整复位状态的时间。 2. 晶振电路晶振电路 晶振电路用于向cpu及其他电路提供工作时钟, s3c44b0x的时钟源来自晶振,也可以是外部时钟。s3c44b0x的内部时钟发生器可产生cpu和外设所需要的时钟信号。时钟发生器有一个振荡器连接到外部的晶体上,同时片内的pll电路把低频振荡器的输出作为自己的输入,产生s3c44b0x所需要的高频信号,因此,系统可以较低的外部时钟信号获得较高的工作频率,以降低因高速开关时钟所造成的高频噪声。实时时钟通过mcu外接8mhn晶振和工作供电电路来实现,如图6.8所示
43、。输出的时钟频率fpllo和输入的参考时钟频率fin的关系式为: fpllo= (mfin) / (p2s) m = m(分频器m的分频值)+8 p = p (分频器p的分频值)+23. jtag接口接口jtag(joint test action group,联合测试行动小组)是一种国际标准测试协议,主要用于芯片内部测试及对系统进行仿真、调试,jtag技术是一种嵌入式调试技术,它在芯片内部封装了专门的测试电路tap(test access port,测试访问口),通过专用的jtag测试工具对内部节点进行测试。目前大多数比较复杂的器件都支持jtag协议,如arm、dsp和fpga器件等。标准的
44、jtag接口是4线:tms、tck、tdi和tdo,分别为测试模式选择、测试时钟、测试数据输入和测试数据输出,关于jtag的详细内容参见第9章。6.3.2 flash 存储器接口电路这里以embest s3cv40开发板存储系统为例,介绍flash存储器接口电路。如图6.9所示,电路采用一片1m16位的flash(sst39vfl60),flash rom采用标准总线接口与处理器交互,处理器通过片选ngcs0与片外flash芯片连接。由于是16位的flash,所以用cpu的地址线a1a20来分别与f1ash的地址线a0a19连接。f1ash的地址空间为0 x000000000 x0020000
45、0。flash rom的数据接口为dql50,因此,数据宽度是16位。又注意到处理器的addr201对应着flash rom的a190,偏移了1位,这是由于s3c44b0x是按照字节编址的,而flash rom是以16位为一个存储单元,因此,处理器的地址“左移”1位,采用addrl与flash rom的a0相连。由于flash rom映射在处理器的bank0区域内,因此,它的片选线与处理器的ngcs0相连。 6.3.3 sdram 存储器接口电路与与flash存储器相比较,存储器相比较,sdram不具有掉电保持数据的不具有掉电保持数据的特性,但其存取速度大大高于特性,但其存取速度大大高于fla
46、sh存储器,且具有读存储器,且具有读/写的属写的属性,因此,性,因此,sdram在系统中主要用作程序的运行空间,数据在系统中主要用作程序的运行空间,数据及堆栈区。当系统启动时,及堆栈区。当系统启动时,cpu首先从复位地址首先从复位地址0 x0处读取启处读取启动代码,在完成系统的初始化后,程序代码一般应调入动代码,在完成系统的初始化后,程序代码一般应调入sdram中运行,以中运行,以提高系统的运行速度,同时,系统及用户堆栈、运行数据也都放在提高系统的运行速度,同时,系统及用户堆栈、运行数据也都放在sdram中。中。如图如图6.10所示,所示,sdram分成分成4个个bank,每个,每个bank的
47、容量为的容量为1m16位。位。bank的地址由的地址由bal、ba0决定,决定,00对应对应bank0,01对应对应bankl,10对应对应bank2,11对应对应bank3。在每个。在每个bank中,分别用行地址脉中,分别用行地址脉冲选通冲选通ras和列地址脉冲选通和列地址脉冲选通cas进行寻址。系统为用户提供设置跳线,进行寻址。系统为用户提供设置跳线,作为升级作为升级sdram内存容量可至内存容量可至42m16位。具体方法是使位。具体方法是使sdram的的ba0、bal分别接至分别接至cpu的的a21、a22、a23脚。脚。sdram由由mcu专用专用sdram片选信号片选信号nscs0选
48、通,地址空间为选通,地址空间为0 x0c0000000 x0c7fffff。 图图6.9 sst39vf160与与s3c44b0x的接口电路的接口电路 图图6.10 sdram连接电路连接电路sst39vf160 a190 dq150 nce noe nwe s3c44b0x addr201 da ta150 ngcs0 noe nwe om0 om1 dq150 a(12-1)_ d(15-0) nsras nscas nscs0 noe dqm0 dqm1 a(11-0)_ d(15-0) nras ncas ncs nwe ldqm udqm a21 a22 a23 ba0 ba1 r1
49、 r2 r3 r4 unload unload 44b0x sdram 第四节 s3c44b0x 启动程序设计6.4.1 bootloader 介绍6.4.2 启动程序设计实例第四节 s3c44b0x 启动程序设计6.4.1 bootloader 介绍介绍 bootloader是系统加电后运行的第一段软件代码。在pc体系结构中,pc机的引导加载程序由bios和位于硬盘mbr中的引导程序一起组成。bios在完成硬件检测和资源分配后,将硬盘mbr中的引导程序读到系统的ram中,然后将控制权交给引导程序。引导程序的主要任务就是将内核映像从硬盘上读到ram中,然后跳转到内核的入口点去运行,即开始启动操
50、作系统。而在嵌入式系统中,通常没有像bios那样的固件程序,因此整个系统的加载启动任务就完全由bootloader完成。 在嵌入式系统中,bootloader的作用与pc机上的bios类似,通过bootloader可以完成对系统板上的主要部件如cpu、sdram、flash和串行口等进行初始化,也可以下载文件到系统板、对flash进行擦除与编程。bootloader在操作系统内核运行之前,可以初始化硬件设备、建立内存空间的映射图,从而将系统的软硬件环境带到一个合适的状态,以便为最终调用操作系统内核准备正确的环境。通常,bootloader是紧密围绕系统硬件对系统进行初始化的,根据实现的功能不同
51、,其复杂程度也各不相同。一个简单的bootloader程序可以仅完成串行口的初始化,并进行通信,而功能完善的bootloader可以支持比较复杂的命令集,对系统的软硬件资源进行合理的配置与管理。6.4.2 启动程序设计实例 这里以embest s3cv40开发板为例,介绍s3c44b0x启动程序设计。s3c44b0x没有存储区重映射功能,所有存储区地址固定,s3c44b0x提供矢量中断功能,减少了中断延迟。因此在s3c44b0x的启动程序中,矢量中断功能的出现导致扩展了向量表,同时为方便程序设计和在ram中调试,中断入口通过地址定义方式转移到ram区的最高端。1命令脚本命令脚本 在进行集成环境
52、与目标连接时、软件调试过程中以及复位目标板后,有时需要集成环境自动完成一些特定的功能,比如复位目标板、清除看门狗、屏蔽中断寄存器和存储区映射等,这些特定的功能可以通过执行一组命令序列完成,保存一组命令序列的文本文件称为命令脚本文件(command scripts file *.cs)。开发板的命令脚本文件ev40boot.cs源代码如下,具体功能的实现需要仔细分析。 reset; reset board memwrite 0 x01d30000 0 x00000000; watchdog timer control register,; disable watch dogmemwrite 0
53、x01e0000c 0 x07ffffff ; intmsk (disable all interrupt)memwrite 0 x01e00024 0 xffffffff; clear all interruptmemwrite 0 x01c80000 0 x11110102; bwscon memwrite 0 x01c80004 0 x00000600; bankcon0memwrite 0 x01c80008 0 x00007ffc; bankcon1memwrite 0 x01c8000c 0 x00007ffc; bankcon2memwrite 0 x01c80010 0 x00
54、007ffc; bankcon3memwrite 0 x01c80014 0 x00007ffc; bankcon4memwrite 0 x01c80018 0 x00007ffc; bankcon5memwrite 0 x01c8001c 0 x00018000; bankcon6memwrite 0 x01c80020 0 x00018000; bankcon7memwrite 0 x01c80024 0 x00860459; refreshmemwrite 0 x01c80028 0 x00000010; banksizememwrite 0 x01c8002c 0 x00000020;
55、 mrsrb6memwrite 0 x01c80030 0 x00000020; mrsrb72. 链接脚本链接脚本 在系统级别的嵌入式开发中需要使用链接定位文件,该文件描述代码链接定位的有关信息,包括代码段,数据段和地址段等,链接器必须使用该文件对整个系统的代码做正确的定位,该文件称为链接脚本文件(linker scripts file *.ld)。flash固化时使用的链接脚本文件为: sections . = 0 x00000000;image_ro_base = .;.text : *(.text) .rodata : *(.rodata) image_ro_limit = .;. =
56、 0 x0c000000;image_rw_base = .;.data : *(.data) image_rw_limit = .; image_zi_base = .;.bss : *(.bss) image_zi_limit = .;_bss_start_ = .;_bss_end_ = .;_eh_frame_begin_ = .;_eh_frame_end_ = .;provide (_stack = .); end = .; _end = .; .debug_info 0 : *(.debug_info) .debug_line0 : *(.debug_line) .debug_a
57、bbrev 0 : *(.debug_abbrev) .debug_frame 0 : *(.debug_frame) ram调试时使用的链接脚本文件为:sections. = 0 x0c000000;image_ro_base = .;.text : *(.text) image_ro_limit = .;image_rw_base = .;.data : *(.data) .rodata : *(.rodata) image_rw_limit = .;image_zi_base = .;.bss : *(.bss) image_zi_limit = .;_bss_start_ = .;_b
58、ss_end_ = .;_eh_frame_begin_ = .;_eh_frame_end_ = .;provide (_stack = .); end = .; _ end = .; .debug_info 0 : *(.debug_info) .debug_line0 : *(.debug_line) .debug_abbrev 0 : *(.debug_abbrev) .debug_frame 0 : *(.debug_frame) 3s3c44b0x的启动程序源代码的启动程序源代码 部分相似的中断入口定义和函数宏定义被省略,省略部分以“”代替并加了注释,读者在使用这些源代码作为启动程
59、序时,可以自行添加省略部分来修改程序。# * # 文件名: 44binit.s * # 说明: s3c44b0x启动文件 * # * # *# 寄存器定义及其位定义 # *.equ intmsk, 0 x01e0000c .equ wtcon, 0 x01d30000 .equ clkcon, 0 x01d80004 .equ locktime, 0 x01d8000c .equ fiqmode, 0 x11 .equ irqmode, 0 x12 .equ svcmode, 0 x13 .equ abortmode, 0 x17 .equ undefmode, 0 x1b .equ mode
60、mask, 0 x1f .equ noint, 0 xc0 .equ cpsr_irq_en, 0 x80 # *# 中断处理宏 # *.macro handler handlelabelsub sp, sp, #4 / 栈空间递减保存跳转地址 stmfd sp!, r0 / 保存工作寄存器r0到栈 ldr r0, =handlelabel / 载入中断入口地址所在位置到r0 ldr r0, r0 / 载入中断入口地址到r0 str r0, sp,#4 / 保存中断入口地址到栈 ldmfd sp!, r0,pc / 恢复工作寄存器并跳转到中断函数 .endm# *# 设置arm7中断和异常向量
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 包头轻工校车削加工技能(劳动版)教案学习情境二车削台阶轴类零件-子学习情境一认识车刀
- 《麻绳》小班美术教案 - 幼儿园美术教案
- 《液压传动》教案(劳动版)
- 临时广告投放合同
- 城市轨道交通招投标详解
- 生态农业发展公益林管理计划
- 电子商务平台交易信息保护规定
- 餐饮业宿舍电费管理规则
- 城市污水处理厂改造协议
- 企业社会责任激励管理办法
- 2023年学位英语真题及答案
- 机电材料见证取样复试
- 2024年秋新版人教版三年级英语上册电子课本
- 护理安全教育案例及分析(3篇模板)
- 关爱失智失能老年人(失智失能老人健康照护课件)
- 事业单位嫖娼违法写检讨书
- 2024年信息安全师考试题库及答案(含AB卷)
- 24春国家开放大学《教育研究方法#》作业1-4参考答案
- 机场地勤的职业规划
- 大学物理-5省公开课金奖全国赛课一等奖微课获奖课件
- zpl语言指令解析
评论
0/150
提交评论