********************************LoongEmbedded********************************

作者:LoongEmbedded(kandi)

时间:2011.7.23

类别:WINCE bootloader开发

********************************LoongEmbedded********************************

S3C6410根据启动设备(boot device)的类型分为支持6种操作模式,启动设备可以是SROM、NOR、OneNAND、MODEM和IROM(internal ROM)任何的一种,见下图

图1

从上图可知S36410的操作模式是系统启动的时候根据XSELAND、OM[4:0]和GPN[15:13]的值来决定是哪种操作模式(比如是IROM)以及操作模式下的具体启动设备(比如是SD或是NAND)。当然了这些引脚的值是根据我们所需要的启动方式来决定的,比如开发板中就支持SD卡和NAND启动的方式,下面尝试从硬件设计的角度来学习是如何确定一些关键设计的。

1.      开发板的时钟源选择

图2

上图是6410CPU对时钟发生器结构图的部分,这里只是截了一部分图,可知S3C6410的输入时钟源为外部晶振(XXTIpll)和外部时钟(XEXTCLK),其中时钟发生器由三个PLLs(Phase Locked Loop,锁相环)组成,最高可以产生1.6GHz频率的时钟,这里开发板的设计是选择12MHZ的外部晶振作为时钟源,见下图:

图3

因为选择外部晶振作为始终源,所以由XOM0=0,见下图:

图4

2.      开发板采用的启动方式

由图2和3中的内容可知XOM0=0,因为采用SD卡和NAND的启动方式,结合图1可知,OM[4:0]=11111,而且可知XSELNAND=1,那么就确定了这些引脚的设计,如下图:

图5

下图是XSELNAND引脚设计部分:

图6

2.1   SD卡启动方式

SD卡启动方式,而我们选择的是SD/MMC(CH1),根据图1可知GPN[15:13]=111,所以可以通过图5的SW1开关的2打到“OFF”,也即高电平的状态,就可以实现是SD卡启动的方式了。

2.2   NAND启动方式

开发板采用的是NAND是1GBytes的K9G8G08U0M,其一页大小为2048Bytes,需要5个时钟周期,见下图

图7

结合图1和图7可以得到NAND启动方式的的GPN[15:13]=101,这时就需要

通过图5的SW1开关的2打到“ON”,也即低电平的状态,就可以实现是NAND卡启动的方式了。

3.      S3C6410的存储器映射

S3C6410支持32位的物理地址空间,被分为memory和pheriperal部分。

3.1   memory空间

memory地址范围为0x0~0x6FFFFFFF(1792MBytes),通过SPINE总线memory空间。Memory又称为主内存,又被分为启动镜像区(boot image area)、内部存储区(internal memory area)、静态存储区(static memory area)和动态存储区(dynamic memory area)。

1)      启动镜像区

启动镜像区的物理地址范围是0x00000000~0x07FFFFFF(128MB),这个区域是用于启动系统的,但是这个区域内并没有实际的存储介质与之对应。这个区域反映一个镜像,这个镜像指向内部存储区或是静态存储区的一部分。启动镜像区的开始地址固定式0x00000000。在本设计中,通过上面描述的OM[4:0]选择据顶的启动介质后再把相应的介质的物理地址映射到这个启动镜像区,比如说选择了IROM启动方式(见图1)后,就把IROM所占用的地址空间映射为0x00000000开始的空间。在本设计中,比如我们选择NAND作为启动介质,而又是Xm0CSn2选择NAND的片选,那么就把0x20000000~0x27FFFFFF(为什么是这个范围呢?见下图)这128MB的物理地址映射到启动镜像区。

图8

2)      内部存储区

内部存储区用于启动代码(boot loader)访问内部ROM和内部SRAM,内部的SRAM也成为steppingstone。每块内存存储器的起始地址都是固定的,其中内部ROM的范围是0x08000000~0x0BFFFFFF(见图8),当然内部的ROM并没有64MB这么多,而实际只有32KB用于存储,该区域是只读的,并且当内部ROM(IROM)启动被选择时,该区域能映射到启动镜像区,此种情况下,该区域存放放的是IROM方式下的启动代码,选择IROM启动的时候首先运行的就是这部分的代码,称为BL0,这部分代码由厂家固化。内存SRAM的范围是0x0c000000~0x0fffffff,实际可用的SRAM按照三星的手册是4KB,其实这就是用于nand flash启动的Steppingstone(但是这个Steppingstone是8KB,这2者似乎有矛盾,我觉得应该是写这部分的作者的笔误)。该区域能被读写,当NAND启动被选择时能映射到启动镜像区。

3)      静态存储区

静态存储区域的地址范围是0x10000000~0x3FFFFFFF(6*128MB),通过该地址可以访问SROM、SRAM(比如DM9000A)、NOR Flash、同步NOR接口设备和steppingstone。每一块区域代码一个片选(见图8),比如如果用Xm0CSn[1]来作为DM9000A的片选信号,0x18000000~0x1FFFFFFF就代表Xm0CSn[1],我们就可以通过0x18000000~0x1FFFFFFF来访问DM9000A自带的SRAM。每个芯片选择的开始地址都是固定的。

虽然Xm0CSn[5:2]可以映射到NAND Flash和CF/ATA等非线性存储器,但我们不能通过静态存储区来访问NAND Flash和CF/ATA的地址空间,相反,当映射到这些存储器的时候这些bank的地址也不能再使用了,而只能通过pheriperal空间的AHB总线来访问这些非线性存储器。有一个例外是如果Xm0CSn[2]被映射到NAND Flash的时候,Steppingstone映射到0x020000000~0x27FFFFFF这块区域,具体一点说是steppingstone这4KB的SRAM被映射到bank2开始的4KB,而在以NAND Flash方式启动的时候bank2被映射到0x00000000开始的地方,那么实际上就是把steppingstone映射到0x00000000,,这样,系统启动的时候,会把NAND Flash的第一个4KB最开始的启动代码读取到steppingstone中 来执行,这个读取的动作是由NAND控制器自动完成的。

4)      动态存储区

动态存储区的范围是0x40000000~0x6FFFFFFF(3*256MB),其中第一个256MB为保留区,实际使用的动态内存区位0x50000000~0x6FFFFFF,这个范围又分为2个区间,每个区间占256MB,可以通过DMC(动态内存控制器)的Xm1CSn[1:0]来选择对应的区间,这个内存主要是扩展DRAM,最大可以扩展512MB的DRAM,见图8。下图是开发板用

Xm1CSn[作为DRAM的片选信号的电路图:

图9

结合图8,可以得出g_oalAddressTable表的DRAM区域范围如下:

DCD     0x80000000, 0x50000000,  256    ; 256 MB DRAM

3.2   pheriperal空间

外设区域通过PERI总线访问,其地址范围是 0x70000000~0x7FFFFFFF(256MBytes),这个地址范围的所有的SFR都能被访问,而且如果数据需要从NFCON或CFCON传输,这些数据需要通过PERI总线传输。

S3C6410设备时钟源选择、启动方式选择和内存映射相关推荐

  1. k8s minikube启动时指定镜像源的启动方式

    k8s minikube启动时指定镜像源的启动方式

  2. 32f407tim4时钟源频率_慎重选择时钟发生器,别让这俩指标影响你的ADC 「图片」...

    系统设计师通常侧重于为应用选择最合适的数据转换器,在向数据转换器提供输入的时钟发生器件的选择上往往少有考虑.然而,如果不慎重考虑时钟发生器的相位噪声和抖动性能,数据转换器动态范围和线性度性能可能受到严 ...

  3. 野火linux启动方式选择拨码开关,embed_linux_tutorial

    硬件资源介绍--野火EBF 6ULL 开发板 在PC上通过Ubuntu熟悉了Linux系统的基础使用后,我们尝试体验一下在嵌入式开发板上的Linux系统.先来了解一下开发板的硬件资源. 关于开发板的硬 ...

  4. S3C6410启动方式

    目前的ARM处理器都支持多种启动模式,S3C6410和以前的Samsung的ARM处理器一样,通过外部管脚OM[4:0]的拉高拉低来决定是从哪个存储设备上启动.我认为S3C6410的User Manu ...

  5. ARM(IMX6U)裸机之I.MX6ULL硬件启动方式的选择

    参考:Linux之ARM(IMX6U)裸机之I.MX6ULL启动方式详解 作者:一只青木呀 发布时间: 2020-08-09 16:32:07 网址:https://blog.csdn.net/wei ...

  6. ## I.MX6ULL学习笔记一I.MX启动方式

    技术标签: Linux学习 linux 物联网 嵌入式 一.硬件启动方式选择 I.MX6U 支持多种启动方式以及启动设备,比如可以从 SD/EMMC.NAND Flash.QSPI Flash等启动. ...

  7. 万事开头难 - 介绍IMX6ULL启动方式

    不同开发板,启动方式不一样,今天我们来介绍imx6ull开发板的启动方式,这非常重要.若不了解清楚启动方式,后面的所有开发工作便无从谈起. 本文摘自100ask_imx6ull 开发板 配套学习手册- ...

  8. Alientek I.MX6UL Linux-第九章 I.MX6U的启动方式

    启动方式选择   BOOT模式有两种   1.改写eFUSE(熔丝);   2. 修改相应的GPIO高低电平.   第一种修改eFUSE的方式只能修改一次,后面就不能再修改了,所以作为学习与调试我们不 ...

  9. 韦东山 IMX6ULL和正点原子_万事开头难 - 介绍IMX6ULL启动方式

    不同开发板,启动方式不一样,今天我们来介绍imx6ull开发板的启动方式,这非常重要.若不了解清楚启动方式,后面的所有开发工作便无从谈起. 本文摘自100ask_imx6ull 开发板 配套学习手册- ...

最新文章

  1. $(document).ready(function() {})不执行的问题
  2. c语言开发工具程序代码是什么文件,【C语言】开发工具--GCC使用入门
  3. ruby中的self
  4. Layui父级页面调用子级页面方法
  5. OS开发UI篇—Quartz2D使用(截屏)
  6. careercup-递归和动态规划 9.10
  7. Asp.net 高性能数据分页函数,调用示例
  8. notify和notifyall的区别
  9. 基础集合论 第一章 3 集合论的公式和条件
  10. Android音视频系列(七):PCM音频单声道与双声道的相互转换
  11. 一文掌握秩和比综合评价法
  12. G950U破解电信4G正确姿势
  13. 动态路由协议:华为路由器配置RIP协议
  14. ubuntu14.04下deb文件安装mysql数据库
  15. 开箱-艳云脚本云控系统
  16. iOS10.3正式版发布:iOS10.3新功能有哪些? 韩俊强的博客
  17. 国庆锦鲤大礼包,还不Pick一下~
  18. 考计算机854的学校,2020年哈尔滨工业大学854计算机基础硕士研究生入学考试科目大纲...
  19. 互联网公司为何杀死中年人?三年醇,五年陈,十年滚!
  20. JavaScript是解释型语言--V8、JIT

热门文章

  1. 003_Spring Data JPA分页和排序查询
  2. java的classpath配置文件_Java Classpath及.properties配置文件
  3. python学习环境安装_python学习系列----环境的安装
  4. cf网络原因服务器无响应,CF由于网络原因连接服务器失败请重试 1033_10136
  5. unsigned char对应java_Java的数据类型,怎么就没有uchar呢
  6. Android5.0新特性:主题样式
  7. AI CC2018软件安装教程
  8. Pytorch 怎么构建自己的数据集。怎么重写官方数据集。
  9. java dayofweek_Java DayOfWeek getDisplayName()用法及代碼示例
  10. 360能删除mysql吗_如何彻底删除MYSQL