海思hikey960开发板的zircon启动映像:
1、在zircon目录下,执行./scripts/flash-hikey,生成boot.img
具体命令为:
/home/suog/work/zircon-20180724/scripts/../third_party/tools/android/mkbootimg --kernel build-arm64/zhikey960-zircon-bootimage.bin --kernel_offset 0x00080000 --base 0x00000000 --ramdisk_offset 0x07c00000 --ramdisk build-arm64/dummy-ramdisk.bin --tags_offset 0x07a00000 --cmdline -o build-arm64/boot.img
2、boot.img依赖于build-arm64/zhikey960-zircon-bootimage.bin和build-arm64/dummy-ramdisk.bin,在当前版本中,dummy-ramdisk.bin的内容没有意义,只是因为mkbootimg工具需要输入ramdisk文件。
3、zhikey960-zircon-bootimage.bin依赖于hikey960-boot-shim.bin和zircon.zbi,hikey960-boot-shim.bin的功能是根据hikey960硬件传入的参数,计算得到dts,设置zircon.zbi执行所需要的环境和变量,然跳转到zircon.zbi执行。zircon.zbi是真正的内核映像。
cat ./build-arm64/hikey960-boot-shim.bin ./build-arm64/zircon.zbi > build-arm64/hikey960-zircon-bootimage.bin
4、hikey960-boot-shim.bin的生成过程为,先生成boot-shim.elf,在objcopy后得到hikey960-boot-shim.bin
./prebuilt/downloads/gcc/bin/aarch64-elf-ld -nostdlib --build-id -z noexecstack -z max-page-size=4096 --gc-sections --emit-relocs --build-id=none ./build-arm64/boot-shim/hikey960/kernel/target/arm64/boot-shim/boot-shim.S.o ./build-arm64/boot-shim/hikey960/kernel/target/arm64/boot-shim/boot-shim.c.o ./build-arm64/boot-shim/hikey960/kernel/target/arm64/boot-shim/debug.c.o ./build-arm64/boot-shim/hikey960/kernel/target/arm64/boot-shim/devicetree.c.o ./build-arm64/boot-shim/hikey960/kernel/target/arm64/boot-shim/util.c.o ./build-arm64/boot-shim/hikey960/kernel/lib/libc/string/memcpy.c.o ./build-arm64/boot-shim/hikey960/kernel/lib/libc/string/memmove.c.o ./build-arm64/boot-