s3c6410地址映射

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。

OK6410开发板ARM基本介绍(一)S3C6410的地址映射相关推荐

  1. S3C6410(OK6410开发板介绍)

    S3C6410(OK6410开发板介绍) 1.   系统资源 A.处理器 Samsung S3C6410处理器,ARM1176JZF-S内核,主频533MHz/667MHz B.FLASH 1G字节N ...

  2. OK6410开发板学习之外部中断(按键点亮led和蜂鸣器)

    中断在嵌入式里面是很常见的一个功能了.通过这个功能,可以让CPU减轻很多负担,不用不断的查询设备的状态.提高了CPU的效率. 中断的大体过程如下: 中断源检测中断信号产生,然后将中断信号发送给中断控制 ...

  3. OK6410开发板学习之一步一步实现精简BootLoader(BL1部分)

    众所周知,ok6410开发板是一块基于s3c6410芯片的开发板,板载资源丰富.s3c6410是三星电子生产的基于arm11内核的芯片.本文旨在总结一下bootloader操作步骤,用于以后复习.查找 ...

  4. 基于OK6410开发板Uboot源码简单分析

    2018-04-07 OK6410开发板是基于三星S3C6410芯片设计的一款开发板,资源比较丰富,可是想要使用这些资源就需要编写相应的启动引导程序,即BootLoader.当然,想要自己凭空写出Bo ...

  5. OK6410开发板Uboot学习总结----(三)从SD卡启动分析

    前面讲了Uboot启动流程和如何修改调试串口,相信大家对Uboot已经有了初步的了解,今天来进行更深一点的分析.上篇文章 OK6410开发板Uboot学习总结----(二)修改调试打印串口 遗留一个问 ...

  6. 飞凌OK6410开发板移植u-boot官方最新版u-boot-2012.10.tar.bz2

    Part0 准备知识 0.1 关键参数说明 0.1.1 开发板说明 OK6410是飞凌公司发布的一款开发板,当前有2个版本,OK6410-A和OK6410-B,我当前使用的是前者:前者也经历过升级,所 ...

  7. iTOP-4418嵌入式开发板接口基本介绍

    iTOP-4418嵌入式开发板是迅为电子设计研发的一款四核Cortex-A9开发板,可广泛适用于工控.智能家居.医疗.多媒体.安防.车载.金融.消费电子.手持设备.显示控制.教学.电力.通讯等领域. ...

  8. OK6410开发板调试EC20通信模块

    作为一名小白鼠,经过我长达半个月的艰苦努力下,终于在板子上调通了EC20模块.话不多说,下面记录我碰到的问题和解决方案. /************************************** ...

  9. OK6410开发板linux系统下的SPI驱动和测试

    OK6410下的SPI驱动是可以用的,但是飞凌把它作为其它用途了,我们修改一些代码才能在/dev目录下创建SPI的设备节点文件 Step1:打开arch/arm/mach_s3c64XX/mach_m ...

最新文章

  1. Java学习笔记28
  2. vscode请更新includepath_VS Code Java 九月更新!Coding Pack for Java 带来一键安装新体验!...
  3. 为什么先交钱后用电_适合痘痘痘印的好的护肤品,为什么要先清洁后祛痘!_新闻中心...
  4. Spring定时任务注解@Scheduled+@EnableAsync用法详解(简单说明+应用场景+demo源代码+执行过程分析)
  5. FATE HDU - 2159(二维完全背包)
  6. python开发环境功能介绍_第一模块 第3章 Python介绍与环境配置
  7. Spring Boot 与 Java 对应版本,以下表格由官方网站总结。
  8. npcap loopback adapter是什么意思_抖音限流是什么意思? 抖音为什么突然限流?
  9. mysql 几级缓存_Mysql中一级缓存二级缓存区别
  10. 交换二叉树中所有结点的左右子树的位置
  11. MyBatis学习总结(26)——Mybatis源码中使用了哪些设计模式?
  12. 14-----表单输入绑定
  13. fullCalendar:中文API
  14. 游戏开发之类的构造函数和析构函数(C++基础)
  15. MyBatis的XML配置文件(一)
  16. NonActionAttribute使用说明
  17. linux下多线程断点下载工具-axel
  18. 三大运营商布局金融的套路不同,还能否搭上移动支付的快车?
  19. PS常用工具理解及常用快捷键大全
  20. 32位版本的轻量级linux,适用于旧计算机的10种最佳轻量级Linux发行版

热门文章

  1. 近十年的VI-SLAM算法综述与发展
  2. asp.net汽车保养美容店维修管理系统
  3. 转:团队协作效率低?多半是这5大障碍搞的鬼
  4. GET http://localhost:8080/***.png net::ERR_BLOCKED_BY_CLIENT 无法加载图片
  5. 如何设置textarea文本框中的内容为只读不可修改状态
  6. JQuery设置textarea只读readonly
  7. 质数表因式分解 c语言,素数表+因式分解+完美数
  8. LiveNVR监控流媒体Onvif/RTSP常见问题-页面中如何配置开启输出RTSP流
  9. 基于FPGA的 矩阵键盘按键识别 【原理+源码】
  10. 导入项目出现a cycle was detected in the build path of project问题解决