S3C2410最小系统设计_第1页
S3C2410最小系统设计_第2页
S3C2410最小系统设计_第3页
S3C2410最小系统设计_第4页
S3C2410最小系统设计_第5页
已阅读5页,还剩5页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

题 目:S3C2410X最小系统设计已知技术参数和设计要求:1、嵌入式处理器选择S3C2410X处理器;2、最小系统包括电源、时钟、复位、存储器、JTAG接口精品文档放心下载3、JTAG接口选择14针插头4、存储器容量要求至少16MB的flah和16MB的SDRAM。感谢阅读5、外部提供5V电源要求完成的主要任务:(包括课程设计工作量及其技术要求,以及说明书撰写等具体要求)谢谢阅读1、存储器等主要元器件选择2、电源电路、时钟电路、复位电路、存储器扩展电路、JTAG接口电路谢谢阅读3、protel电路图5、不少于3000字的课程设计报告时间安排:2010~2011学年第1学期13~14周谢谢阅读指导教师签名: 2010年11月11日教研室主任签名: 年 月 日1/8目录摘要11.S3C2410基本外围电路设计11.1系统框图11.2电源电路11.3晶振电路21.4复位电路21.5JTAG接口21.6SDRAM存储器21.7NANDFlash存储器31.8串口电路32.S3C2410启动过程43.简单Bootloader的制作43.1Bootloader工作原理43.2第一阶段43.3第二阶段53.4程序的下载和调试54.心得体会5参考文献:62/8S3C2410最小系统设计摘要:介绍了以嵌入式芯片S3C2410为核心的最小嵌入式系统构建方法,给出了S3C2410的复位电路、电源电路、存储器电路和串口电路等硬件组成。还介绍了在ADS环境下自制的最小Bootloader程序开发和调试方法。谢谢阅读关键字:嵌入式;S3C2410;ADS;Bootloader精品文档放心下载S3C2410是Samsung公司基于ARM920T核的嵌入式微处理器。本文以S3C2410为核心,配置了最基本外围电路构成了最小的嵌入式系统,并在ADS上开发了启动程序,完成硬件初始化,配置运行环境,串口调试功能。通过本文可以从底层了解S3C2410的特性和工作原理,并对Bootloader程序会有深入的认识,为嵌入式系统的学习做铺垫。谢谢阅读1.S3C2410基本外围电路设计1.1系统框图电源、晶振 串口电路S3C2410JTAG SDRAM复位电路 NandFlash图1 系统框图Fig.1DiagramofSystem1.2电源电路S3C2410工作时核需要1.8V电压,I/O端口和外设需要3.3V电压[1]。VDDi/VDDiarm引脚是供S3C2410核的1.8V电压;VDDalive引脚是功能复位和端口状态寄存器电压。M12引脚RTCVDD是RTC模块的1.8V电压,用电池供电保证系统的掉电后保持实时时钟。VDDOP引脚是I/O端口3.3V电压;VDDMOP引脚是存储器I/O端口电压;还有一系列VSS引脚需要接到电源地上。3.3V电压从5V用AMS1117-3.3转换得到如图2所示;1.8V从3.3V通过MIC5207-1.8转换得到如图3所示。感谢阅读图25V转3.3V图33.3V转1.8VFig.25Vto3.3VFig.33.3Vto1.8V1/81.3晶振电路S3C2410部有时钟管理模块,有2个锁相环,其中MPLL产生CPU主频FCLK、AHB总线外设时钟HCLK和APB总线外设时钟PCLK;UPLL产生USB模块的时钟。OM3、OM2都接地时主时钟源和USB模块时钟源都由外接晶振产生[1]。在XTIpll和XTOpll之间连接主晶振,可以选择12MHz晶振,通过部寄存器的设置产生不同频率的FCLK、HCLK和PCLK;在XTIrtc和XTOrtc上需要接32.768kHz的晶振供RTC模块使用。同时在MPLLCAP和UPLLCAP上也要外接5pF的环路滤波电容。晶振电路如图4所示。精品文档放心下载C1C3XTIpllXTIrtcC5MPLLCAP5pF15pF15pFY1R1Y212MHz1M32.768KHzC2C4XTOpllXTOrtcC6UPLLCAP5pF15pF15pF图4 晶振电路Fig.4CrystalCircuit1.4复位电路S3C2410的J12引脚为nRESET复位引脚,nRESET上给4个FCLK时间的低电平后就可以复位。可以设计如图5所示的复位电路,其中上电复位是靠RC电路特性完成,开关二极管1N4148在手动复位时对电容起快速放电的作用,因此可以把复位电平快速拉到0V。反响门74HC14可以起到延时作用,保证有足够复位时间。谢谢阅读1.5JTAG接口图5 复位电路S3C2410有标准的JTAG接口,TCK(H6)为测试时钟输入;TDI(J1)为测试数据输入;谢谢阅读Fig.5 ResetCircuitTDO(J5)为测试数据输出;TMS(J3)为测试模式选择,TMS用来设置JTAG接口处于某种特定的测试模式;nTRST(H5)为测试复位,输入引脚,低电平有效。其中nTRST、TMS、TCK、TDI需要接10K的上拉电阻。通过JTAG口可以完成芯片测试或在线编程。感谢阅读1.6SDRAM存储器[1]S3C2410有32根数据线和27根地址线,因此地址线的寻址围为128M;但是S3C2410还有8根存储器芯片片选信号线nGCS0~nGCS7,因此总的寻址空间为128M*8=1G。NandFlash启动模式下复位时S3C2410的存储器映射如图6所示。如当访问物理地址0x08000000~0x10000000的地址则nGCS1自动为低电平,以此类推。谢谢阅读通过图6可知SDRAM只能连接在nGCS6和nGCS7片选引脚上。S3C2410提供了SDRAM的接口,其中包括nSRAS:行信号锁存;nSCAS:列信号锁存;nSCS[1:0](就是nGCS[6:7]):片选信号;DQM[3:0]:数据屏蔽;SCLK[1:0]:时钟;SCKE:时钟有效;nBE[3:0]:高/低字节有效;nWBE[3:0]:写有效。下面以2片HY57V561620为例介绍SDRAM和S3C2410的连接方法。HY57V561620是4块16位32M的SDRAM谢谢阅读2/8存储器,用2片可以构成32位的64M存储器。HY57V561620的行地址13位RA0~RA12,列地址9位CA0~CA8,行和列地址是复用的。HY57V561620包括4个块,通过BA0、BA1的组合选择块。HY57V561620是16位存储器,因此数据线为DQ0~DQ15,还有CS片选,CLK时钟,CKE时钟使能,RAS行锁存,CAS列锁存,WE写使能等引脚。图7表示了HY57V561620谢谢阅读S3C2410的连接方法,其中BA0、BA1需要连接ADD24和ADDR25,通过S3C2410的说明可知,因为存总大小是64M因此块选择信号必须使用ADDR24和ADDR25。因为HY57V561620感谢阅读的行列地址复用,因此S3C2410必须知道行列地址各多少位,这个需要在BANKCON6寄存器的SCAN字段指定。谢谢阅读HY57V561620HY57V561620ADDR2-ADDR14A0-A12LDQMnWBE0ADDR2-ADDR14A0-A12LDQMnWBE0nWBE1nWBE1UDQMUDQMDATA0-DATA15nWEDATA16-DATA31nWED0-D15WED0-D15WEADDR24SCLK0ADDR24SCLK0BA0CLKBA0CLKADDR25SCKEADDR25SCKEBA1CKEBA1CKEnSRASnGCS6nSRASnGCS61.7NRASCSRASCSnSCRACASVDD/VSSnSCRACASVDD/VSSANDFlash存储器[2]S3C2410部有NANDFlash控制器,支持从NADNFlash启动。图8是K9F120864MFlash芯片和S3C2410的连接方式。S3C2410采用一组部寄存器来完成NANDFlash的操作。精品文档放心下载图8NANDFlash连接图图9UART连接图Fig.8NANDFlashConnectionFig.9UARTConnection1.8串口电路[3]S3C2410的UART提供了三个同步串行IO口,图9是COM0的连接方式。串口数据的收发有查询方式、中断方式和DMA方式等,这些可以在UCON0(UARTchannel0controlregister)寄存器中设置。UTXH0(UARTchannel0transmitbufferregister)把要发送的数据写入此寄存器。URXH0(UART谢谢阅读channel0receivebufferregister读)此寄存器获得串口接收的数据。串口一般可以用作程序运行信息的输出和程序调试。感谢阅读2.S3C2410启动过程[1]S3C2410的OM0、OM1引脚接低电平时S3C2410就从NADNFlash启动。在NANDFlash感谢阅读启动模式下上电后NANDFlash控制器自动将NANDFlash的最前面的4k区域拷贝到所谓的谢谢阅读“steppingstone”里面。这一过程完全由硬件自动实现。“steppingstone”实际上是S3C2410部的一个SRAM,因为NADNFlash不支持程序片运行,因此必须把NANDFlash的指令拷贝到SRAM或SDRAM中才可以运行。在拷贝完前4k谢谢阅读码后,NANDFlash控制器自动将谢谢阅读“steppingstone”映射到arm地址空间精品文档放心下载3/8

7Fig.7S流程图FlowChart0x00000000开始的前4k区域。在映射过程完成后NANDFlash控制器将pc指针直接指向arm地址空间的0x00000000位置,准备开始执行“steppingstone”上的代码。而“steppingstone”上从NANDFlash拷贝过来的4k代码,是程序员写的bootloader的前4k代码。bootloader之前写好,并已经被烧写到NANDFlash的0x00000000开始区域。精品文档放心下载3.简单Bootloader的制作3.1Bootloader工作原理[4]Bootloader是引导操作系统的程序,也是开发阶段目标板和PC机的通信工具。Bootloader一般都放在NANDFlash的起始位置,这样上电后Bootloader的第一个指令被自动执行。由于BootLoader的实现依赖于CPU的体系结构,因此大多数BootLoader都分为stage1和stage2两大部分。依赖于CPU体系结构的代码,比如设备初始化代码等,通常都放在stage1中,而且通常都用汇编语言来实现,以达到短小精悍的目的。而stage2则通常用C语言来实现,这样可以实现给复杂的功能,而且代码会具有更好的可读性和可移植性。阶段1和阶段2的工作流程如图10。感谢阅读3.2第一阶段图10第一阶段主要工作是硬件设备初始化,加 Fig.10BootLoader的stage2,准备RAM空间;感谢阅读拷贝BootLoader的stage2到RAM空间中;设置好堆栈;跳转到stage2的C入口点。谢谢阅读下面介绍ADS环境下开始制作简单Bootloader的方法。谢谢阅读先建立工程命名为myBoot,定义出程序的基本结构如下:感谢阅读AREAmyBoot,CODE,READONLY;声明一个代码段,名称为myBootENTRY;程序入口声明,程序的开始执行位置__ENTRY;入口名称为__ENTRY……;中间写主要代码END;程序结束感谢阅读myBoot工程的Settings中做一些设置。首先设置Target-->TargetSetting-->postLink中选择"ARMfromELF",表示在生成映像文件后,再调用FromELF命令映像文件转换成其他格式的文件。Linker-->ArmLinker-->Output-->LinkType选Simple简单连接方式;ROBase设置为0x30008000代码段连接地址。实际上ROBASE指定了程序的静态连接地址。程序真正被执行时所在的存地址叫做运行地址。如果连接时用到绝对地址的话运行地址和地址保持一致时程序才能正常运行,这种代码叫做与位置有关代码。如果连接时没有涉及到绝对地址那么连接地址和运行地址不一样程序也可以正常运行,这种代码叫做位置无关的代码。但是Bootloader一开始时被加载在0x00位置开始运行,这会不会和ROBase设置地址冲突呢?实际上是会冲突的,解决冲突的办法就采用位置无关代码(PIC)。实际上Boodloader的绝大部分代码最后想让它运行在0x30000800开始的SDRAM里,只有第一阶段代码运行在0x00开始的SRAM里,因此把阶段1用位置无关的汇编代码实现整个程序就正常运行了。RWBase是数据段的开始位置,如果不指定数据段就紧接着代码段放置。如果自己设置的话程序里还需要自己处理加载数据段到实际数据段RWBase的搬移操作,否则具有初始值的变量的初始值不起作用。在Options->Imageentrypoint指定代码的入口__ENTRY。感谢阅读程序的第一步要设置中断向量表。S3C2410有7种中断,中断入口地址在0x00开始处,精品文档放心下载4/8每个中断占用4可字节,正好可以放一个跳转指令。程序如下:精品文档放心下载ResetHandler;复位中断,也是整个程序的入口,b指令是根据当前PC进行跳转,因此可以实现位置无关代码[5]。在ResetHandler中需要做的工作有:关闭看门狗、关闭所有中断、设置主频、初始化SDRAM、设置中断堆栈,最后搬移代码到SDRAM中。最后一步跳转到C程序的入口函数main中。精品文档放心下载3.3第二阶段[6]这阶段代码用C语言编写,从main函数开始。这个阶段的主要任务有串口初始化、MMU的初始化、USB初始化、以太网初始化等。Bootloader工作时显示屏可能还没有工作,或者目标板根本就没有显示屏或键盘等设备,因此人机交互一般通过串口来实现。因此必须初始化串口,通过串口打印运行信息或者接收用户输入。用串口连接到PC上,用专用或通用的串口软件来接收信息或输入信息。USB口、以太网可以实现快速的文件传输,其他程序或操作系统核可以通过USB或以太网口快速的下载到目标板上。谢谢阅读3.4程序的下载和调试编译工程后会得到一个bin文件,这就是在目标板上运行最后文件。Bootloader一般用JTAG口来烧写,因为Bootloader之前板子上其他任何接口(串口、USB、以太网)都是不可用的,Bootloader是板子上运行的第一个程序。PC机上通过JTAG口烧写文件可以用sjf2410.exe这个程序,运行方式如下sjf2410/f:myBoot.bin。如果JTAG口连接正常的话,会发现CPU,然后根据提示选择相应的位置烧写就可以了。烧写完复位板子后可以在PC上通过串口看到Bootloader的运行情况。谢谢阅读4.心得体会本次课程设计对S3C2410工作必须的外围电路,以及ADS下S3C2410的程序设计方法做了详细的介绍,有不足的地方请老师指正。精品文档放心下载参考文献:SAMSUNGELECTRONICS.S3C2410MICROPROCESSORdatasheet.2003.谢谢阅读文智.嵌入式系统开发原理与实践[M].:清华大学,2005.谢谢阅读毕卫红,王帅,郝科卿等.ADS环境下基于S3C2410串口应用程序的开发[J].

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论