三星S5PV210学习笔记(1)初识S5PV210
2017-12-28 23:04
211 查看
关于S5PV210的更多介绍,可查阅相关文档
S5PV210_UM_REV1.1
S5PV210_iROM_ApplicationNote_Preliminary_20091126
为了能在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-2所示▼:
内置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启动分析再写。
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启动分析再写。
相关文章推荐
- Oracle-05-SQL语句概述、分类&SQL*PLUS概述(初识insert,desc,list,r,del,a,c,n等命令)
- 初识smarty填充数据库数据
- 第十六章(二) 套接字初识
- 初识TradingView(K先图)图表工具
- 初识Centos5,终于把显卡驱动弄好了
- 神经网络和深度学习(一)——初识神经网络
- Game Programming with DirectX -- 01[初识Direct3D]
- ant初识(二)
- ZooKeeper学习笔记:初识zookeeper
- struts2 标签初识 Ajax Tags 下
- [Gerrit服务器集群搭建(一)] 初识Gerrit代码审查系统
- 如何在泛型参数上进行四则运算和初识dynamic类型
- 初识NHibernate.Search+Lucene.Net
- 初识Hadoop
- Android Camera 流程学习记录(零)—— 碎碎念以及 Android 框架初识
- 初识Silverlight 4及其架构
- 初识Cookie
- C#基础-001控制台初识与基本注释
- 威佐夫博弈(Wythoff Game)初识 HDU 1527 POJ 1067