ARM裸机:怎么启动?

器件了解

  • 内存:
    SRAM 静态内存
    特点就是容量小、价格高,优点是不需要软件初始化直接上电就能用
    DRAM 动态内存
    特点就是容量大、价格低,缺点就是上电后不能直接使用,需要软件初始化后才可以使用

SRAM (Static Random Access Memory) 和 DRAM (Dynamic Random Access Memory) 都是计算机中常见的内存类型,但它们的工作原理和性能有所不同。

SRAM:

SRAM是静态随机存取存储器,它的特点是数据在不供电的情况下也能保持,因此访问速度非常快,通常用于高速缓存(Cache)和处理器内部的数据结构。
它不需要周期性的刷新操作,因为数据不会因电力断开而丢失。
由于SRAM的非易失性特性,它功耗较高,成本也相对昂贵。
DRAM:

DRAM是动态随机存取存储器,数据存储在电容器上,需要定期刷新以防止数据丢失。刷新频率通常是几千到几万次每秒。
主要用于主内存(Main Memory)或系统内存,比如RAM,容量比SRAM大得多,但访问速度相对较慢。
DRAM的功耗较低,但由于其需要频繁刷新,设计上通常使用了DRAM刷新定时器来管理刷新操作。

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

  • 外存:
    Norflash 特点是容量小,价格高,优点是可以和CPU直接总线式相连,CPU上电后可以直接读取,所以一般用作启动介质

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

NorFlash,全称是“Non-Volatile RAM”,中文通常称为“非易失性闪存”。它是一种固态存储器,用于持久性数据存储,常见于嵌入式系统、U盘、SD卡等设备中。与NandFlash相对的是NOR(Normal RAM),NOR闪存的特点是可以像普通RAM一样被随机读写,但它的速度相对较慢,功耗较高。

NandFlash的优势在于:

高密度:相同体积下能存储更多的数据。
成本效益:生产成本低,适合大量生产。
低能耗:与DRAM相比,NandFlash在休眠模式下几乎不消耗电力。
集成度高:现代NandFlash芯片集成了控制逻辑和接口,简化了系统设计。
然而,NandFlash也有一些限制:

写入速度慢:尤其是对于随机写操作,不如SDD或NOR快。
有限的写次数:每块NandFlash都有一个写入次数限制,超过后可能需要特殊处理或更换。
容易出现坏块:长时间使用后,可能会出现不可修复的坏块。

所以一般PC机都是:很小容量的BIOS(NORFlash)+很大容量的硬盘(类似于NandFlash)+大容量的DRAM

一般的单片机:很小容量的NorFlash+很小容量的SRAM

嵌入式系统:因为NorFlash很贵,随意现在很多嵌入式系统倾向于不用NorFlash,直接用:外接的大容量Nand+外接大容量DRAM+SOC内置SRAM

S5PV210使用的启动方式是:外接的大容量Nand+外接大容量DRAM+SOC内置SRAM
实际上210的启动还要更好玩一些,210内置了一块96KB大小的SRAM(叫iRAM),同时还有一块内置的64KB大小的NorFlash(叫iROM)
210的启动过程大致是:
第一步:CPU上电后先从内部IROM中读取预先设置的代码(BL0),执行行。
这一段IROM代码做了一些基本的初始化(CPU时钟、关看门狗)…(这一段IROM代码是三星出厂前设置的,三星也不知道我们板子上将来接的是什么样的DRAM,因此这一段IROM是不能负责初始化外接的DRAM的,因此这一段代码只能初始化SOC内部的东西):然后这一段代码会判断我们选择的启动模式(我们通过硬件跳线可以更改板子的启动模式),然后从相应的外部存储器去读取第一部分启动代码(BL1,大小为16K)到内部SRAM。
第二步:从SRAM去运行上一步读取过来的启动代码,然后去执行。这段启动代码就会负责初始化Nand,初始化DRAM,初始化板卡,然后将OS从Nand读取到DRAM,然后运行。
第二步:从IRAM去运行刚上一步读取来的BL1(16KB),然后执行。BL1负责初始化NandFlash,然后将BL2读取到IRAM(剩余的8OKB)然后运行
第三步:从IRAM运行BL2,BL2初始化DRAM,然后将OS读取到DRAM中,然后启动OS,启动过程结束。

资料:S5PV210_iROM_ApplicationNote_Preliminary_20091126.pdf

思路:因为启动代码的大小是不定的,有些公司可能96kb就够了,有些公司可能1MB都不够。所以刚才说的2步的启动方式不合适。
解决方案是:把启动代码分为2半(BL1和BL2),这两部分协同工作来完成启动。

  • BL0做了什么?
    关看门狗
    初始化指令cache
    初始化栈
    初始化堆
    初始化块设备复制函数device copy function
    设置SoC时钟系统
    复制BL1到内部IRAM(16KB)
    检查BL1的校验和
    跳转到BL1去执行

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

  • S5PV210的所有启动
    CM[5]= 0
    先1st启动,通过OMpin选择启动介质
    再2nd启动,从SD卡通道2
    再Uart启动
    再USB启动

板子上选择不同的启动模式

从SD0的eMMC启动和外置SD卡从SD2通道启动是串联关系,OMpin设置保持不变
OM0-OM5
101100

使用USB启动来做裸机调试
OM0-OM5
101101
1xxxx1

总结

了解内存、外存的区别,对启动的需求
理解S5PV210 的启动大致流程

学习记录,侵权联系删除。
来源:朱老师物联网大课堂

  • 27
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

li星野

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值