S3C6410启动模式介绍
- 格式:docx
- 大小:12.09 KB
- 文档页数:3
S3C6410硬件开发指南1S3C6410综述S3C6410 是SAMSUNG公司基于ARM1176的16/32 位的高性能低功耗的RSIC 通用微处理器,适用于手持、移动等终端设备。
S3C6410 是一款低功率、高性价比、高性能的用于移动电话和通用处理RSIC 处理器。
为2.5G 和3G 通信服务提供了优化的硬件性能,采用64/32bit 的内部总线架构,融合了AXI、AHB、APB 总线。
还有很多强大的硬件加速器,包括运动视频处理、音频处理、2D加速、显示处理和缩放。
一个集成的MFC(Multi-Format video Codec)支持MPEG4/H.263/H.264 编解码和VC1 的解码,这个硬件编解码器支持实时的视频会议以及NTSC和PAL 制式的TV 输出。
此外还内置一个采用最先进技术的3D 加速器,支持OpenGL ES1.1/ 2.0 和D3DM API 能实现4M triangles/s 的3D 加速。
S3C6410 包括优化的外部存储器接口,该接口能满足在高端通信服务中的数据带宽要求。
接口分为两路,DRAM 和Flash/ROM/DRAM 端口。
DRAM 端口可以通过配置来支持Mobile DDR、DDR、Mobile SDRAM、SDRAM。
Flash/ROM/DRAM 端口支持NOR-Flash,NAND-Flash,OneNAND,CF,ROM 等类型的外部存储器和任意的Mobile DDR、DDR、Mobile SDRAM、SDRAM 存储器。
为了降低整个系统的成本和提升总体功能,S3C6410 包括很多硬件功能外设:Camera接口,TFT 24bit 真彩色LCD 控制器,系统管理单元(电源时钟等),4 通道的UART,32通道的DMA,4 通道定时器,通用I/O 口,I2S 总线,I2C 总线,USB Host,高速USB OTG,SD Host 和高速MMC 卡接口以及内部的PLL 时钟发生器。
ARM 处理器模式和寄存器一、ARM处理器模式1.所有模式以及该模式对应的寄存器列表用户模式(User):ARM处理器正常的程序执行状态。
快速中断模式(FIQ):用于高速数据传输或通道处理。
外部中断模式(IRQ):用于通用的中断处理。
管理模式(Supervisor):操作系统使用的保护模式。
数据访问终止模式(Abort):当数据或指令预取终止时进入该模式,可用于虚拟存储及存储保护。
系统模式(System):运行具有特权的操作系统任务。
未定义指令中止模式(Undifined):当未定义的指令执行时进入该模式,可用于支持硬件协处理器的软件仿真。
2.中断类型及其对应的CPU模式二、ARM寄存器ARM共有37个32位寄存器,其中31个为通用寄存器,6个为状态寄存器.这些寄存器不能被同时访问,但在任何时候,通用寄存器R0~R14,程序计数器PC,一个或两个状态寄存器都是可访问的.通用寄存器包括R0~R15,可以分为3类:(1)未分组寄存器R0~R7(2)分组寄存器R8~R14(3)程序计数器PC(R15)1.未分组寄存器R0~R7在所有运行模式下,未分组寄存器都指向同一个物理寄存器,它们未被系统用作特殊的用途.因此在中断或异常处理进行运行模式转换时,由于不同的处理器运行模式均使用相同的物理寄存器,所以可能造成寄存器中数据的破坏.2.分组寄存器R8~R14对于分组寄存器,它们每一次所访问的物理寄存器都与当前处理器的运行模式有关.对于R8~R12来说,每个寄存器对应2个不同的物理寄存器,当使用FIQ(快速中断模式)时,访问寄存器R8_fiq~R12_fiq;当使用除FIQ模式以外的其他模式时,访问寄存器R8_usr~R12_usr.对于R13,R14来说,每个寄存器对应6个不同的物理寄存器,其中一个是用户模式与系统模式共用,另外5个物理寄存器对应其他5种不同的运行模式,并采用以下记号来区分不同的物理寄存器: R13_R14_其中mode可为:usr,fiq,irq,svc,abt,und.寄存器R13在ARM指令中常用作堆栈指针,用户也可使用其他的寄存器作为堆栈指针,而在Thumb指令集中,某些指令强制性的要求使用R13作为堆栈指针.寄存器R13在ARM指令中常用作堆栈指针,但这只是一种习惯用法,用户也可使用其他的寄存器作为堆栈指针。
U-Boot SD卡启动方式的分析与移植——基于S3C6410平台摘要:BootLoader在嵌入式系统的开发及产品升级过程中有重要作用。
U-Boot以其结构清晰、功能强大、跨平台支持等优势而应用广泛,同时结合SD卡设备方便携带、操作简单的特点,本文分析了U-Boot SD卡启动原理并进行了实际移植工作,在U-Boot中增加了SD卡启动的支持。
实验结果表明使用本文的方法可正确实现U-Boot的SD卡启动,并可进行操作系统内核的加载。
关键词:U-Boot SD卡启动1 前言近年来,伴随着信息技术与电子技术的高速发展,嵌入式技术已经被广泛地应用于人们日常的生产生活中,以嵌入式处理器为核心的各种智能终端不断出现,这些智能终端大都安装有嵌入式操作系统以支持更多功能丰富的应用程序。
随着科技的不断进步以及终端设备功能的不断加强,智能终端已经可以被视为一台微型的计算机系统。
类似于通用的PC机操作系统,嵌入式操作系统也需要在硬件设备初始化后由引导加载程序将系统内核加载至内存中运行。
通用Bootloader(universal boot loader,U-Boot)是遵循GPL条款的开放源代码项目,它不仅可以引导多种操作系统,同时还支持多种体系架构的CPU。
U-Boot代码结构清晰,功能丰富,具有良好的网络技术支持,同时移植方便,这些特点使得U-Boot在嵌入式系统中获得了广泛的应用。
S3C6410是三星公司推出的一款基于ARM11架构的通用嵌入式处理器,该款处理器性能卓越,接口丰富,能够满足大多数嵌入式设备的需求。
因此,本文首先介绍了U-Boot的工作原理,然后基于S3C6410处理器进行了U-Boot硬件相关部分的分析与移植,并且添加了U-Boot目前尚未支持的SD卡启动模式的代码。
2 U-Boot工作原理2.1 U-Boot代码结构简介U-Boot的源码目录结构比较简单,大部分目录通过其名字就可获知该目录下源码功能的信息。
S3C6410的stepldr修改成SD启动方式1、修改WINCE600\PLA TFORM\SMDK6410\SRC\BOOTLOADER\STEPLDR\stepldr.bib 修改stepldr在内存中的位置,MEMORY和CONFIG 都要修改MEMORY中,修改前后对比STEPLDR 00000000 00002000 RAMIMAGE ; Image : 8 KB (in Stepping Stone)STEPLDR 0C000000 00002000 RAMIMAGE ; Image : 8 KB (in Stepping Stone)CONFIG 中,修改前后对比ROMSTART = 00000000ROMSTART = 0C0000002、WINCE600\PLA TFORM\SMDK6410\SRC\BOOTLOADER\EBOOT\makefile.inc 修改IROM_SD_EBOOT.nb0的组成我的修改方式如下,红色加粗为修改过的地方,这样可以直接利用生成的stepldr.nb0文件而不做其他修改,直接单独编译bootloader文件夹即可。
copy /y/b $(_PLATFORMROOT)\$(_TGTPLAT)\target\$(_TGTCPU)\$(WINCE DEBUG)\eboot.nb0 +$(_PLATFORMROOT)\$(_TGTPLAT)\target\$(_TGTCPU)\$(WI NCEDEBUG)\stepldr.nb0$(_PLATFORMROOT)\$(_TGTPLAT)\target\$(_TGTCPU)\$(WI NCEDEBUG)\IROM_SD_EBOOT.nb0如果直接编译stepldr文件夹,可以进入WINCE600\OSDesigns\UT_S3C6410_0217\UT_S3C6410_021 7\RelDir\Samsung_SMDK6410_Release文件夹在CMD中运行命令:copy /y/b eboot.nb0 + stepldr.nb0IROM_SD_EBOOT.nb0我曾尝试修改命令中eboot.nb0和stepldr.nb0的顺序,得出的image不能用,原因懒得去查了,哈哈。
S3C6410第一章存储器、地址映射与芯片启动简介在尚观听了一阵课了,收获目前还算一般,并没有特别兴奋的点。
截止今日ARM内容已经结束,有些课并不是很有兴趣去听。
根据本人一向颇为难以理解的习惯,当时不听事后琢磨,现在是仔细写下东西的时候了。
那么,也不嫌再多单片机文档的繁琐,重新开始这个从裸机到U-BOOT的小过程。
目前我们使用的是ARM11核心的三星S3C6410作为处理器。
事实上不搭系统就是单片机的类型,起码我一直是这么称呼的。
深深的希望内核驱动课程给我以启发,否则就太无趣了。
很显然,我们的S3C6410微处理器是封装了ARM1176JZF-S的核,关于ARM11另开博文再讲自己的学习,这里仅仅针对高一层的6410微处理器。
按照自己的思路,开始吧!注,本文属于个人读书笔记性质,有心的随便看看就行了,转载请注明出处:我的博客:Moon小夜曲/uid/28720832.html欢迎大家文明探讨1:哈佛结构与冯诺伊曼结构哈佛结构是程序指令与数据分开存储的一种的结构。
它是一种并行结构,如图:它的特点是程序的指令与数据分开存储在不同的存储空间,并且独立编址,独立访问。
对于哈佛结构,一个明显的例子就是51单片机了。
使用过汇编编程的都知道,如AT89C51下有4KB的FLASH,128字节的RAM,对应的,4KB就是程序存储器,128字节的数据存储器。
这两者的地址分别为:FLASH 0x0000 – 0x0FFF ;RAM 0x00 – 0x7F。
这两个地址的0地址对应完全不同的存储空间,程序的地址由汇编的ORG指定,而RAM 中包括有4套通用寄存器和各种SFR。
冯诺伊曼结构则是程序指令与数据存储合并在一起的一种结构。
指令与数据共享总线,它们的存储器是统一编址的,指令与数据的识别与时间有关。
S3C6410就是冯诺伊曼结构的。
由于是32位的地址范围,也即为0x00000000 – 0xFFFFFFFF 共4G的地址范围。
基于S3C6410处理器U-boot SD卡启动方式的研究与实现董琳【摘要】针对传统方法烧写U-boot,引导和安装嵌入式系统操作繁琐的问题,本文基于S3C6410处理器分析了SD卡启动系统的原理,修改了U-boot源码,使其支持该启动方式,并进行了实验验证.结果表明该方法具有可行性,便于嵌入式系统的安装工作,对其他平台上U-boot SD卡启动方式的研究具有一定的参考价值.【期刊名称】《电子制作》【年(卷),期】2015(000)019【总页数】3页(P96-97,89)【关键词】U-boot;SD卡启动方式;S3C6410;嵌入式系统【作者】董琳【作者单位】武警工程大学信息工程系【正文语种】中文传统的ARM嵌入式系统大多采用Nor Flash或Nand Flash这2种非易失闪存来存储程序和数据,并且引导和启动系统的,而本文采用的是已经普遍应用于数字产品的SD卡。
SD卡较传统的Flash具有明显的优势:首先价格便宜。
随着SD卡技术的发展和SD卡生产厂商的不断增加,SD卡的价格不断下降,已经和Flash 的价格相差无几。
其次存储容量大。
尤其是SDHC卡的出现,目前已经能够达到32 GB,并且增大趋势日益明显。
再次读写方便。
可以通过读卡器读写SD卡,比起仿真价格便宜,而且读写速度快,易插拔、更换和携带方便。
如上所述可知,SD卡在今后ARM嵌入式的应用会逐渐增加,且很多厂家的芯片已经外扩了SD卡接口。
1 S3C6410处理器SD卡启动原理1.1 选择实验平台ARM-Linux嵌入式系统包括硬件平台和软件平台两大部分。
笔者在学习和研究ARM-Linux嵌入式系统时使用的平台如下:硬件平台采用Samsung公司的S3C6410处理器 128 MB SDRAM、 2GB的SD卡及其他外部接口设备软件平台系统包括引导程序、嵌入式操作系统内核、文件系统。
由于Linux的开源和使用的广泛性,实验中笔者选择了U-boot引导程序和 Linux内核。
S3C64xx系列的应用处理器芯片是三星主推的,三星目前推出了S3C6400和S3C 6410,都是基于ARM11架构的,而且硬件管脚兼容,应该说大致的功能基本相同,比较明显的区别就是S3C6410带有2D/3D硬件加速。
大致看了一下,S3C6410是一个强大的应用处理器,我不是在这里做广告,呵呵,因为我正在使用它,有了它,可以做很多东西。
下面,我对S3C6410做个简单介绍,该芯片大小为13x13mm,424管脚,芯片架构如图:(原文件名:6410处理器简介.jpg)引用图片ARM Core:采用ARM1176JZF-S的核,包含16KB的指令数据Cache和16KB的指令数据TCM,ARM Core电压为1.1V的时候,可以运行到553MHz,在1.2V的情况下,可以运行到667MHz。
通过AXI,AHB和APB组成的64/32bit内部总线和外部模块相连。
Power Management:目前支持Normal,Idle,Stop和Sleep模式。
Normal是正常模式,其他模式都处于不同程度的低功耗模式下,说白了就是还有哪些模块在工作,可以被哪些中断唤醒。
Sleep模式是最低功耗模式了,可以被有限的中断唤醒。
关于在这几种模式下,芯片的功耗到底是多少,目前不得而知,将来一定要测试一下。
TFT LCD Controller:显示控制器,支持TFT 24Bit LCD屏,分辨率能支持到1024x1024。
显示输出接口支持RGB接口,I80接口,BT.601输出(YUV422 8Bit)和输出给TV Encoder 的接口。
支持最多5个图形窗口并可进行Overlay操作,从window0到window4,分别支持不同的图像输入源和不同的图像格式。
实际上,显示控制器可以接收来自Carema,Frame Buffer和其他模块的图像数据,可以对这些不同的图像进行Overlay,并输出到不同的接口,比如LCD,TV Encoder。
S3C6410启动模式介绍
目前的ARM 处理器都支持多种启动模式,S3C6410 和以前的Samsung 的ARM 处理器一样,通过外部管脚OM[4:0]的拉高拉低来决定是从哪个存储设备
上启动。
我认为S3C6410 的User Manual 并没有说的很清楚,所以我在最开始使用的时候,也对其启动模式有一些误解,下面就我个人的理解,介绍一下
S3C6410 的启动。
先读一下S3C6410 User Manual 的第3 章System Controller,在123 页列了一张表,如图:
这章表列出了S3C6410 所支持的几种启动模式。
首先介绍一下和启动模式相
关的硬件管脚:
OM[4:0]:选择启动设备及时钟源。
OM[0]为0 选择XXTlpll,为1 选择XEXTCLK。
GPN[15:13]:用于识别所支持的Nandflash 的类型,包括Page 的类型和地址
周期。
XSELNAND:选择Nand 启动或者是OneNand 启动。
0 为OneNand,1 为Nand。
从表中可以看出,S3C6410 好像并不支持Nandflash 启动,因为Boot Device 中没有Nandflash 设备。
当OM[4:0]为0000x/0001x/0010x/0011x 的时候,Boot Device 是Reserved,我想这里是Samsung 在6410 中有意要隐瞒什么。
如果你用过S3C6400,你应该知道在S3C6400 User Manual 中也有这么一张表,描述。