S5PV210学习笔记一

一、S5PV210内存分布以及上电启动分析

1.内存分布

在这里插入图片描述

各个区域分析
  • 0x0000_0000 - 0x1FFF_FFFF : 这部分的低字节映射片内的IROM和IRAM;
  • 0x2000_0000 - 0x3FFF_FFFF : 为外部的真正的运行内存所准备的空间,内存区域0的起始地址因为程序要放在这里面执行
  • 0x4000_0000 - 0x7FFF_FFFF : 同上;
  • 0x8000_0000 - 0xAFFF_FFFF : 六个Bank每个Bank128M,外设访问空间,用于连接外设模块;
  • 0xB000_0000 - 0xBFFF_FFFF : OneNand/Nand控制器;
  • 0xC000_0000 - 0xCFFF_FFFF : 给一些特定的片外内存预留空间;
  • 0xD000_0000 - 0xDFFF_FFFF : 部分映射片内的IROM和IRAM,部分为DMZROM;
  • 0xE000_0000 - 0xFFFF_FFFF : 存储区映射寄存器空间,s5pv210内部的许多片内外设相关的状态控制器(比如:GPIO Interrupt Control Registers);

2.启动分析

在这里插入图片描述

  • 第一步:开机先运行BL0中的代码,判断启动方式(此处假设是SD卡启动)并且对系统进行一些初始化,并且将SD卡中的前16KB(BL1代码)的程序加载到片内IRAM中运行起来
  • 第二步:BL1代码执行完成一些初始化,再负责将BL2程序搬移到IRAM中运行起来,BL2在进行一些初始化包括时钟和初始化SDRAM等。
  • 第三步:复制OS到SDRAM。
  • 第四步:从BL2中跳转到SDRAM执行,启动过程完成。

2.1 IROM中程序的作用

 BL0程序运行在片内IROM中,属于出场设置,用户无法修改,上电后CPU会直接从IROM上的BLO的代码开始执行。除了开机启动,还有许多其他的复位场景会涉及这段小程序。

  • 第一步:关闭看门狗;
  • 第二步:初始化iCache(指令缓存);
  • 第三步:初始化栈区域;
  • 第四步:初始化堆区域;
  • 第五步:初始化设备拷贝功能;
  • 第六步:初始化PLL并设置系统时钟;
  • 第七步:检查OM PIN引进选择启动方式,决定从那个设备去拷贝BL1程序;
  • 第八步:检查BL1中的checksum(校验头),如果checksum失败,就尝试以第二种启动方式启动;
  • 第九步:检测是不是安全模式启动;
  • 第十步:跳转到BL1的起始地址去执行程序(BL0给PC赋值为0xD0020010);

IROM程序运行完之后的内存图
在这里插入图片描述

结尾:

  初学S5PV210将其分段整理成笔记供自己参考也供与大家学习,如有错误请大佬们直言指出,如果感觉有用那就点个赞留个言,谢谢观众老爷们的赏脸。
  若想获得上述内容的PDF版本移步到GitHub下载。
  地址: https://github.com/QianquanChina/Study-Notes

-----缱绻

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值