Exynos 4412启动过程(群聊笔记记录)

本文详细解析了Exynos4412处理器的启动流程,包括iROM、BL1、BL2及U-Boot的角色与工作原理。特别介绍了BL1与BL2在IRAM中的运行情况。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1、Exynos 4412的0地址:

可以看到0x0000_0000 叫做iROM,一共64K。主要功能是根据外部拨码开关选择启动方式。这部分代码是三星固化好的,我们只需要知道怎么拨码选择启动方式。

2、拨码方式:

iROM里的程序就会首先去1st里找程序,如果找不到,然后再去2nd卡里找程序。 

iROM执行以后,会到外部找程序,找到以后,要拷贝8K(后面版本可能不一样,有15K等,如下图就是15K)的程序到内部RAM,这8K的程序就是 BL1(bootloader1)。这部分是三星自己写的,就是这个文件E4412_N.bl1.SCP2G.bin。不开源的。uboot在编译完成后,把BL1和自己拼接到了一起。

我们来看看uboot是怎么把BL1和自己拼接在一起的。uboot的编译脚本如下:

if [ -z $1 ]
then
.ild_uboot.sh
else
.ild_uboot.sh $1
fi

实际是执行了另一个脚本:build_uboot.sh

我们打开build_uboot.sh,里面有一句话:(本来是一行的,我拆成7行。方便大家看)

cat 
E4412_N.bl1.SCP2G.bin 
bl2.bin 
all00_padding.bin 
u-boot.bin 
tzsw_SMDK4412_SCP_2GB.bin 
> u-boot-iTOP-4412.bin

这个是什么意思呢?就是把">"前面几个拼接成一个uboot-iTOP-4412.bin。

第一个文件:E4412_N.bl1.SCP2G.bin 
这个就是BL1  ,刚才说过的,前8K就是他,三星给的,神秘兮兮的

第二个文件:bl2.bin 
这个是BL2,也就是BL1执行后要加载的文件,是Uboot的前14K(后面版本也有其他大小的,如下图就是16K)截取的。

第三个文件: all00_padding.bin
这个完全是为了补齐用的,里面全是0000

第四个:u-boot.bin 
这个才是真正的uboot源码编译出来的镜像文件

最后一个文件是:tzsw_SMDK4412_SCP_2GB.bin 这个是ARM的一项新技术,也就是trustzoon技术,为了系统安全用的,大家可以不管他。

3、最后总结下:

iROM-->BL1--->BL2---->uboot---->zImage---->挂接文件系统

4、补充:

BL1在哪里运行?谁知道?在DDR3运行吗?不,是在IRAM运行。因为这个时候DDR3还没有被初始化,就是说DDR3的控制器还没有初始化。没有办法,只好把BL1放到IRAM中。因为IRAM是可以上电就能使用的。iRAM这个东东造价高,但是好用。总共才256K。所以不能把操作系统装进来,所以要分段去启动。BL2是uboot的一部分,就是uboot的前面一小段程序,也就是前14K,这前14K也是要在IRAM里运行的!也就是说BL1和BL2都是在IRAM里执行的。换句话说BL1并没有初始化DDR3。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Hello Jason

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值