ARM裸机——2.ARM体系结构与汇编指令(2)——s5pv210启动过程

参考资料:朱有鹏老师物联网大讲堂核心课程

1 预备知识——内存外存基本概念

1.1 内存

1.1.1 常用内存介绍

ROM

read only memory 只读存储器(只读指的是不能通过地址总线去写FLASH或硬盘。

RAM

ramdom access memory 随机访问存储器(随机指的是访问顺序,例如flash只能顺序访问)。

IROM

internal rom 内部ROM,指的是集成到SoC内部的ROM。

IRAM

internal ram 内部RAM,指的是集成到SoC内部的RAM。
为什么需要设计iROM和iRAM?答案是为了支持多种外部设备启动。

DRAM

dynamic ram 即动态随机存储器,一般用于内存,需要不断地刷新电路,否则数据就消失了。特点就是容量大、价格低,缺点就是上电后不能直接使用,需要软件初始化后才可以使用。

SRAM

static ram 即静态随机存储器,一般用于CPU中的cache(高速缓冲存储器),不需要不停地刷新电路.特点就是容量小、价格高,优点是不需要软件初始化直接上电就能用。

ONENAND/NAND:

onenand是三星发明的一种nand的变种。

SFR

special function register

1.1.2 不同领域的内存选择

单片机中:内存需求量小,而且希望开发尽量简单,适合全部用SRAM。
嵌入式系统:内存需求量大,而且没有NorFlash等可启动介质。
PC机:内存需求量大,而且软件复杂,不在乎DRAM的初始化开销,适合全部用DRAM()。
速度由快到慢 SRAM DRAM ROM

1.2 外存

1.2.1 常用外存介绍

NorFlash

非易失闪存技术,特点是容量小,价格高,优点是可以和CPU直接总线式相连,CPU上电后可以直接读取,所以一般用作启动介质。

NandFlash

快闪记忆体,跟硬盘一样,特点是容量大,价格低,缺点是不能总线式访问,也就是说不能上电CPU直接读取,需要CPU先运行一些初始化软件,然后通过时序接口读写。

eMMC/iNand/moviNand

eMMC(embeded MMC 内嵌式多媒体存储卡)iNand是SanDisk公司出产的eMMC,moviNand是三星公司出产的eMM

oneNAND

oneNand是三星公司出的一种Nand。

SD卡/TF卡/MMC卡

SD卡是(secure digital memory card)安全数码卡,是一种基于半导体快闪记忆器的新一代记忆设备,是在MMC基础上发展起来的。
TF卡是(t-flash)又称micro SD,是采用SanDisk最新的NAND MLC技术以及控制器技术。
MMC卡(MultiMediaCard)缩写,即多媒体卡,也是一种非易失性存储器件,体积小巧,容量大,耗电量低,传输速度快。

SATA硬盘

机械式访问、磁存储原理、SATA是接口

1.2.2 不同领域的外存选择

一般的单片机:很小容量的NorFlash + 很小容量的SRAM。
一般PC机都是:很小容量的BIOS(NorFlash)(初始化内存和硬盘)+ 很大容量的硬盘(类似于NandFlash)+ 大容量的DRAM。
嵌入式系统:因为NorFlash很贵,所以现在很多嵌入式系统倾向于不用NorFlash。直接用外接的大容量Nand(SD卡,iNAND等) + 外接大容量DRAM + SoC内置SRAM。上点后cpu可以将外接NAND中的一部分代码自动读到soc内部sSRAM中(SRAM上电即可运行),从而初始化外部DRAM和NAND。

1.2.3 x210开发板支持的外部存储器

X210有2个版本,Nand版和iNand版,分别使用Nandflash和iNand为外部存储器。我们使用的是iNand版本,板载4GB iNand。
S5PV210共支持4个SD/MMC通道,其中通道0和2依次用作启动。X210开发板中SD/MMC0通道用于连接板载MMC,因此外部启动时只能使用SD/MMC2通道。

1.2.4 小结

1、现代SoC支持多种外部存储器。
2、外部存储器主要用来存储程序(可执行代码),相当于电脑的硬盘。
3、各种不同外部存储器原理不同,大小、性价比不同,一般产品厂家根据需要选择适合自己产品的外存使用。
4、外部存储器和CPU连接一般不是通过地址&数据总线直接相连,因为地址空间不够用。一般都是通过专门的接口来连接的。

2 s5pv210的地址映射详解

S5PV210属于ARM Cortex-A8架构,32位CPU,
CPU设计时就有32根地址线&32根数据线(地址线根数据线根数不一定相同),
32根地址线决定了CPU的地址空间为4G,那么这4G空间如何分配使用?这个问题就是地址映射问题。

s5pv210的具体地址映射

在这里插入图片描述

0x0000_0000 - 0x1FFF_FFFF

1.IROM & IRAM 表示0x0000_0000地址处为0xD000_0000的映射,上电后,cpu将会执行0x0000_0000处所映射地址处的代码。
2.Reserved 此部分留待他用,比用将来cpu升级或重新发行时使用,与我们无关。

0x2000_0000 - 0x7FFF_FFFF

DRAM 0 和 DRAM 1 :这部分将来外接内存,是真正的内存空间,两个区域共1.5G内存空间。

0x8000_0000 - 0xAFFF_FFFF

SROMC_BANK0-5:用来扩展一些器件 ,例如网卡就是接在这里。

0xB000_0000 - 0xBFFF_FFFF

ONENAND和NAND

0xC000_0000 - 0xCFFF_FFFF

Low Power Audio SRAM:外接低功耗音频

0xD000_0000 - 0xDFFF_FFFF

在这里插入图片描述Not Aaliable:类似隔离带,IROM放代码,IRAM放数据,防止互相影响
CMZ:不详

0xE000_0000 - 0xFFFF_FFFF

特殊功能寄存器

3 三星推荐的s5pv210启动过程

在这里插入图片描述在这里插入图片描述

3.1 S5PV210硬件配置

外存控制器外接大容量Nand + SDRAN控制器外接大容量DRAM(SDRAM)
内置了一块96KB大小的SRAM(即iRAM),同时64KB大小的iROM(类似norflash,上电可运行)。

3.2 210的启动过程

第一步

CPU上电后先从内部IROM(64kb)中读取预先设置的代码(BL0),执行。这一段IROM代码首先做了一些基本的初始化(CPU时钟、关看门狗···)(这一段IROM代码是三星出厂前设置的,三星也不知道我们板子上将来接的是什么样的DRAM(SDRAM),因此这一段IROM是不能负责初始化外接的DRAM,这一段代码只能初始化SoC内部的东西);然后这一段代码会判断我们选择的启动模式(我们通过硬件跳线可以更改板子的启动模式),然后从相应的外部存储器去读取第一部分启动代码BL1(bootloader的前16KB)到内部SRAM(96kb)。

第二步

从SRAM(96kb)去运行刚上一步读取来的BL1(16KB),然后执行。BL1负责初始化NandFlash,然后将BL2(bootloader剩余的80KB)读取到SRAM(96kb)然后运行。

第三步

从SRAM(96kb)运行BL2,BL2初始化SDRAM(DRAM的一种),然后将OS读取到SDRAM中,然后启动OS,启动过程结束。

3.3 启动过程中的几点

两级启动

当第一启动模式(SD/MMC0通道)失败时,SD/MMC卡启动模式下将会从SD/MMC2通道尝试再次启动。
这种二级启动是一种冗余设计。SoC中第一启动介质故障而导致不能启动时,可以从备用启动介质启动。我们做裸机实验时从SD2启动就是利用了这一设计特性,破环通道0inand中的uboot,即可从sd卡启动。

BL0做了什么?

关看门狗
初始化指令cache
初始化栈
初始化堆
初始化块设备复制函数device copy function(可当成硬件本身附带的库函数)
设置SoC时钟系统(可有可无,系统内部会初始化)
复制BL1到内部IRAM(16KB)
检查BL1的校验和
跳转到BL1去执行
BL1和BL2在uboot部分详解

如何在开发板上选择不同启动方式

拨码开关设置我们只需动OM5即可,其他几个根本不需要碰。需要SD启动时OM5打到GND,需要USB启动时OM5打到VCC

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值