高通平台修改Internal SD大小/udisk.bin制作过程
emmc的分区由modem和android的镜像大小决定, 有些分区每次编译的大小可能都不一样.
为了两边的同步,用rawprogram0.xml来记录分区信息, 每次编译时都会根据镜像大小进行修订.
inner sdcard是在modem侧就设置好的, 下面介绍如何修改它的大小.
modem side:
partition.xml中设定了inner sdcard的大小, 和烧写时这个分区所要填充的内容.
从下面的代码可以看出, 这是第14个分区, 分区类型是c, 大小是3696000*512 B. 烧录的文件是udisk.bin
modem_proc/core/storage/tools/jsdcc/partition_load_pt/partition.xml
<extended order="14" type="c" label="UDISK" size="3696000" readonly="false">
<file name="udisk.bin" offset="0"/>
修改这个分区的大小时将需要的size, 除以512填至size处就好了.
Makefile里python ptool.py -x partition.xml, 编译的时候ptool.py脚本会分析partition.xml,
并生成烧写需要的几个重要文件: partition.bin, rawprogram.xml, patch.xml, MBR0.bin and EBR0.bin
至此, modem侧就改好了, 重新编译后生成新的rawprogram.xml.
把新的rawprogram.xml 拷贝到android/vendor/qcom/proprietary/tools/ext4_sparse/重新编译android.
这样inner sdcard的大小就改好了.
issue:
修改后的inner size的分区信息与原始的填充文件udisk.bin是不匹配的(可能产生开机后需要格式化的问题),
需要重新生成.生成的办法如下:
/* 产生size大小的空文件 */
dd if=/dev/zero of=./tmp.bin bs=512 count=(size/512)
/* 制作文件系统 */
mkdosfs [-n volume-name] ./tmp.bin
/* 精简文件大小 */
tmp.bin文件可能很大, 因为只有文件头部的一块内容是有效的, 所以可以只留下头部的内容, 节省空间, 方便移动.
推荐使用这个大小10240000=9.8MB, 因为默认的也是这么大.
dd if=./tmp.bin of=udisk.bin bs=512 count=20000
参考http://sudolee.googlecode.com/svn-history/r230/trunk/note/resize_inner_emmc.note
发表评论