完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
RK333228 Android 7.1 .img不烧录更新的原因是什么?
怎样去解决RK333228 Android 7.1系统.img不烧录更新的问题呢?
|
|
相关推荐
1个回答
|
|
RK3328 Android 7.1 增加custom分区,当system分区比较大的时候,烧录update.img之后不开机
问题现象: 增加了custom分区,刚开始都正常,随着system打包的东西越来越多,出现了,当增加一个apk进system之后,编译出来的update.img烧录,机器无法开机,log打印为system分区损坏了!将system打包的东西去掉一点,或者将system分区增大,重新编译烧录,又可以开机了! RK烧录用的system是raw格式的ext4文件系统img,打包脚本在源码根目录下,文件:mkimage.sh,如下代码: if [ -d $OUT/system ] then echo -n "create system.img... " if [ "$FSTYPE" = "cramfs" ] then chmod -R 777 $OUT/system $FAKEROOT mkfs.cramfs $OUT/system $IMAGE_PATH/system.img elif [ "$FSTYPE" = "squashfs" ] then chmod -R 777 $OUT/system mksquashfs $OUT/system $IMAGE_PATH/system.img -all-root >/dev/null elif [ "$FSTYPE" = "ext3" ] || [ "$FSTYPE" = "ext4" ] then if [ "$PRODUCT_SYSTEM_VERITY" = "true" ]; then if [ $TARGET == $BOOT_OTA ] then mv unsparse_system-*.img $IMAGE_PATH/system.img else python ./build/tools/releasetools/build_image.py $OUT/system $OUT/obj/PACKAGING/systemimage_intermediates/system_image_info.txt $OUT/system.img $OUT/system echo -n "translate verified sparse image to raw image... " simg2img $OUT/system.img $IMAGE_PATH/system.img fi else #system_size=`ls -l $OUT/system.img | awk '{print $5;}'` system_size=$BOARD_SYSTEMIMAGE_PARTITION_SIZE [ $system_size -gt "0" ] || { echo "Please make first!!!" && exit 1; } MAKE_EXT4FS_ARGS=" -L system -S $OUT/root/file_contexts -a system $IMAGE_PATH/system.img $OUT/system" ok=0 while [ "$ok" = "0" ]; do make_ext4fs -l $system_size $MAKE_EXT4FS_ARGS >/dev/null 2>&1 && tune2fs -c -1 -i 0 $IMAGE_PATH/system.img >/dev/null 2>&1 && ok=1 || system_size=$(($system_size + 5242880)) done e2fsck -fyD $IMAGE_PATH/system.img >/dev/null 2>&1 || true fi else mkdir -p $IMAGE_PATH/2k $IMAGE_PATH/4k mkyaffs2image -c 2032 -s 16 -f $OUT/system $IMAGE_PATH/2k/system.img mkyaffs2image -c 4080 -s 16 -f $OUT/system $IMAGE_PATH/4k/system.img fi echo "done." fi 可以看到,当文件系统格式为“ext3”或“ext4”的时候,有3种打包system.img的方式! 一开始一直以为是system分区的问题,但其实编译的时候,并没有分区超出设定值的报错,所以就在不编译的情况下,手动打包system.img,如下命令: export PATH=/home/123/Android/out/host/linux-x86/bin:$PATH make_ext4fs -l 2147483648 -L system -S ./root/file_contexts.bin -a system ./system.img ./system 先引入环境变量,然后再打包raw格式的system.img,大小为2G,或者将Android编译生成的sparse格式system.img,直接转换成raw格式: simg2img system.img system_raw.img 如何判断生成的.img是不是raw格式,可以用file命令:file system.img system.img: Linux rev 1.0 ext4 filesystem data, UUID=da594c53-9beb-f85c-85c5-cedf76546f7a, volume name “system” (extents) (large files) 然后使用手动打包的system.img再生成update.img,参考源码目录文件: device/rockchip/common/build_base.sh 如下部分: mkdir -p $PACK_TOOL_DIR/rockdev/Image/ cp -f $IMAGE_PATH/* $PACK_TOOL_DIR/rockdev/Image/ echo "Make update.img" cd $PACK_TOOL_DIR/rockdev && ./mkupdate.sh if [ $? -eq 0 ]; then echo "Make update image ok!" else echo "Make update image failed!" exit 1 fi cd - mv $PACK_TOOL_DIR/rockdev/update.img $IMAGE_PATH/ rm $PACK_TOOL_DIR/rockdev/Image -rf 发现,再怎么搞system.img,问题依然存在,但是单独烧录system.img或者使用OTA整包升级,问题又没有了! 所以,怀疑和烧录工具有关系,使用RK的原生系统验证,原生系统没有增加custom分区。测试结果,就算system分区占满了,使用率100%,也依然正常开机,所以,又感觉不像是工具的问题! 这时候,发现,custom分区使用的是sparse格式的img,刚好这个分区和system相邻,但其实,system分区占用率比较小的时候,sparse格式的custom.img也是正常烧录和挂载的,并且RK回复是支持sparse格式的img烧录的! 先不管怎么说,使用raw格式的custom试一下,直接将Android编译出来的sparse格式的custom.img,使用simg2img命令转换成raw格式,打包update.img,烧录之后,之前无法开机的系统可以开机了! 另外,打包sparse格式的custom.img之后,SD升级完无法挂载custom分区,使用了raw格式之后,SD升级完也正常了! 结论: RK的打包update.img的工具,或者是烧录的工具,对sparse格式的img支持不够好,所以,增加分区之后,需要将sparse格式转换成raw格式,在打包update.img升级! |
|
|
|
你正在撰写答案
如果你是对答案或其他答案精选点评或询问,请使用“评论”功能。
1988 浏览 1 评论
synopsys 的design ware:DW_fpv_div,浮点数除法器,默认32位下,想提升覆盖率(TMAX),如果用功能case去提升覆盖率呢?
2490 浏览 1 评论
RK3588 GStreamer调试四路鱼眼摄像头四宫格显示报错
5272 浏览 1 评论
【飞凌嵌入式OK3576-C开发板体验】RKNN神经网络-YOLO图像识别
254 浏览 0 评论
【飞凌嵌入式OK3576-C开发板体验】SSH远程登录网络配置及CAN通讯
1336 浏览 0 评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-11-25 17:15 , Processed in 1.148688 second(s), Total 74, Slave 55 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号