S3C2410最小系统设计说明.docx

上传人:b****8 文档编号:9946457 上传时间:2023-02-07 格式:DOCX 页数:10 大小:144.69KB
下载 相关 举报
S3C2410最小系统设计说明.docx_第1页
第1页 / 共10页
S3C2410最小系统设计说明.docx_第2页
第2页 / 共10页
S3C2410最小系统设计说明.docx_第3页
第3页 / 共10页
S3C2410最小系统设计说明.docx_第4页
第4页 / 共10页
S3C2410最小系统设计说明.docx_第5页
第5页 / 共10页
点击查看更多>>
下载资源
资源描述

S3C2410最小系统设计说明.docx

《S3C2410最小系统设计说明.docx》由会员分享,可在线阅读,更多相关《S3C2410最小系统设计说明.docx(10页珍藏版)》请在冰豆网上搜索。

S3C2410最小系统设计说明.docx

S3C2410最小系统设计说明

题目:

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日

教研室主任签名:

年月日

 

 

S3C2410最小系统设计

摘要:

介绍了以嵌入式芯片S3C2410为核心的最小嵌入式系统构建方法,给出了S3C2410的复位电路、电源电路、存储器电路和串口电路等硬件组成。

还介绍了在ADS环境下自制的最小Bootloader程序开发和调试方法。

关键字:

嵌入式;S3C2410;ADS;Bootloader

S3C2410是Samsung公司基于ARM920T内核的嵌入式微处理器。

本文以S3C2410为核心,配置了最基本外围电路构成了最小的嵌入式系统,并在ADS上开发了启动程序,完成硬件初始化,配置运行环境,串口调试功能。

通过本文可以从底层了解S3C2410的特性和工作原理,并对Bootloader程序会有深入的认识,为嵌入式系统的学习做铺垫。

1.S3C2410基本外围电路设计

1.1系统框图

 

1.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所示。

 

1.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所示。

 

图4晶振电路

Fig.4CrystalCircuit

 

1.4复位电路

S3C2410的J12引脚为nRESET复位引脚,nRESET上给4个FCLK时间的低电平后就可以复位。

可以设计如图5所示的复位电路,其中上电复位是靠RC电路特性完成,开关二极管1N4148在手动复位时对电容起快速放电的作用,因此可以把复位电平快速拉到0V。

反响门74HC14可以起到延时作用,保证有足够复位时间。

1.5JTAG接口

S3C2410有标准的JTAG接口,TCK(H6)为测试时钟输入;TDI(J1)为测试数据输入;TDO(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片可以构成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字段指定。

 

1.7NANDFlash存储器[2]

S3C2410内部有NANDFlash控制器,支持从NADNFlash启动。

图8是K9F120864MFlash芯片和S3C2410的连接方式。

S3C2410采用一组内部寄存器来完成NANDFlash的操作。

 

1.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地址空间0x00000000开始的前4k区域。

在映射过程完成后NANDFlash控制器将pc指针直接指向arm地址空间的0x00000000位置,准备开始执行“steppingstone”上的代码。

而“steppingstone”上从NANDFlash拷贝过来的4k代码,是程序员写的bootloader的前4k代码。

bootloader之前写好,并已经被烧写到NANDFlash的0x00000000开始区域。

3.简单Bootloader的制作

3.1Bootloader工作原理[4]

图10流程图

Fig.10 FlowChart

Bootloader是引导操作系统的程序,也是开发阶段目标板和PC机的通信工具。

Bootloader一般都放在NANDFlash的起始位置,这样上电后Bootloader的第一个指令被自动执行。

由于BootLoader的实现依赖于CPU的体系结构,因此大多数BootLoader都分为stage1和stage2两大部分。

依赖于CPU体系结构的代码,比如设备初始化代码等,通常都放在stage1中,而且通常都用汇编语言来实现,以达到短小精悍的目的。

而stage2则通常用C语言来实现,这样可以实现给复杂的功能,而且代码会具有更好的可读性和可移植性。

阶段1和阶段2的工作流程如图10。

3.2第一阶段

第一阶段主要工作是硬件设备初始化,加载BootLoader的stage2,准备RAM空间;拷贝BootLoader的stage2到RAM空间中;设置好堆栈;跳转到stage2的C入口点。

下面介绍ADS环境下开始制作简单Bootloader的方法。

先建立工程命名为myBoot,定义出程序的基本结构如下:

AREAmyBoot,CODE,READONLY;声明一个代码段,名称为myBoot

ENTRY;程序入口声明,程序的开始执行位置

__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可字节,正好可以放一个跳转指令。

程序如下:

bResetHandler;复位中断,也是整个程序的入口,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的程序设计方法做了详细的介绍,有不足的地方请老师指正。

参考文献:

[1]SAMSUNGELECTRONICS.S3C2410MICROPROCESSORdatasheet.2003.

[2]陈文智.嵌入式系统开发原理与实践[M].北京:

清华大学出版社,2005.

[3]毕卫红,王帅,郝科卿等.ADS环境下基于S3C2410串口应用程序的开发[J].电子技术,2009,8:

73~74

[4]裴科,张刚,靳荣浩.具有多重下载接口的Bootloader设计[J].计算机应用研究,2007,24(12):

210~360

[5]韦东山.嵌入式Linux应用开发完全手册[M]北京:

人民邮电出版社,2008.

[6]许信顺,贾智平.嵌入式Linux应用编程[M],北京:

机械工业出版社,2008.

S3C2410MinimumSystemDesign

FANDaoerjiLIUZheng-hongLIDong

(DepartmentofElectronicEngineering,CollegeofElectronicInformationEngineering,

NeiMongolUniversity,Hohhot010021)

(BeijingVocationalCollegeofElectronicScience,Beijing100070)

Abstract:

ThisarticleintroducesamethodofbuildingminimumembeddedsystemwhichbaseonS3C2410,andanalysisresetcircuit,powersupplycircuits,memorycircuitandcomportcircuit.ItalsointroducesthesmallestbootloaderprogramdevelopmentanddebuggingmethodonADSenvironment.

Keywords:

EmbeddedSystem;S3C2410;ADS;Bootloader

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 成人教育 > 专升本

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1