第5章 应用系统设计与调试1.docx
- 文档编号:3207879
- 上传时间:2023-05-05
- 格式:DOCX
- 页数:35
- 大小:93.41KB
第5章 应用系统设计与调试1.docx
《第5章 应用系统设计与调试1.docx》由会员分享,可在线阅读,更多相关《第5章 应用系统设计与调试1.docx(35页珍藏版)》请在冰点文库上搜索。
第5章应用系统设计与调试1
第5章应用系统设计与调试
(1)
本章主要介绍基于S3C4510B的硬件系统的详细设计步骤、实现细节、硬件系统的调试方法等,通过对本章的阅读,可以使绝大多数的读者具有根据自身的需求、设计特定应用系统的能力。
尽管本章所描述的内容为基于S3C4510B的应用系统设计,但由于ARM体系结构的一致性、以及外围电路的通用性,本章的所有内容对设计其他基于ARM内核芯片的应用系统,也具有很大的参考价值。
本章的主要内容包括:
-嵌入式系统设计的基本方法。
-S3C4510B概述。
-S3C4510B的基本工作原理
-基于S3C4510B的硬件系统设计详述
-硬件系统的调试方法
5.1系统设计概述
根据用户需求,设计出特定的嵌入式应用系统,是每一个嵌入式系统设计工程师应该达到的目标。
嵌入式应用系统的设计包含硬件系统的设计和软件系统设计两个部分,并且这两部分的设计是互相关联、密不可分的,嵌入式应用系统的设计经常需要在硬件和软件的设计之间进行权衡与折中。
因此,这就要求嵌入式系统设计工程师具有较深厚的硬件和软件基础,并具有熟练应用的能力。
这也是嵌入式应用系统设计与其他的纯粹的软件设计或硬件设计最大的区别。
本章以北京微芯力科技有限公司()设计生产的ARMLinux评估开发板为原型,详细分析系统的软、硬件设计步骤、实现细节以及调试技巧等。
ARMLinux评估开发板的设计以学习与应用兼顾为出发点,在保证用户完成ARM技术的学习开发的同时,考虑了系统的扩展、电路板的面积、散热、电磁兼容性以及安装等问题,因此,该板也可作为嵌入式系统主板,直接应用在一些实际系统中。
图5.1.1是ARMLinux评估开发板的结构框图,各部分基本功能描述如下:
-串行接口电路用于S3C4510B系统与其他应用系统的短距离双向串行通讯;
-复位电路可完成系统上电复位和在系统工作时用户按键复位;
-电源电路为5V到3.3V的DC-DC转换器,给S3C4510B及其他需要3.3V电源的外围电路供电;
-10MHz有源晶振为系统提供工作时钟,通过片内PLL电路倍频为50MHz作为微处理器的工作时钟;
-FLASH存储器可存放已调试好的用户应用程序、嵌入式操作系统或其他在系统掉电后需要保存的用户数据等;
-SDRAM存储器作为系统运行时的主要区域,系统及用户数据、堆栈均位于SDRAM存储器中;
-10M/100M以太网接口为系统提供以太网接入的物理通道,通过该接口,系统可以10M或100Mbps的速率接入以太网;
-JTAG接口可对芯片内部的所有部件进行访问,通过该接口可对系统进行调试、编程等;
-IIC存储器可存储少量需要长期保存的用户数据;
-系统总线扩展引出了数据总线、地址总线和必须的控制总线,便于用户根据自身的特定需求,扩展外围电路。
5.2S3C4510B概述
5.2.1S3C4510B及片内外围简介
在进行系统设计之前,有必要对ARMLinux评估开发板上的ARM芯片S3C4510B及其工作原理进行比较详细的介绍,读者只有对该微处理器的工作原理有了较详细的了解,才能进行特定应用系统的设计。
Samsung公司的S3C4510B是基于以太网应用系统的高性价比16/32位RISC微控制器,内含一个由ARM公司设计的16/32位ARM7TDMIRISC处理器核,ARM7TDMI为低功耗、高性能的16/32核,最适合用于对价格及功耗敏感的应用场合。
除了ARM7TDMI核以外,S3C4510B比较重要的片内外围功能模块包括:
— 2个带缓冲描述符(BufferDescriptor)的HDLC通道
— 2个UART通道
— 2个GDMA通道
— 2个32位定时器
— 18个可编程的I/O口。
片内的逻辑控制电路包括:
— 中断控制器
— DRAM/SDRAM控制器
— ROM/SRAM和FLASH控制器
— 系统管理器
— 一个内部32位系统总线仲裁器
— 一个外部存储器控制器。
S3C4510B结构框图如图5.2.1所示。
图5.2.1S3C4510B结构框
S3C4510B的特性描述如下:
体系结构
— 用于嵌入式以太网应用的集成系统
— 全16/32的RISC架构
— 支持大、小端模式。
内部架构为大端模式,外部存储器可为大、小端模式
— 内含效率高、功能强的ARM7TDMI处理器核
— 高性价比、基于JTAG接口的调试方案
— 边界扫描接口
系统管理器
— 支持ROM/SRAM、FLASH、DRAM和外部I/O以8/16/32位的方式操作
— 带总线请求/应答引脚的外部总线控制器
— 支持EDO/常规或SDRAM存储器
— 可编程的访问周期(可设定0~7个等待周期)
— 4字的写缓冲
— 高性价比的从存储器到外围的DMA接口
一体化的指令/数据Cache
— 一体化的8KCache
— 支持LRC(近期最少使用)替换算法
— Cache可配置为内部SRAM
IIC接口
— 仅支持主控模式
— 串行时钟由波特率发生器生成
Ethernet控制器
— 带猝发模式的DMA引擎
— DMA发送/接收缓冲区(256字节发送,256字节接收)
— MAC发送/接收FIFO缓冲区(80字节发送,16字节接收)
— 数据对准逻辑
— 支持端模式变换
— 100M/10Mbps的工作速率
— 与IEEE802.3标准完全兼容
— 提供MII和7线制10Mbps接口
— 站管理信号生成
— 片内CAM(可达21个目的地址)
— 带暂停特性的全双工模式
— 支持长/短包模式
— 包拆装PDA生成
HDLC(High-LevelDataLinkControl)高层数据链路协议
— HDLC协议特征:
标志检测与同步;零插入与删除;空闲检测和发送;FCS生成和检测(16位);终止检测与发送
— 地址搜索模式(可扩展到四字节)
— 可选择CRC模式或非CRC模式
— 用于时钟恢复的数字PLL模块
— 波特率生成器
— 发送和接收支持NRZ/NRZI/FM/曼切斯特数据格式
— 回环与自动回波模式
— 8字的发送和接收FIFO
— 可选的1字或4字数据传送方式
— 数据对准逻辑
— 可编程中断
— Modem接口
— 高达10Mbps的工作速率
— 基于8位位组的HDLC帧长度
— 每个HDLC有2通道DMA缓冲描述符用于发送和接收
DMA控制器
— 用于存储器到存储器、存储器到UATR、UATR到存储器数据传送的2通道通用DMA控制器,不受CPU干预
— 可由程序或外部DMA请求启动
— 可增减源地址或目的地址,无论8位、16位或32位数据传输
— 4种数据猝发模式
UART
— 2个可工作于DMA方式或中断方式的UART模块
— 支持5、6、7、8位的串行数据发送和接收
— 波特率可编程
— 1位或2位停止位
— 奇/偶校验
— 间隔信号的生成与检测
— 奇偶校验、覆盖和帧错误检测
— ×16时钟模式
— 支持红外发送和接收
定时器
— 2个可编程32位定时器
— 间隔模式或触发模式工作
可编程I/O口
— 18个可编程I/O口
— 可分别配置为输入模式、输出模式或特殊功能模式
中断控制器
— 21个中断源,包括4个外部中断源
— 正常中断或快速中断模式(IRQ、FIQ)
— 基于优先级的中断处理
PLL
— 外部时钟可由片内PLL倍频以提高系统时钟
— 输入频率范围:
10~40MHz
— 输出频率可以是输入时钟的5倍
工作电压
— 3.3V,偏差不超过5%
工作温度
— 0oC~70oC
工作频率
— 最高为50MHz
封装形式
— 208脚QFP封装
5.2.2S3C4510B的引脚分布及信号描述
图5.2.2S3C4510B的引脚分布图
各引脚信号描述如下:
表5-2-1S3C4510B的引脚信号描述
信号
引脚号
类型
描述
XCLK
80
I
S3C4510B的系统时钟源。
如果CLKSEN为低电平,通过PLL倍频的输出时钟作为S3C4510B的内部系统时钟。
如果CLKSEN为高电平,XCLK直接作为S3C4510B的内部系统时钟。
MCLKO/SDCLK
77
O
系统时钟输出。
SDCLK为SDRAM提供时钟信号
CLKSEL
83
I
时钟选择。
如果CLKSEL为低电平,PLL输出时钟作为S3C4510B的内部系统时钟。
如果CLKSEL为高电平,XCLK直接作为S3C4510B的内部系统时钟。
nRESET
82
I
复位信号。
nRESET为S3C4510B的复位信号,要使系统可靠复位,nRESET必须至少保持64个主时钟周期的低电平。
CLKOEN
76
I
时钟输出允许/禁止。
高电平允许系统时钟信号输出,低电平禁止。
TMODE
63
I
测试模式选择。
低电平为正常工作模式,高电平为芯片测试模式。
FILTER
55
AI
如果使用PLL,应在该引脚和数字地之间接820pF的陶瓷电容。
TCK
58
I
JTAG测试时钟。
JTAG测试时钟信号用于切换状态信息和检测数据的输入输出。
该引脚在片内下拉。
TMS
59
I
JTAG测试模式选择。
该信号控制S3C4510B的JTAG测试操作。
该引脚在片内上拉。
TDI
60
I
JTAG测试数据输入。
在JTAG测试操作的过程中,该信号将指令和数据串行送入S3C4510B。
该引脚在片内上拉。
TDO
61
O
JTAG测试数据输出。
在JTAG测试操作的过程中,该信号将指令和数据串行送出S3C4510B。
nTRST
62
I
JTAG复位信号,低电平复位。
异步复位JTAG逻辑。
该引脚在片内上拉。
ADDR[21:
0]/
ADDR[10]/AP
117-110
129-120
135-132
O
地址总线。
22位的地址总线可寻址每一个ROM/SRAM组、FLASH存储器组、DRAM组和外部I/O组的4M字(64M字节)的地址范围。
XDATA[31:
0]
141-136
154-144
166-159
175-169
I/O
外部数据总线(双向、32位)。
S3C4510B支持外部8位,16位,32位的数据宽度。
nRAS[3:
0]/
nSDCS[3:
0]
94,91,
90,89
O
DRAM行地址锁存信号。
S3C4510B支持最多4个DRAM组,每个nRAS输出控制一组。
nSDCS[3:
0]用作SDRAM的片选信号。
nCAS[3:
0]
nCAS[0]
/nSDRAS
nCAS[1]
/nSDCAS
nCAS[2]/CKE
98,97,
96,95
O
DRAM列地址锁存信号。
无论访问哪一个DRAM组,4个nCAS输出信号均表示字节选择。
nSDRAS作为SDRAM的行地址锁存信号,nSDCAS作为SDRAM的列地址锁存信号,CKE作为SDRAM的时钟使能信号。
nDWE
99
O
DRAM写使能信号。
该引脚为DRAM组提供写操作信号。
(nWBE[3:
0]用于为ROM/SRAM/FLASH存储器组提供写操作信号。
)
nECS[3:
0]
70,69,
68,67
O
外部I/O片选信号。
可以有4个外部I/O组映射到存储空间,每一个外部I/O组的地址范围最大为16KB。
nECS提供每一个外部I/O组的片选信号。
nEWAIT
71
I
外部等待信号。
该信号用于在访问外部I/O设备时,由外设插入等待周期。
nRCS[5:
0]
88-84,75
O
ROM/SRAM/FLASH片选信号。
S3C4510B可访问多达6个的外部ROM/SRAM/FLASH组。
B0SIZE[1:
0]
74,73
I
ROM/SRAM/FLASH存储器组0的数据总线宽度设定。
ROM/SRAM/FLASH存储器组0常用于程序的启动。
‘01’=字节(8位);‘10’=半字(16位);‘11’=字(32位);‘00’=保留
nOE
72
O
输出使能。
当对存储器进行访问的时候,该信号控制存储器的输出使能。
nWBE[3:
0]/
DQM[3:
0]
107,
102-100
O
写字节使能。
当对存储器进行写操作时,该信号控制存储器(DRAM除外)的写使能。
对于DRAM存储器组,由nCAS[3:
0]和nDWE控制写操作。
DQM用于SDRAM数据输入/输出的屏蔽信号。
ExtMREQ
108
I
外部总线控制器请求信号。
外部总线控制器通过该引脚请求控制外部总线,当该信号有效时,S3C4510B将外部总线置为高阻状态,以便外部总线控制器取得对外部总线的控制。
当ExtMACK信号为的电平时,S3C4510B重新取得对外部总线的控制权。
ExtMACK
109
O
外部总线应答信号。
MDC
50
O
管理数据时钟。
该引脚产生MDIO数据输入输出时所需的时钟信号。
MDIO
48
I/O
管理数据输入/输出。
当执行一个读数据的命令时,该引脚输入由物理层产生的数据,当执行一个写数据的命令时,由该引脚输出数据到物理层(PHY)。
LITTLE
49
I
小端模式选择引脚。
当该引脚为高电平时,S3C4510B工作在小端模式,当该引脚为低电平时,工作在大端模式。
该引脚在片内已下拉,因此,S3C4510B缺省工作在大端模式。
COL/COL_10M
38
I
冲突检测/10M冲突检测。
该引脚显示是否检测到冲突。
TX_CLK/
TXCLK_10M
46
I
发送时钟/10M发送时钟。
S3C4510B在TX_CLK的上升沿驱动TXD[3:
0]和TX_EN,当工作在MII模式时,PHY在TX_CLK的上升沿采样TXD[3:
0]和TX_EN。
在发送数据时,TXCLK_10M由10M的PHY产生。
TXD[3:
0]
LOOP_10M
TXD_10M
44,43,
40,39
O
发送数据/10M发送数据/10M回环测试。
TXD[3:
0]为发送数据引脚,TXD_10M为10M的PHY的发送数据引脚,LOOP_10M由控制寄存器的回环测试位驱动。
TX_EN/
TXEN_10M
47
O
发送使能/10M发送使能。
TX_ERR/
PCOMP_10M
45
O
发送错误/10M包压缩使能。
CRS/CRS_10M
28
I
载波侦听/10M载波侦听。
RX_CLK/
RXCLK_10M
37
I
接收时钟/10M接收时钟。
RX_CLK为连续的时钟信号,当其频率为25MHz时,数据传输速率为100M,当其频率为2.5MHz时,数据传输速率为10M。
在接收数据时,RXCLK_10M由10M的PHY产生。
RXD[3:
0]
RXD_10M
35,34,
33,30
I
接收数据/10M接收数据。
RX_DV/
LINK10M
29
I
接收数据有效/10M连接状态。
RX_ERR
36
I
接收错误。
TXDA
9
O
HDLCCh-A发送数据。
RXDA
7
I
HDLCCh-A接收数据。
nDTRA
6
O
HDLCCh-A终端准备就绪。
nDTRA引脚指示数据终端设备准备发送或接收。
nRTSA
8
O
HDLCCh-A传送请求。
nCTSA
10
I
HDLCCh-A传送清除。
nDCDA
13
I
HDLCCh-A数据载波检测。
nSYNCA
15
O
HDLCCh-A同步检测。
RXCA
14
I
HDLCCh-A接收时钟。
TXCA
16
I/O
HDLCCh-A发送时钟。
TXDB
20
O
HDLCCh-B发送数据。
RXDB
18
I
HDLCCh-B接收数据。
nDTRB
17
O
HDLCCh-B终端准备就绪。
nRTSB
19
O
HDLCCh-B传送请求。
nCTSB
23
I
HDLCCh-B传送清除。
nDCDB
24
I
HDLCCh-B数据载波检测。
nSYNCB
26
O
HDLCCh-B同步检测。
RXCB
25
I
HDLCCh-B接收时钟。
TXCB
27
I/O
HDLCCh-B发送时钟。
UCLK
64
I
外部UART时钟输入。
可由外部输入时钟作为UART时钟,通常由系统时钟提供UART时钟输入。
UARXD0
202
I
UART0数据接收。
UATXD0
204
O
UART0数据发送。
nUADTR0
203
I
UART0数据终端准备就绪。
该输入信号通知S3C4510B,外设(或其他主机)已准备好发送或接收数据。
nUADSR0
205
O
UART0数据设备准备就绪。
该输出信号通知外设(或其他主机),UART0已准备好发送或接收数据。
UARXD1
206
I
UART1数据接收。
UATXD1
4
O
UART1数据发送。
nUADTR1
3
I
UART1数据终端准备就绪。
参见nUADTR0。
nUADSR1
5
O
UART1数据设备准备就绪。
参见nUADSR0。
P[7:
0]
185-179,
176
I/O
通用I/O口。
XINTREQ
[3:
0]
P[11:
8]
191-189,
186
I/O
外部中断请求信号,或作为通用I/O口。
NXDREQ[1:
0]/P[13:
12]
193,192
I/O
外部DAM请求信号,或作为通用I/O口。
nXDACK[1:
0]/P[15:
14]
195,194
I/O
外部DAM应答信号,或作为通用I/O口。
TOUT0/P[16]
196
I/O
定时器0溢出,或作为通用I/O口。
TOUT1/P[17]
199
I/O
定时器1溢出,或作为通用I/O口。
SCL
200
I/O
I2C串行时钟。
SDA
201
I/O
I2C串行数据。
VDDP
1,21,41,56,78,92,105,118,130,155,167,177,197
Power
I/O口电源。
VDDI
11,31,51,65,103,142,157,187,207
Power
芯片内核电源。
VSSP
2,22,42,57,79,81,93,106,119,131,156,168,178,198
GND
I/O口地。
VSSI
12,32,52,66,104,143,158,188,208
GND
芯片内核地。
VDDA
53
Power
PLL电源
VSSA
54
GND
PLL地
5.2.3CPU内核概述及特殊功能寄存器(SpecialRegisters)
CPU内核概述
S3C4510B的CPU内核是由ARM公司设计的通用32位ARM7TDMI微处理器核,图5.2.3为ARM7TDMI核的结构框图。
整个内核架构基于RISC(ReducedInstructionSetComputer)规则。
与CISC(ComplexInstructionSetComputer)系统相比较,RISC架构的指令集和相关的译码电路更简洁高效。
ARM7TDMI处理器区别于其他ARM7处理器的一个重要特征是其独有的称之为Thumb的架构策略。
该策略为基本ARM架构的扩展,由36种基于标准32位ARM指令集、但重新采用16位宽度优化编码的指令格式构成。
由于Thumb指令的宽度只为ARM指令的一半,因此能获得非常高的代码密度。
当Thumb指令被执行时,其16位的操作码被处理器解码为等效的32位标准ARM指令,然后ARM处理器核就如同执行32位的标准ARM指令一样执行16位的Thumb指令。
也即是Thumb架构为16位的系统提供了一条获得32位性能的途径。
ARM7TDMI内核既能执行32位的ARM指令集,又能执行16位的Thumb指令集,因此允许用户以子程序段为单位,在同一个地址空间使用Thumb指令集和ARM指令集混合编程,采用这种方式,用户可以在代码大小和系统性能上进行权衡,从而为特定的应用系统找到一个最佳的编程解决方案。
图5.2.3ARM7TDMI核的结构框图
32位的ARM指令集由13种基本的指令类型组成,可分为如下四大类:
-4类分支指令用于控制程序的执行流程、指令的特权等级和在ARM代码与Thumb代码之间进行切换。
-3类数据处理指令用于操作片上的ALU、桶型移位器、乘法器以完成在31个32位的通用寄存器之间的高速数据处理。
-3类加载/存储指令用于控制在存储器和寄存器之间的数据传输。
一类为方便寻址进行了优化;另一类用于快速的上下文切换;第三类用于数据交换。
-3类协处理器指令用于控制外部的协处理器,这些指令以开放统一的方式扩展用于片外功能指令集。
几乎所有的32位ARM指令都可以条件执行。
16位的Thumb指令集为32位ARM指令集的扩展,共包含36种指令格式,可分为如下四个功能组:
-4类分支指令
-12类数据处理指令,为标准ARM数据处理指令的一个子集
-8类加载/存储寄存器指令
-4类加载/存储乘法指令
在同一种处理模式下,每一条16位的Thumb指令都有对应的32位ARM指令。
工作状态
如前所述,ARM7TDMI内核支持两种工作状态,并总是处于其中一种工作状态。
工作状态可通过软件或异常处理进行切换:
-ARM状态:
此时执行32位字对齐的ARM指令。
-Thumb状态:
此时执行16位半字对齐的Thumb指令。
操作模式:
ARM7TDMI内核支持7种操作模式:
-用户模式:
正常的程序执行状态。
-FIQ(FastInterruptRequest)模式:
用于支持特殊的数据传送与通道处理。
-IRQ(InterruptReQuest)模式:
用于通用的中断处理。
-管理模式:
一种用于操作
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 第5章 应用系统设计与调试1 应用 系统 设计 调试