前两天FAE来帮忙,终于解决了这个问题。方法是修改ucl2.xml里面对应位置增加相应语句:
<LIST name="SabreSD-eMMC" desc="Choose eMMC Linux as media">
...
<CMD state="Updater" type="push" body="$ echo 1 > /sys/block/mmcblk0boot0/force_ro"> re-enable read-only access </CMD>
<CMD state="Updater" type="push" body="$ dd if=/dev/mmcblk0 of=/dev/null bs=1 count=1">take effect on read-only access </CMD>
<CMD state="Updater" type="push" body="$ echo 8 > /sys/devices/platform/sdhci-esdhc-imx.3/mmc_host/mmc0/mmc0:0001/boot_config">enable boot partion 1 to boot</CMD>
...
这里我使用的是linux 3.0.35 版本的代码,不使用Ubuntu的文件系统。在echo1与echo8中间增加红色字体语句解决。FAE的解释是echo1语句会等待未执行,而echo8语句直接执行了导致echo1语句未执行,所以在中间插入一条无用的指令,使得echo1语句能够执行。
此外他解释这个情况只发生在使用linux的版本,使用Android不会有这个问题,而且该问题只在初次烧写新板的时候会发生,一旦烧写成功引导后,即使再次使用未修改的ucl2.cml烧写仍然会成功,所以他说他们没有碰到这类问题,都是由于手上使用的都是旧板。这个问题是由于eMMC芯片内部的分区模式造成的。 |