2021-01-30 谁借莪1个温暖的怀抱¢ 2022-10-25 04:41 97阅读 0赞 <table> <tbody> <tr> <td style="vertical-align:top;"> <h1 style="margin-left:0px;">RK3399Pro入门教程(2)RK3399Pro分区表和固件组成</h1> </td> </tr> </tbody> </table> <table> <tbody> <tr> <td style="vertical-align:top;width:160px;"> </td> <td style="vertical-align:top;"> </td> </tr> </tbody> </table> <table> <tbody> <tr> <td style="vertical-align:top;width:160px;"> <div> <span style="color:#444444;"><a rel="nofollow"></a></span> <div> <div style="margin-left:15px;"> </div> </div> </div> </td> <td style="vertical-align:top;"> <div> <span style="color:#444444;"><strong><a href="http://t.rock-chips.com/forum.php?mod=viewthread&tid=103" rel="nofollow">楼主</a></strong></span> <div> <div style="margin-left:0px;"> </div> <div> <span style="color:#444444;"><em>发表于 2019-2-14 13:18:33</em> <span style="color:#999999;"> 查看:</span> <span style="color:#f26c4f;">14074</span><span style="color:#cccccc;">|</span><span style="color:#999999;">回复:</span> <span style="color:#f26c4f;">31</span> <span style="color:#cccccc;">|</span> <a href="http://t.rock-chips.com/forum.php?mod=viewthread&tid=103" rel="nofollow">[复制链接]</a> <a href="http://t.rock-chips.com/forum.php?mod=viewthread&action=printable&tid=103" rel="nofollow"><img alt="打印" src="https://img-blog.csdnimg.cn/img_convert/b09870b6ae01137f443b561d8164d021.png"></a> <span style="color:#cccccc;">|</span> <a href="http://t.rock-chips.com/forum.php?mod=viewthread&tid=103&page=1&authorid=20" rel="nofollow">只看该作者</a></span> </div> </div> </div> <div> <div> <div> <table> <tbody> <tr> <td><br><br><span style="color:#444444;">很多同学对3399Pro的启动方式和分区表开始感兴趣了,想着如何自己修改烧写固件,如何修改分区表,<br> 今天就教大家识别下分区表文件parameter.txt以及固件的启动方式<br><br><span style="color:#0000ff;">1. 分区表</span><br><br><br> 首先大家拿到的开发版默认是双系统启动的,里头包含了Android和Linux固件,我们先打开他的分区表来识别下。<br> 请直接看CMDLINE这行信息:<br><br> CMDLINE:mtdparts=rk29xxnand:<br> 0x00002000@0x00002000(uboot),<br> 0x00002000@0x00004000(trust),<br> 0x00002000@0x00006000(misc),<br> 0x00010000@0x00008000(boot),<br> 0x00020000@0x00018000(recovery),<br> 0x00038000@0x00038000(backup),<br> 0x00002000@0x00070000(security),<br> 0x00100000@0x00072000(cache),<br> 0x00500000@0x00172000(system),<br> 0x00008000@0x00672000(metadata),<br> 0x00100000@0x0067a000(vendor),<br> 0x00100000@0x0077a000(oem),<br> 0x00000400@0x0087a000(frp),<br> 0x00375c00@0x0087a400(userdata),<br> 0x00010000@0x00bf0000(boot_linux:bootable),<br> -@0x00c00000(rootfs:grow)<br><br> 他所描述的就是整个emmc中分区的排布方式,烧写工具和启动程序会按照该表进行烧录和引导。他的格式是:<br><br> <strong><span style="color:#ff0000;">分区大小 @ 所在地址 (分区名)</span></strong><br><br> 其中大小和地址都是以<span style="color:#ff0000;"><strong>块</strong></span>为单位(1块=512byte),换算成MByte可以用以下公式:<br><br> <span style="color:#ff0000;"><strong>MByte = N * 512 / 1024 / 1024</strong></span><br><br> 例如我们看uboot这行,<br> 他的分区大小是0x2000, 也就是 8192块 * 512字节每块 / 1024 / 1024 = 4MByte ,所以uboot分区大小就是4M,而他所在的位置也是在emmc 4M的位置。<br><br> 接下去trust分区紧跟uboot分区,所以他所在的地址就是 uboot的地址+uboot大小 = 0x2000+0x2000 = 0x4000<br> 而最后一个分区可以看到他的分区大小是个<span style="color:#ff0000;">减号</span>"<span style="color:#ff0000;">-</span>",意思就是emmc剩下的所有大小全部给他。非常方便吧。一般我们会把user分区放在最后一个分区给用户自由使用。<br><br> 注:EMMC前4M的空间是保留空间,他是用来存放BootLoader和Parameter的,所以请勿挂念。<br><br><br><span style="color:#0000ff;">2. 启动顺序</span><br><br> 开机时候,3399Pro总是会从emmc的0地址读取BootLoader,也就是发布固件里的(MiniLoaderAll.bin),<br> 然后:<br> Loader 引导 trust和uboot,<br> uboot 引导 boot (安卓的kernel resource 和boot打包在一个固件里了)<br> 或 boot_linux (linux的kernel resource)<br><br> boot 挂载 system(Android系统)、metadata、vendor、oem(都是安卓8.1后新加的安卓分区)<br> boot_linux 挂载 rootfs (Linux系统)<br><br> 从而进入了各自的系统里。<br><br> 这里还有个Misc分区没说到,Misc只是一个附加启动命令,如果被烧写,loader(或者uboot)就会读取他的内容并执行(主要是用来进入安卓的recovery模式,还有RK的厂测模式),成功执行完会清空misc分区,这样下次运行时候就不会再次进入。<br><br><br> 那么这么解释完同学们是否已经对RK3399PRO的分区表和启动顺序有了大致的了解了呢。</span></td> </tr> </tbody> </table> </div> </div> </div> </td> </tr> </tbody> </table>
还没有评论,来说两句吧...