1、目 录摘要11 设计目的12 设计要求13 设计内容23.1 S3C2410与串口通信概述23。1。1S2C2410处理器概述23。1.2串口通信 33.2方案设计 43。3电路设计 43。3.1 电源设计 4 3。3.2晶振电路 5 3。3.3复位电路 6 3。3。5存储器设计 6 3。3。4JTAG接口 6 3。3。6串口电路 73。4软件设计8 3。4。1 Boot loader 工作原理83。4。2第一阶段9 3。4。1第二阶段10总结与致谢11参考文献12摘 要串口通信是目前单片机和 DSP 等嵌入式系统之间,以及嵌入式系统与 PC 机或无线模块之间的一种非常重要且普遍使用的通信方式
2、。在嵌入式系统的硬件结构中,通常只有一个8位或 16位的 CPU, 不仅要完成主流程的工作, 同时还要处理随时发生的各种中断, 因而嵌入式系统中的串口通信程序设计与 PC 机有很大的不同。串行端口的本质功能是作为 CPU 和串行设备间的编码转换器,一般微机内都配有通信适配器,使计算机能够与其他具有RS 232 串口的计算机或设备进行通信.本系统中目标机开发板的内核采用的是三星的 S3C2410 ,工作非常可靠,可稳定运行在 203 MHz 的时钟频率下.其外设非常丰富,功能强大,完全可以满足设计需要。串口线采用常用的 RS 232 型接口模式,能实现计算机与开发板间的数据传输与控制.关键词:A
3、RM;串口通信;串行端口;RS 23271设计目的以嵌入式芯片S3C2410为核心的最小嵌入式系统构建方法,给出了S3C2410的复位电路、电源电路、存储器电路和串口电路等硬件组成。在ADS环境下自制的最小Boobt loader程序开发并调试.2设计要求串口通信是嵌入式设备必备的通信方式之一,选用ARM芯片和电平转换芯片完成出口通信的设计,并设计完整物理接口。根据设计题目的要求,选择确定ARM芯片型号、电平转换芯片型号,完成系统硬件设计和程序设计。3 设计内容3。1 S3C2410与串口通信概述3。1。1S3C2410处理器概述S3C2410是Samsung公司基于A RM 920T内核的嵌
4、入式微处理器。本文以S3C2410为核心,配置了最基本外围电路构成了最小的嵌入式系统,并在ADS上开发了启动程序,完成硬件初始化,配置运行环境,串日调试功能。Samsung 公司推出的16/32位RISC处理器S3C2410A,为手持设备和一般类型应用提 供了低价格、低功耗、高性能小型微控制器的解决方案.为了降低整个系统的成本, S3C2410A提供了以下丰富的内部设备:分开的16KB的指令Cache和16KB数据Cache, MMU虚拟存储器管理,LCD控制器(支持STN&TFT),支持NAND Flash系统引导,系统 管理器(片选逻辑和SDRAM控制器),3通道UART,4通道DMA,4
5、通道PWM定时器,I/O 端口,RTC,8通道10位ADC和触摸屏接口,IIC-BUS接口,IIC-BUS接口,USB主机,USB 设备,SD主卡MMC卡接口,2通道的SPI以及内部PLL时钟倍频器. S3C2410A采用了ARM920T内核,0.18um工艺的CMOS标准宏单元和存储器单元。 它的低功耗、精简和出色的全静态设计特别适用于对成本和功耗敏感的应用.同样它还采用 一种叫做Advanced Microcontroller Bus Architecture(AMBA)新型总线结构。 S3C2410A的显著特性是它的CPU核心,是一个由Advanced RISC Machines(ARM
6、) 有限公司设计的16/32位ARM920T RISC处理器。ARM920T实现了MMU,AMBA BUS和 Harvard高速缓冲体系结构。这一结构具有独立的16KB指令Cache和16KB数据Cache,每 个都是由8字长的行(line)构成。 通过提供一系列完整的系统外围设备,S3C2410A大大减少了整个系统的成本,消除了 为系统配置额外器件的需要.本文档将介绍S3C2410A中集成的以下片上功能:1。8V/2。0V内核供电,3。3V存储器供电,3。3V外部I/O供电; 具备16KB的ICache和16KB的DCache/MMU; 外部存储控制器(SDRAM 控制和片选逻辑)LCD 控
7、制器(大支持 4K 色 STN 和 256K 色 TFT)提供 1 通道 LCD 专用 DMA。4 通道 DMA 并有外部请求引脚.3通道 UART(IrDA1.0,16 字节 Tx FIFO,和 16 字节 Rx FIFO)/2 通道 SPI1 通道多主 IICBUS/1 通道 IIS-BUS 控制器。兼容 SD 主接口协议 1。0 版和 MMC 卡协议 2。11 兼容版。2 端口 USB 主机/1 端口 USB 设备(1。1 版)4 通道 PWM 定时器和 1 通道内部定时器看门狗定时器117 个通用 I/O 口和 24 通道外部中断源。功耗控制模式:具有普通,慢速,空闲和掉电模式。 z
8、8 通道 10 比特 ADC 和触摸屏接口具有日历功能的 RTC 具有 PLL 片上时钟发生器3。1。1串口通信串口通信的概念,即串口按位(bit)发送和接收字节 通信协议是指通信双方按照约定的数据格式、同步方式、传送速度、传送步骤等规程来进行数据传输 本次采用异步通信 ,其特点是通信双方以一个字符(包括特定附加位)作为数据传输单位,且发送方传送字符的间隔时间是不定的.在传输一个字符时总是从起始位开始,以停止位结束。如图1所示: 图1 串行数据帧格式S3C2410的UART提供3个独立的异步串行通信端口,每个端口可以基于中断或者DMA进行操作。换句话说,UART控制器可以在CPU和UART之间
9、产生一个中断或者DMA请求来传输数据.UART在系统时钟下运行可支持高达230。4K的波特率,如果使用外部设备提供的UEXTCLK,UART的速度还可以更高。每个UART通道各含有两个16位的接收和发送FIFO。S3C2410的UART包括可编程的波特率,红外 接收/发送,一个或两个停止位插入,58位数据宽度和奇偶校验.每个UART包括一个波特率发生器、一个发送器、一个接收器和一个控制单元,如图11-1所示。波特率发生器的输入可以是PCLK或者UEXTCLK。发送器和接收器包含16位的FIFO和移位寄存器,数据被送入FIFO,然后被复制到发送移位寄存器准备发送,然后数据按位从发送数据引脚TxD
10、n输出。同时,接收数据从接收数据引脚RxDn按位移入接收移位寄存器,并复制到FIFO.特性 RxD0, TxD0, RxD1, TxD1, RxD2, 和TxD2基于中断或者DMA操作 UART Ch 0, 1, 和 2 具有 IrDA 1.0 & 16 字节 FIFO UART Ch 0 和 1 具有 nRTS0, nCTS0, nRTS1, 和 nCTS1 支持发生/接收握手3.2 方案设计图2 通信系统的组成框图本系统是以嵌入式芯片S3C2410为核心的最小嵌入式系统构建方法,给出了S3C2410的复位电路、调试接口、电源电路、存储器电路和串口电路等硬件组成。3。3 电路设计3。3。1
11、电源设计S3C2410工作时内核需要1. 8 V电压,I/ O端口和外设需要3。 3 V电压. VDDi/VDDiarm引脚口是供S3C2410内核的1. 8 V电压;VDDalive引脚是功能复位和端口状态寄存器电压. M12引脚RTCVDD是RT C模块的1。 8 V电压,用电池供电保证系统的掉电后保持实时时钟。VDDOP引脚是I/ O端口3。 3V电压;V DDM OP引脚是存储器I/ O端口电压;还有一系列VSS引脚需要接到电源地上.3. 3 V电压从SV用A M S 1117 3。 3转换得到如图3所示;1。8V从3。 3 V通过MIC52071。 8转换得到.如图3所示。 图 3
12、电源电路3.3.2晶振电路S3C2410内部有时钟管理模块,有2个锁相环,其中M PLL能够产生CPU卞频FCLK,AHB总线外设时钟HCLK和APB总线外设时钟PCLK; UPLL产生USB模块的时钟.OM3,OM2都接地时,主时钟源和U SB模块时钟源都由外接晶振产生。在XTIpll和XTOpll之间连接主晶振,可以选择12 MHz品振,通过内部寄存器的设置产生不同频率的FOLK, H CLK和PCLK;在XT Irtc和XTOrtc上需要接32。768 kHz的晶振供RTC模块使用.同时在MPLLCAP和UPLLCAP上也要外接5pF的环路滤波电容。晶振电路如图4所示。 图 4 晶振电路
13、3。3。3 复位电路S3C2410的J12引脚为nRESET复位引脚,nRESET上给4个FOLK时间的低电平后就可以复位。可以设计如图5所小的复位电路,其中上电复位是靠RC电路特性完成,开关二极管1N4148在手动复位时对电容起快速放电的作用,因此可以把复位电平快速拉到OV。反响门74H C 14可以起到延时作用,保证有足够的复位时间。 图5 复位电路3.3.4 JTAG接口 S3C2410有标准的JTAG接口,TCI(H6)为测试时钟输入;TDI(J1)为测试数据输入;TDO(JS)为测试数据输出;TMS(J3)为测试模式选择,TMS用来设置JTA G接日处于某种特定的测试式;nTRST
14、( H 5)为测试复位,输入引脚,低电平有效.其nTRST,TMS,TCK,TDI需要接10K的上拉电阻.通过,JTAG日可以完成芯片测试或在线编程。3。3。5 存储器设计S3C2410有32根数据线和27根地址线,因此地址线的寻址范围为128 M;但是S3C2410还有8根存储器芯片片选信号线nGCSO- nGCS7,因此总的寻址空间为128M 8= 1G。Nand Flash启动模式下复位时S3C2410的存储器映射如图6所示。如当访问物理地址Ox08000000 0x10000000内的地址则nGCSl自动为低电平,以此类推.通过图6可知SDRAM只能连接在nGCS6和nGCS7片选引脚
15、上。S3C2410提供了SDRAM的接口,其中包括nSRAS:行信号锁存;nSCAS:列信号锁存;nSCS(就是nGCS 6 ):片选信号; 图 6DQM3:0:数据屏蔽 ; SCLI 1: 0;时钟;SCKE:时钟有效;nBE 3: 0:高/低字节有效;nWBE 3:0:写有效。MT48LC16M16A2P是4块16位32M的SDRAM存储器。MT48LC16M16A2P的行地址13位为A 0A 12,列地址9位为CAO CA8,行和列地址是复用的。MT48LC16M16A2P包括4个块,通过BA0,BA1的组合选择块。MT48LC16M16A2P是16位存储器,因此数据线为 DQO-DQ1
16、5,还有CS片选,CLK时钟,CKE时钟使能,RAS行锁存,CAS列锁存,WE写使能等引脚.图7表示MT48LC16M16A2P和S3C2410的连接方法,其中BA0, BA1需要连接ADD24和 A DDR25,通过S3C2410的说明可知,因为内存总大小是64M因此块选择信号必须使用A DDR24和ADDR25.S3C2410内部有NAND Flash控制器,支持从NADN Flash启动。图7是K9F1208 64M Flash芯片和S3C2410的连接方式。S3C2410采用一组内部寄存器来完成NAND Flash的操作. 图 7 存储器连接电路3。3。6串口电路S3C2410的DAR
17、T提供了二个同步串行IO日,图8是COMO的连接方式。串口数据的收发有查询方式、中断方式和DMA方式等,这些可以在UCONO寄存器中设置。UTXH0把要发送的数据写入此寄存器。URXH0读此寄存器获得串日接收的数据.串日一般可以用程序运行信息的输出和程序调试。 图 8 串口连接电路3.4 软件设计在本系统中,指纹图像识别部分的算法主要通过S3C2410芯片来完成. 当S3C2410的OM0,OM1引脚接低电平时S3C2410就从NADN Flash启动。在NAND Flash启动模式下上电后NAND Flash控制器自动将NAND Flash的最前面的4k区域拷贝到所谓的” steppings
18、tone”单面。这一过程完全由硬件自动实现.” steppingstone”实际上是S3C2410内部的一个SRA M,因为NADN Flash不支持程序片内运行,因此必须把NAND Flash内的指令拷贝到SRAM或SDRAM中才可以运行。在拷贝完前4k代码后,NAND Flash控制器自动将“steppingstone”映射到arm地址空间0x00000000开始的前4k区域。在映射过程完成后NAND Flash控制器将pc指针直接指向arm地址空间的0x00000000位置,准备开始执行“steppingstone”上的代码.而“steppingstone”上从NAND Flash拷贝过
19、来的4k代码,是程序员写的boot loader的前4k代码。 boot loader之前写好,并己经被烧写到NAND Flash的。x00000000开始区域。3。4.1Boot loader 工作原理 Boot loader是引导操作系统的程序,也是开发阶段目标板和 PC机的通信工具.Boot loader一般都放在NAND Flash的起始位置,这样上电后Bootbader的第一个指令被自动执行.由于Boot Loader的实现依赖于CPU的体系结构,因此大多数Boot Loader都分为stage1和stage2两大部分。依赖于CPU体系结构的代码,比如设备初始化代码等,通常都放在st
20、agel中,而目通常都用汇编语言来实现,以达到短小精悍的目的。而stage2则通常用C语言来实现,这样可以实现复杂的功能,而目代码会具有更好的可读性和可移植性。阶段1和阶段2的工作流程如图9。 图 9 程序流程图3。4。2第一阶段第一阶段的卞要工作是硬件设备初始化,加载Boot Loader的stage2,准备RAM空;拷贝Boot Loader的stage2到RAM空间中;设置好堆栈;跳转到stage2的C入日点下面介绍ADS环境下开始制作简单Bootloader的方法。 先建立工程命名为myBoot,定义出程序的基本结构如下: AREA mvBoot, CODE, READONLY;声明一
21、个代码段,名称为mvBooL ENTRY ;程序入口声明,程序的开始执行位置 _ ENTRY ;入口名称为_ENTRY ;中间写主要代码 END ;程序结束在myBoot工程的Settings中做一些设置。首先设置Target/ Target Settings/post Link 中选择“ARM fromELF”。Linker/Arm Linker/0utput/Link Type选Simple简单连接方式;RO Base设置为0x30008000代码段连接地址.实际上RO BA SE指定了程序的静态连接地址。程序真正被执行时所在的内存地址叫做运行地址。如果连接时用到绝对地址的话运行地址和链接
22、地址保持一致时程序才能正常运行,这种代码叫做与位置有关代码.如果连接时没有涉及到绝对地址那么连接地址和运行地址不一样程序也可以正常运行,这种代码叫做位置无关的代码。但是Bootloader一开始时被加载在0x00位置开始运行,这会不会和RO Bas。设置地址冲突呢?实际上是会冲突的,解决冲突的办法就采用位置无关代码( PIC).实际上Boodloader的绝大部分代4i最后想让它运行在0x30000800开始的SDRAM单,只有第一阶段代码运行在0x00开始的SRAM单,因此把阶段1用位置无关的汇编代码实现整个程序就正常运行了.RW Base是数据段的开始位置,如果不指定数据段,就紧接着代码段
23、放置。在OptionsImage entry point指定代码的入口_ENT RY. 程序的第一步要设置中断向量表。S3C2410有7种中断,中断入日地址在0x00开始处,每个中断占用4个字节,正好可以放一个跳转指令。程序如下: b ResetH andler;复位中断,也是整个程序的入口,b指令是根据当前PC进行跳转,因此可以实现位置无关代码引.在ResetH andler中需要做的工作有:关闭看门狗、关闭所有中断、设置主频、初始化SDRAM、设置中断堆栈,最后搬移代码到SDRAM中.最后一步跳转到C程序的入口函数m ain中.3。 4. 3第二阶段这阶段代码用C语言编写,从m ain函数
24、开始。这个阶段的卞要任务有串日初始化、MMU的初始化、USB初始化、以太网初始化等。Bootloader工作时显示屏可能还没有工作,或者日标板根本就没有显示屏或键盘等设备,因此人机交匀_一般通过串日来实现。因此必须初始化串口,通过串日打印运行信息或者接收用户输入。用串日连接到PC上,用专用或通用的串口软件来接收信息或输入信息。总结与致谢本次课程设计所设计的系统具有成本低廉,体积小,功耗低等特点,并且可靠性、可扩展性、同时节省硬件资源.但同时存在一些不足,本系统中的代码是顺序执行的,运行时间较长.通过本次课程设计,使我对ARM嵌入式开发有了一定的掌握和理解,巩固了我在ARM嵌入式系统开发及应用课
25、程中所学的基本理论知识和实验技能,使我对ARM嵌入式系统开发及应用课程有了更深入的了解,熟悉了S3C210 的串口的使用,了解S3C2410的内部功能模块,及内核架构.进一步激发了我对所学专业学习的兴趣;提高了我的思考与实践能力。在设计的过程当中,指导老师陈菲给予了我热心的帮助和大力的支持,给我提了诸多的宝贵意见,拓宽了我的思路。在此我向老师致以崇高的敬意和衷心的感谢!参考文献1 杜春雷.ARM体系结构与编程M.北京:清华大学出版社,2003.2 周立功 。ARM嵌入式Linux系统构建与驱动开发范例M.北京:北京航空航天大学出版社,2006。3 斯洛斯(Sloss,A.N。)。ARM嵌入式系
26、统开发:软件设计与优化M.北京:北京航空航天大学出版社,2005。4 ARMLinux嵌入式系统教程.北京:北京航空航天大学出版社,2004.5 陈赜ARM9嵌入式技术及Linux高级实践教程M 北京:北京航空航天大学出版社,20056 孙天泽,袁文菊嵌入式设计及Linux驱动开发指南-基于ARM9处理器M 第2版北京:电子工业出版社,2007.7 田泽ARM9嵌入式Linux开发实验与实践M 北京:北京航空航天大学出版社,2006.8 于明ARM9嵌入式系统设计与开发教程M 北京:电子工业出版社,2006。9 赵星寒 ARM开发工具ADS原理与应用M 北京:北京航空航天大学出版社,200610 季昱, 林俊超, 宋飞编ARM嵌入式应用系统开发典型实例M 北京:中国电力出版社,2005