专家
公告
财富商城
电子网
旗下网站
首页
问题库
专栏
标签库
话题
专家
NEW
门户
发布
提问题
发文章
嵌入式
嵌入式Linux裸机开发(二)——S5PV210启动过程分析
2019-07-13 00:26
发布
生成海报
站内文章
/
嵌入式Linux
14787
0
1196
嵌入式
Linux
裸机开发(二)——
S5PV210
启动过程分析
一、
iROM
启动方式简介
友善之臂Smart210开发板的SoC为三星S5PV210,S5PV210采用iROM启动方式进行启动,通过查阅三星官方S5PV210文档
s5pv210_irom_applicationnote_preliminar
y可知,iROM启动方式支持从
MoviNAND/iNand, MMC/SD Card ,pure Nand, eMMC, eSSD
, UART and USB
等存储设备启动。
1、
硬件支持需求
使用iROM启动方式有几种硬件需求:
A、
基于
CortexA8
的
S5PV210X
微处理器
B、64KB
iROM
C、96KB iRAM
D、
通用的
SDRAM
和控制器
E、
4/8 Bit
的高速
SD/MMC
控制器
F、
4-bit SD / 4-bit MMC / 4 or 8-bit eMMC
G、
Nand Flas
h
控制器
H、
OneNand
控制器
I、
eSSD
控制器
J、
UART/USB
控制器
2、
启动模式
A、
OneNand
启动
(Mux/Demux)
B、
Nand启动(支持
8/16-Bit ECC
)
C、MMC启动(MMC4.3标准,兼容eMMC)
D、eSSD启动
E、
UART/USB
启动
安全启动模式支持:
对除
UART/USB
外的所有启动设备的
BootLoader采用整体校验
,安全秘钥值写在S5PV210内部,如果安全秘钥值没有写在S5PV210内部,则为非安全启动模式。三星在制造阶段就将安全秘钥值写入到了S5PV210内部。
第二启动模式支持:当第一启动模式(安全启动模式)失
败后,就会试图
从4 bit的
SD/MMC
通道
2
通过
SD/MMC
启动。
3、
iROM
启动方式的优点
A、降低BOM(材料清单)成本
iROM启动支持从
Movinand/iNAND/MMC/eMMC Card, eSSD
设备启动,系统无需启动介质就可以启动,
不需要像
nor flash
这样的启动设备
。
B、改善读特性
采用
iROM
启动方式从
nand flash
启动时,
S5PV210
支持
8/16-bit H/W ECC
。
但是
16-bit EC
C仅支持
4KB 5cycle
的
Nand
。
C、降低生产成本
能从其他启动设备烧录启动设备,无需
Gang programmer
烧录器
4
、电路设计
A、使用
OM
引脚选择
iROM启动设备
B、
所有的S5PV210启动设备都可以
从
MMC
通道
2
使
用
SD/MMC
设备以
第二启动方式
启动。
C、
OneNand
启动时,
Xm0CSn4/NFCSn2/ONANDXL_CSn0
信号必须
有效。
BL1代码段起始处必须是BL1的校验数据。
D、
Nand启动时,
Xm0CSn2/NFCSn0
信号必须有效
。
BL1代码段起始处必须是BL1的校验数据。
E、
SD/MMC/eMMC
启动时,
MMC
通道
0分配给第一启动模式使用,通道2分配给第二启动模式使用。BL1代码段起始处必须是BL1的校验数据。
F、UART启动使用串口端口2
二、
iROM
启动流程
S5PV210启动过程分为BL0、BL1、BL2三个阶段,
S5PV210内部有96Kb的IRAM和64Kb的IROM
。
S5PV210启动过程如下图:
第一步:iROM初始化,初始化系统时钟、特殊设备控制寄存器和启动设备
第二步:iROM启动代码加载BL1(bootloader)到iRAM,在安全启动模式下iROM对BL1进行整体校验。
第三步:执行BL1,BL1加载BL2(剩余的bootloader)到iRAM,BL1将会对BL2进行整体校验。
第四步:执行BL2,BL2初始化DRAM控制器,加载kernel到SDRAM
第五步:跳转到OS起始地址,进入系统
1
、
BL0
启动阶段
在BL0阶段初始化的内容如下:
1、
关闭看门狗
2、
初始化icache
3、
初始化栈(设置中断栈、SVC栈)
4、
初始化堆
5、
初始化块设备copy函数
6、
初始化PLL和设置系统时钟
7、
拷贝BL1到iram
8、
校验BL1,如果校验失败,将从SD卡启动
9、
检查是否是安全启动模式
10、
跳转到BL1的地址
2
、第一启动模式启动流程
安全启动模式(第一启动模式)的启动过程:
3
、第二启动模式启动流程
第二启动模式的启动过程:
4
、
UART
启动模式
S5PV210 iROM
支持串口下载功能,串口下载一般通过发送校验位到
DNW进行校验,不关心启动设备。对于串口下载来说不需要选择信号。为了避免串口超时错误,用户需要在开发板电源打开之前设置DNW配置,也就是当BL1代码被选中,下载进程启动时,iROM就应该被启动。
5、
USB
启动模式
S5PV210 iROM
支持
USB下载功能。如果串口超时发生,iROM会试图从USB模式启动。为了避免USB协商超时错误,用户必须预先用USB线连接好目标开发板和PC。如果USB连接好,用户就能通过USB线下载BL1镜像到开发板。
在UART、USB启动模式下BL1不需要头信息,BL1代码的基地址是0xD0020000。在其他启动模式下,BL1必须有头信息,BL1代码的基地址是
0x
D
0020010
。
三、
iROM
启动的其他细节
1
、
iROM
内存分配
2、
全局变量
如果用
MMC
设备启动,
MMC卡的信息必须保存在特殊区域。
2、
设备拷贝函数
S5PV210
内部有一段用于启动设备的块拷贝函数的
ROM代码,因此开发者不需要实现设备拷贝函数。这些内部函数能从存储设备中拷贝任何数据到SDRAM,用户在iROM启动过程完成后仍然可以使用这些函数。
2、
启动设备启动扇区分配
SD/MMC/eSSD
设备启动扇区分配
eMMC设备启动扇区分配
OneNAND/NAND
设备启动扇区分配
如果从
Nand启动,Nand ECC数据应该项如下设定:
对于
8bit ECC来说,
ECC
数据大小是
13字节
对于
16bit ECC来说,
ECC
数据大小是
26字节,但是对于每一种Nand flash,ECC的大小是不一样的,因此需要去查阅Nand flash的数据手册。
2、
启动代码的头信息数据
BL1必须有头信息数据,头信息数据是用于通过iROM复制BL1到iRAM中使用,头信息数据有两种信息,一种是BL1的大小,一种是BL1数据校验。当加载BL1时,iROM检查位于头数据中的BL1的大小,拷贝BL1到iRAM。拷贝完BL1后,iROM计算拷贝的BL1的数据和,与位于BL1头数据信息中的校验和数据进行比较。如果成功,BL1启动,
否则iROM将会试图从SD/MMC通道2端口的第二启动模式(
4-bit SD/MMC
)启动
。计算数据校验和的代码如下:
for(count=0;count< dataLength;count+=1)
{
buffer = (*(volatile u8*)(uBlAddr+count));
checkSum = checkSum + buffer;
}
Count
:无符号整型
dataLength
:
BL1
的大小
buffer
:从
BL1
读取
1
字节数据的存储变量
Checksum
:
BL1
的校验和
2、
时钟设置
S5PV210只有24MHZ的外部晶体振荡器可用。
本博文翻译自:三星S5PV210官方S5PV210_iROM_ApplicationNote文档
Ta的文章
更多
>>
嵌入式Linux裸机开发(二)——S5PV210启动过程分析
0 个评论
硬件工程师电路设计必须紧记的十大要点
0 个评论
热门文章
×
关闭
举报内容
检举类型
检举内容
检举用户
检举原因
广告推广
恶意灌水
回答内容与提问无关
抄袭答案
其他
检举说明(必填)
提交
关闭
×
打开微信“扫一扫”,打开网页后点击屏幕右上角分享按钮