操作系统构建良好,并且从“ make”过程重新生成的映像(u-boot,boot.img,system.img,vendor.img)在设备上运行良好。 因此,我的最后一步基本上是对图像进行签名,这是我努力使工作正常进行的地方。
完成这些步骤后,我使用在“ signed-img.zip”文件中找到的现已签名的映像来刷新设备(使用NXP Manufacturing Tool,而不是Fast Boot)。 但是,该设备现在无法启动内核,给我一个错误,提示您缺少DTB。
Hit any key to stop autoboot: 0
boota mmc0
kernel @ 14008000 (8183104)
ramdisk @ 15000000 (2036048)
## Booting Android Image at 0x12000000 ...
Kernel load addr 0x14008000 size 7992 KiB
Kernel command line: console=ttymxc0,115200 init=/init video=mxcfb0:dev=ldb video=mxcfb1:off video=mxcfb2:off video=mxcfb3:off vmalloc=128M androidboot.console=ttymxc0 consoleblank=0 ldo_active=on androidboot.hardware=sedevices cma=448M android.selinux=permissive android.dm_verify=disable androidboot.selinux=enforce androidboot.dm_verity=disable androidboot.storage_type=emmc loglevel=8 vt.global_cursor_default=0 buildvariant=userdebug androidboot.serialno=0b2861d4df668b47 androidboot.soc_type=imx6dl androidboot.storage_type=emmc
ERROR: Did not find a cmdline Flattened Device Tree
Could not find a valid device tree
resetting ...
我已经将问题缩小到指南的第一步,在构建目录中执行“ make dist”。 这样会在“ out / dist”文件夹中生成许多ZIP文件,在本指南的以下步骤中将对其进行进一步处理。 我尝试用在此步骤中生成的图像(在生成的“ out / dist / *-img-*。zip”文件中找到)刷新设备,这会产生完全相同的问题。
所以我的问题是,“ make dist”到底是做什么的,而导致“ boot.img”中缺少DTB? 我希望它使用在“ out / target / product //”中找到的已经可以运行的“ boot.img”。 但是它似乎可以重新构建该映像,在这种情况下,不包括DTB。 与从Source构建Android的许多其他方面一样,“ make dist”的工作方式似乎在文档的任何地方都没有说明。
我希望任何有过从源代码构建Android的经验的人都对此有所了解,因为我似乎被束之高阁。
仅供参考; 当我刷新正常的“ make”之后产生的“ boot.img”时,U-boot之后的输出如下:
Hit any key to stop autoboot: 0
boota mmc0
Error: blob decap job completed with errors 0x2000081A
In boota get fastboot lock status error. Set lock status
kernel @ 14008000 (8183104)
ramdisk @ 15000000 (2036754)
fdt @ 14f00000 (40998)
## Booting Android Image at 0x12000000 ...
Kernel load addr 0x14008000 size 7992 KiB
Kernel command line: console=ttymxc0,115200 init=/init video=mxcfb0:dev=ldb video=mxcfb1:off video=mxcfb2:off video=mxcfb3:off vmalloc=128M androidboot.console=ttymxc0 consoleblank=0 ldo_active=on androidboot.hardware=sedevices cma=448M android.selinux=permissive android.dm_verify=disable androidboot.selinux=enforce androidboot.dm_verity=disable androidboot.storage_type=emmc loglevel=8 vt.global_cursor_default=0 buildvariant=userdebug androidboot.serialno=0b2861d4df668b47 androidboot.soc_type=imx6dl androidboot.storage_type=emmc
## Flattened Device Tree blob at 14f00000
Booting using the fdt blob at 0x14f00000
Loading Kernel Image ... OK
Using Device Tree in place at 14f00000, end 14f0d025
switch to ldo_bypass mode!
Starting kernel ...