In the Documentation files, there is "Android_Frequently_Asked_Questions.pdf". Please read the "39 How do I customize the update script to update uboot?"
i.MX 6 Series Software and Development Tool|NXP
我通过修改make_update_zip.sh,能够在生成的update.zip中找到u-boot-6q.bin文件了。具体修改是:
将cat <(find {META-INF,system,data}/ -type d) <(find {META-INF,system,data}/ -type f) <(echo boot.img ) | zip -@ ${WD}/update.zip
修改为
cat <(find {META-INF,system,data}/ -type d) <(find {META-INF,system,data}/ -type f) <(echo boot.img) <(echo u-boot-6q.bin) | zip -@ ${WD}/update.zip
但是使用生成的update.zip或update-signed.zip,在reboot recovery时,都提示:
finding update package...
opening update package...
verifying update package ...
E:footer is wrong
E:signature verification failed
Installation aborted.
请问是什么原因呢
现在的问题就是,uboot能够添加到update.zip中,并且能够签名成功,并且能够更新成功,但是更新成功后重启系统,发现uboot是最新的uboot了,但是却启动不了boot等,报如下错误
sd android update test ==============
Writing to MMC(3)... done
charger mode
FEC0 [PRIME]
Hit any key to stop autoboot: 0
booti: device don't have such partition:boot
我在updater-script里是这样加入uboot部分的,(加粗部分是我添加的)
ui_print("writting u-boot...");
sysfs_file_write("class/mmc_host/mmc0/mmc0:0001/boot_config", "1");
package_extract_file("u-boot-6q.bin", "/dev/block/mmcblk0");
sysfs_file_write("class/mmc_host/mmc0/mmc0:0001/boot_config", "0x10");
format("ext4", "EMMC", "/dev/block/mmcblk0p5", "0", "/system");
mount("ext4", "EMMC", "/dev/block/mmcblk0p5", "/system");
package_extract_dir("recovery", "/system");
请问是否还需要做其他修改呢
Hello nin lu,
在使用MFG Tools时,有没有注意到ucl2.xml对应的list中,u-boot是有2个小分区的(xxxboot0/xxxboot1)?请去查一下看!从你的提示上看,似乎把这2个小分区给破坏掉了,造成了fastboot启动不了系统。
虽然我们提供的updater.zip上没有对u-boot的更新,但是理论上,你的设想应该是可行的!所以,再努力一下看看!
NXP TIC team
Weidong
hi Weidong Sun:
thank you very much!
上述问题我已经解决了,现在能够正常的通过update.zip去更新u-boot-6q.bin,通过在uboot里添加打印信息,可以看到u-boot-6q.bin确实更新了。但是,现在遇到另一个问题:
就是uboot里的环境变量,即通过printenv打印出的哪些东西,是不会更新的。
这些环境变量是放在哪里的。怎样去擦除或者更新这些东西呢。
jimmychan你好,
谢谢,update.zip签名的问题已经解决了,现在遇到的问题是,由于修改了updater-script这个文件,添加了如下代码:
ui_print("writting u-boot...");
package_extract_file("files/u-boot-6q.bin", "/tmp/u-boot-6q.bin");
sysfs_file_write("class/mmc_host/mmc0/mmc0:0001/boot_config", "1");
simple_dd("/tmp/u-boot-6q.bin", "/dev/block/mmcblk0", 1024);
sysfs_file_write("class/mmc_host/mmc0/mmc0:0001/boot_config", "8");
show_progress(0.1, 5);
但是,好像package_extract_file这个命令并不能够执行。导致升级失败,lcd显示:
E:Error in “/cache/update.zip” state 6
我只保留
package_extract_file("files/u-boot-no-padding.bin", "/tmp/u-boot-6q.bin");
recovery升级过程就能顺利通过。但是升级成功后系统重启,uboot启动后报错:
sd android update test ==============
Writing to MMC(3)... done
charger mode
FEC0 [PRIME]
Hit any key to stop autoboot: 0
booti: device don't have such partition:boot
fastboot is in init......flash target is MMC:3
Bad partition index:1 for partition:boot
Bad partition index:2 for partition:recovery
Bad partition index:5 for partition:system
USB Mini b cable Connected!
fastboot initialized
USB_SUSPEND
USB_RESET
Invalid string index 238
请问updater-script这个文件需要怎样修改,添加u-boot-6q部分呢。
你好,我找到了 How do I customize the update script to update uboot。
但是其中提到了make_update_zip.sh ~/mydroid ~/pdate-dir ,我从android_build_env/make-update-zip.sh at master · faux/android_build_env · GitHub这里下载到了make_update_zip.sh这个文件,但是运行后,察看update.zip,里面并没有加入u-boot-6q.bin。以下是我的操作步骤,请看有什么问题,
(1)解压update.zip
(2)将u-boot-6q.bin 放到解压出的update文件夹中,
(3)修改updater_script 文件,在末尾加入
# Write u-boot to 1K position.
# u-boot binary should be a no padding uboot!
# For eMMC(iNand) device, needs to unlock boot partition.
ui_print("writting u-boot...");
package_extract_file("files/u-boot-6q.bin", "/tmp/u-boot-6q.bin");
sysfs_file_write("class/mmc_host/mmc0/mmc0:0001/boot_config", "1");
simple_dd("/tmp/u-boot-6q.bin", "/dev/block/mmcblk0", 1024);
sysfs_file_write("class/mmc_host/mmc0/mmc0:0001/boot_config", "8");
show_progress(0.1, 5);
(4) 将make_update_zip.sh放到update目录下
运行source make_update_zip.sh ,可以看到生成了update.zip和update-signed.zip。
但是在update.zip和update-signed.zip文件中,都没有找到u-boot-6q.bin文件。请问是操作步骤不对,还是make_update_zip.sh这个文件需要修改(若需要修改,怎样修改)。以下是这个文件的内容:
#!/bin/bash
WD=$(pwd)
echo WD=${WD}
OUT=${ANDROID_PRODUCT_OUT}
echo cleaning old files
rm -v update.zip update-signed.zip
cd ${OUT}
echo building update.zip
cat <(find {META-INF,system,data}/ -type d) <(find {META-INF,system,data}/ -type f) <(echo boot.img | u-boot-6q.bin )| zip -@ ${WD}/update.zip
cd ${WD}
echo ${WD}
echo $(pwd)
echo signing update.zip "->" update-signed.zip
java -jar ${ANDROID_BUILD_TOP}/out/host/linux-x86/framework/signapk.jar ${ANDROID_BUILD_TOP}/build/target/product/security/testkey.x509.pem ${ANDROID_BUILD_TOP}/build/target/product/security/testkey.pk8 update.zip update-signed.zip