XX教你玩 MiniPC (三)MK908之CPU RK3188启动 bootloader分析

上一篇我们已经弄明白了整个MiniPC的软件组成,但是并不是很清楚系统启动的细节,所以这一篇就仔细说明一下rk3188 从上电开始到启动内核为止的过程。

再说明一点,这篇有一部分是翻译的内容,但针对翻译的内容,我亲自做了一些实际的实验,所以我还是自己坦白,这篇算是“伪原创”吧。

先给大家发原创的链接:https://gist.github.com/sarg/5028505

这个是国外的一个大神做的工作,真是很佩服啊。

那么,有人会问,我们为什么这么费劲的去解析启动部分的内容,第一,我们没有RK3188的datasheet,第二,没有bootloader的源码。而我们的目的是能够自由的开发或移植bootloader到rk3188上,能够启动我们定制的操作系统。如果谁有RK3188的详细datasheet或者bootloader的源码,一定要给我一份啊!

首先,先翻译一下原创的内容吧。绿色的部分是原文没有提及,我自己根据自己的实验猜测的。其中的代码就不拷贝过来了。

如何获取RK3066的BootRom

 

以下是我的步骤。

首先,我在我的设备的升级包(update.img)中发现了一个RK30xxLoader(L)_V1.18.bin的文件。我用rk29Kitchen把它解包出来。

使用strings 命令(linux下)去查看其中的参考字符串,并没有发现有用的地方,所以我觉得这个文件是经过加密混淆过的。

下一个步骤是使用IDA pro来反汇编RKAndroidTool.exe ---rockchip公司提供的用于烧写升级包的工具。在分解过程中,我发现了loader文件使用了RC4的加密方法。这个文件被分隔成512字节的多个块,每个块都被加密。

所以,我用perl写了unpack_loader.pl 脚本,这样我得到了4个输出文件。

1           14a         321c        30_LPDDR2_300MHz_DD
2           3366        c914        rk30usbplug
4           fc7a        3400        FlashData
4           1307a       1ac00       FlashBoot

 

幸运的是,这些文件名都是有意义的名字。

30_LPDDR2_300MHz_DD  是一个dram 初始化处理过程。FlashData 是只是30_LPDDR2_300MHz_DD的拷贝,只不过是512字节对齐(flash的块大小)。

rk30usbplug 是负责MaskRom模式下的处理。FlashBoot是从NAND flash启动的第二阶段,里面也包含了DF

  • 5
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值