您的位置:首页 > 其它

三星S5PV210学习笔记(1)初识S5PV210

2017-12-28 23:04 211 查看
关于S5PV210的更多介绍,可查阅相关文档

S5PV210_UM_REV1.1

S5PV210_iROM_ApplicationNote_Preliminary_20091126

(1)概述

S5PV210是三星公司推出的一款32位精简指令集的为移动设备和通用程序领域提供高性价比、低功耗、高性能的解决方案。它内置ARM Cortex-A8内核( V7-A架构)。

为了能在3G和3.5G通信服务提供最优的硬件性能,S5PV210采取了64-bit内部总线架构。这包括许多为像进行移动视频处理、播放控制和裁剪等任务提供了强力的硬件加速器。内置的复用格式编解码器(MFC)能够进行MPEG-1/2/4、H.263和H.264的编解码,以及VC1的解码。这些硬件加速器还支持实时视频交流和模拟电视的输出,HDMI输出NTSC或PAL。

S5PV210还提供了外置储存器的接口。其内存系统为外置的Flash/ROM存储器提供并行接口,DRAM接口。而且DRAM接口支持LPDDR1、DDR2、LPDDR2。

Falsh/ROM接口支持NAND Flash、Nor Flash、OneNAND、SRAM以及ROM类型的外置存储器。

为了减少系统功耗以及加强整体的功能性,S5PV210包含了TFT 24位真彩LCD控制器、摄像机接口、MIPI DSI、CSI-2、电源管理器、ATA接口、4个串口、24通道DMA、5个定时器、通用I/O端口、3个I2S、S/PDIF、3个I2C总线接口、2个HS-SPI、USB Host 2.0、USB 2.0 OTG(480Mbps),4个SD卡接口、4个PLL。

S5PV210芯片的整体架构如下图1-1所示▼:



至于各项功能的细节描述,看文档吧。

(2)内存分布

S5PV210支持的内存范围为0x00000000~0xFFFFFFFF,共4GB大小。其内存分布如下图2-1所示▼:



具体每个内存块的大小如下表所示▼:



其中,内置存储器的分布如下图2-2所示▼:



(3)S5PV210的启动流程

由上述的内存分布可以看出,S5PV210内置了64KB的ROM和96KB的SRAM。启动时,内置的64KB的ROM和96KB的SRAM区域就会被使用。

内置ROM区域(后简称iROM)的启动代码由三星官方提供,使用者一般不可更改。为了保证能安全地启动,S5PV210会首先从iROM启动,并且启动过程中使用e-fuse信息(一段被编程入内存后便不可再更改的数据)。

一般地,下列各种类型的外部存储器都可作为启动设备:

• General NAND Flash memory

• OneNAND memory

• SD/ MMC memory (such as MoviNAND and iNAND)

• eMMC memory

• eSSD memory

• UART and USB devices

一般的,linux+arm嵌入式中,外部存储器中固化着Boot Loader,而iROM和iRAM都是为了能够正确并安全地启动Boot Loader而存在的。

启动代码有3部分,分别是iROM代码(简称BL0)和Boot Loader代码(其中Boot Loader代码分为 2部分,简称BL1和BL2):

① iROM代码:小而简单的平台独立的代码,被固化在内置存储器中;

② BL1代码:小而简单的平台独立的代码,被固化在外部存储器中;

③ BL2代码:大而复杂的平台相关的代码,被固化在外部存储器中。

S5PV210的启动流程如下图所示▼:



特别地,在SRAM区域,BL1最大不超过16KB,BL2最大不超过80KB。

流程简述:

iROM代码即BL0代码被固化在内部64KB ROM中,其作用是初始化基础的系统功能,比如时钟、栈和堆等;

BL0代码在内部96KB的SRAM中运行。根据OM引脚的配置,选择从何种启动设备中读取BL1镜像到SRAM中并执行(此过程中可对BL1镜像进行校验);

BL1从启动设备中读取BL2镜像到SRAM中并执行(此过程中可对BL2镜像进行校验);

BL2主要进行初始化系统时钟、串口、DRAM控制器等。然后从启动设备中读取OS镜像到外部的DRAM中并执行(此过程中可对OS镜像进行校验);

启动完成后,BL2跳转至OS。

启动部分就结束了。

具体地BL0、BL1和BL2做了什么,如下图所示▼:



其中,iROM即BL0的工作如下:

1. 关闭看门狗;

2. 初始化指令缓存控制器;

3. 初始化栈和堆区域;

4. 校验安全码;

5. 设置时钟分频器、锁定时间、PLL以及源时钟;

6. 校验OM引脚和从启动设备(区块0)加载16kb大小BL1到iRAM的0xD0020000处执行;

7. 若安全启动成功,则执行完整校验;

8. 若完整校验通过,则在iRAM中跳转到BL1部分(0xD0020010处执行)

也就是初始化环境–>加载镜像–>校验镜像–>跳转至镜像并执行。

站在内部SRAM即iRAM的角度,流程有▼:

1. 从启动设备加载BL2到iRAM;

2. 若安全启动成功,则进行完整校验;

3. 若完整校验通过,则在iRAM中跳转到BL2部分(跳转地址由软件代码中设置);

4. 若完整校验不通过,则停止BL1;

5. BL2初始化DRAM控制器;

6. 从启动设备(区块1)中加载OS镜像到外部DRAM;

7. 在外部DRAM中跳转到OS代码(0x20000000或0x40000000)。

至于BL1和BL2具体做了什么,这视Boot Loader的代码而定。因为Boot Loader有许多种,比如ARMBoot、U-Boot等等。

S5PV210使用的Boot Loader是U-Boot,所以这部分便留到uboot启动分析再写。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  arm 三星