热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

s3c6410地址映射

1.1寻址空间ARM处理器为32bit处理器,内部32bit地址总线理论寻址空间为4GB,对于6410来说,寻址空间的高2GB在内部为保留

1.1   寻址空间

ARM处理器为32bit处理器,内部32bit地址总线理论寻址空间为4GB,对于6410来说,寻址空间的高2GB在内部为保留(reserved),低2GB(0x0~0x7FFFFFFF)可划分为2部分:主存储区(main memory area)和外设区(peripheral area)


1.2   主存储空间(Main memory area)

6410内核与主存储空间通过SPINE总线连接,主存储为地址空间0x0~0x6FFFFFFF,大小为1792MB的一片区域;其中主存储空间在6410内部划分为以下几部分:

  • Boot镜像区(Boot image area)
  • 内部存储区(Internal ROM area and internal SRAM area)
  • 静态存储区(Static memory area)
  • 动态存储区(Dynamic memory area)
  • 保留区(Reserved memory area)

1.2.1           Boot镜像区(Boot image area)

Boot镜像区位于6410寻址空间的0x0~0x07FFFFFF(128MB)位置,这段区域并没有真正的存储设备,实际运行过程中是映射到内部存储区或静态存储区,Boot镜像区固定起始地址为0x00000000。

Boot 镜像区没有实际的存储设备,只是在一些特定区域的“镜像”,之所以有这种位于0x0地址镜像,主要是因为ARM内核启动之后强制PC从0x0地址开始取指有关。至于与哪些特定区域镜像,与系统配置密切相关(关于系统启动配置详见后续章节说明),当系统为:

1)       SROM (8 bit/16 bit)启动(booting)

当系统为SROM booting 配置,Boot镜像区为SROM控制器的第0个bank(128MB),即0x10000000~0x17FFFFFF地址,支持的存储器可以是SRAM、ROM、Nor flash等,对应地址片选引脚Xm0CSn[0]。

2)       MODEM(8 bit/16 bit)启动(booting)

当系统为MODEM Booting配置,Boot镜像区仅地址为0x00000000~0x00007FFF的32KB区域有效,且对应为6410内部的I_ROM区低32KB字节0x08000000~0x08007FFF。

3)       ONENAND 启动(booting)

当系统为ONENAND 模式启动配置,整个Boot镜像区0x0~0x07FFFFFF全部为静态存储器0x20000000~0x27FFFFFF地址镜像,128MB一一对应。

6410支持2 Bank个ONENAND 地址映射区,分别为ONENAND0 和ONENAND1,只有ONENAND0对应的地址才可能在启动时候镜像到Boot镜像区。

4)       IROM启动(booting)

IROM启动设置之后,Boot镜像区仅地址为0x00000000~0x00007FFF的32KB区域有效,且对应为6410内部的I_ROM区低32KB字节0x08000000~0x08007FFF。

顺便提及一下,I_ROM主要实现的功能是在系统启动之后,执行一些内核、外设初始化,搬移启动代码到Stepping stone区域,然后跳转到该区域执行后续的Booting。

1.2.2           内部存储区(Internal ROM area and internalSRAM area)

6410的内部存储区分为地址0x08000000~0x0BFFFFFF的64MB  I_ROM和地址0x0C000000~0x0FFFFFFF的64MB I_SRAM的两块区域。64MB空间的I_ROM区域实际只有低32KB有效0x08000000~0x0BFFFFFF;64MB空间的I_SRAM区域也不连续分布在0x0C000000~0x0C005FFF区域。

1.2.3           静态存储区(Static memory area)

6410内部的静态存储区地址分布在0x10000000~0x3FFFFFFF,一共6*128MB大小,分为Bank0~Bank5,对应地址片选引脚Xm0CSn[0]~ Xm0CSn[5]。

静态存储区对应的芯片外部接口memoryport0通过外部总线接口(EBI),分别为

SROM控制器、ONENAND控制器、NAND Flash控制器以及CF控制器分享。如下图,memory port0分为片选共享和外部总线接口共享两部分。

静态存储区结构:

摘自《s3c6410 user’s manual REV 1.2》


EBI共享信号如下表:

摘自《s3c6410 user’s manual REV 1.2》

片选信号共享与系统启动模式(包括XSELNAND)和存储区控制寄存器MEM_CTL_CFG的bit5~bit0控制域(MP0_CS_CFG)共同决定。

当系统选择为NANDflash启动配置(XSELNAND=1,OM[4:0]=111x),系统会忽略MP0_CS_CFG的设定,自动使Xm0CSn[2]、Xm0CSn[3]对应NAND Flash CS0、NAND Flash CS1。

当系统选择为ONENANDflash启动配置,系统会忽略MP0_CS_CFG的设定,自动使Xm0CSn[2]、Xm0CSn[3]对应ONENAND Flash CS0、ONENAND Flash CS1。

当系统选择为SROM启动配置,无需配置MP0_CS_CFG,系统自动使Xm0CSn[0]、Xm0CSn[1]对应SROMC CS0、SROMC CS1。

当系统选择为SD启动配置,需要配置MP0_CS_CFG的bit4=1,或bit5=1,使Xm0CSn[4]、Xm0CSn[5]对应到CFCON CS0、CFCON CS1。

MP0_CS_CFG设置:


摘自《s3c6410 user’s manual REV 1.2》

1.2.4           动态存储区(Dynamic memory area)

6410动态存储区地址段0x50000000~0x6FFFFFFF,分为2个bank,每个bank 256MB。

推荐阅读
  • 微软头条实习生分享深度学习自学指南
    本文介绍了一位微软头条实习生自学深度学习的经验分享,包括学习资源推荐、重要基础知识的学习要点等。作者强调了学好Python和数学基础的重要性,并提供了一些建议。 ... [详细]
  • 本文分享了一个关于在C#中使用异步代码的问题,作者在控制台中运行时代码正常工作,但在Windows窗体中却无法正常工作。作者尝试搜索局域网上的主机,但在窗体中计数器没有减少。文章提供了相关的代码和解决思路。 ... [详细]
  • C# 7.0 新特性:基于Tuple的“多”返回值方法
    本文介绍了C# 7.0中基于Tuple的“多”返回值方法的使用。通过对C# 6.0及更早版本的做法进行回顾,提出了问题:如何使一个方法可返回多个返回值。然后详细介绍了C# 7.0中使用Tuple的写法,并给出了示例代码。最后,总结了该新特性的优点。 ... [详细]
  • 本文介绍了为什么要使用多进程处理TCP服务端,多进程的好处包括可靠性高和处理大量数据时速度快。然而,多进程不能共享进程空间,因此有一些变量不能共享。文章还提供了使用多进程实现TCP服务端的代码,并对代码进行了详细注释。 ... [详细]
  • 从零学Java(10)之方法详解,喷打野你真的没我6!
    本文介绍了从零学Java系列中的第10篇文章,详解了Java中的方法。同时讨论了打野过程中喷打野的影响,以及金色打野刀对经济的增加和线上队友经济的影响。指出喷打野会导致线上经济的消减和影响队伍的团结。 ... [详细]
  • Java学习笔记之面向对象编程(OOP)
    本文介绍了Java学习笔记中的面向对象编程(OOP)内容,包括OOP的三大特性(封装、继承、多态)和五大原则(单一职责原则、开放封闭原则、里式替换原则、依赖倒置原则)。通过学习OOP,可以提高代码复用性、拓展性和安全性。 ... [详细]
  • 先看官方文档TheJavaTutorialshavebeenwrittenforJDK8.Examplesandpracticesdescribedinthispagedontta ... [详细]
  • 配置IPv4静态路由实现企业网内不同网段用户互访
    本文介绍了通过配置IPv4静态路由实现企业网内不同网段用户互访的方法。首先需要配置接口的链路层协议参数和IP地址,使相邻节点网络层可达。然后按照静态路由组网图的操作步骤,配置静态路由。这样任意两台主机之间都能够互通。 ... [详细]
  • 本文介绍了C#中生成随机数的三种方法,并分析了其中存在的问题。首先介绍了使用Random类生成随机数的默认方法,但在高并发情况下可能会出现重复的情况。接着通过循环生成了一系列随机数,进一步突显了这个问题。文章指出,随机数生成在任何编程语言中都是必备的功能,但Random类生成的随机数并不可靠。最后,提出了需要寻找其他可靠的随机数生成方法的建议。 ... [详细]
  • Java容器中的compareto方法排序原理解析
    本文从源码解析Java容器中的compareto方法的排序原理,讲解了在使用数组存储数据时的限制以及存储效率的问题。同时提到了Redis的五大数据结构和list、set等知识点,回忆了作者大学时代的Java学习经历。文章以作者做的思维导图作为目录,展示了整个讲解过程。 ... [详细]
  • 本文介绍了如何在给定的有序字符序列中插入新字符,并保持序列的有序性。通过示例代码演示了插入过程,以及插入后的字符序列。 ... [详细]
  • JavaSE笔试题-接口、抽象类、多态等问题解答
    本文解答了JavaSE笔试题中关于接口、抽象类、多态等问题。包括Math类的取整数方法、接口是否可继承、抽象类是否可实现接口、抽象类是否可继承具体类、抽象类中是否可以有静态main方法等问题。同时介绍了面向对象的特征,以及Java中实现多态的机制。 ... [详细]
  • 本文讨论了一个关于cuowu类的问题,作者在使用cuowu类时遇到了错误提示和使用AdjustmentListener的问题。文章提供了16个解决方案,并给出了两个可能导致错误的原因。 ... [详细]
  • 本文介绍了在CentOS上安装Python2.7.2的详细步骤,包括下载、解压、编译和安装等操作。同时提供了一些注意事项,以及测试安装是否成功的方法。 ... [详细]
  • This article discusses the efficiency of using char str[] and char *str and whether there is any reason to prefer one over the other. It explains the difference between the two and provides an example to illustrate their usage. ... [详细]
author-avatar
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有