三星S5PV210学习笔记(1)初识S5PV210
2022-08-01 来源:csdn
关于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启动分析再写。
- 三星电子 NRD-K 半导体研发综合体进机,将导入 ASML High NA EUV 光刻设备
- Exynos 2600 芯片成关键,消息称三星将打响 2nm 芯片反击战
- 是德科技助力三星电子成功验证 FiRa® 2.0 安全测距测试用例
- 消息称内存原厂考虑 HBM4 采用无助焊剂键合,进一步降低层间间隙
- 消息称苹果、三星超薄高密度电池均开发失败,iPhone 17 Air、Galaxy S25 Slim手机“变厚”
- Exynos节节败退,消息称三星计划在家电产品中也使用高通芯片
- 消息称三星下代 400+ 层 V-NAND 2026 年推出,0a DRAM 采用 VCT 结构
- 三星前三个季度80英寸以上电视销量同比增长15%
- 消息称三星电子半导体业务危机蔓延至人才领域,大批员工考虑跳槽
- 组团对抗台积电,消息称英特尔计划和三星高层会谈组建“半导体复仇者联盟”