commit 8799099b057906598558e7ec17b90010ad23a71c from: Aleksey Ryndin date: Wed Sep 20 13:34:51 2023 UTC squat, PinePhone: work-in-progress commit - 7fd176b52ca3684b51628796f3b33a8a548f6f14 commit + 8799099b057906598558e7ec17b90010ad23a71c blob - abb8f83b624f57881483ba3e83a000a6ba2838f0 blob + 2c2e0f3564c12c1ce6412f9b8eae7421a80f01ef --- capsule/squat/reports/0.0.2.gmi +++ capsule/squat/reports/0.0.2.gmi @@ -47,4 +47,27 @@ Allwinner eGON image, size: 32768 bytes В начале файла spl/sunxi-spl.bin (и, соответственно, u-boot-sunxi-with-spl.bin) расположен заголовок. Формат заголовка - `struct boot_file_head`, заполнение структуры можно подсмотреть в файле tools/sunxi_egon.c, функция `egon_set_header`. Первые четыре байта заголовка - инструкция безусловного ветвления 32-х разрядного ARM. -После заголовка следует содержимое файла spl/u-boot-spl.bin +После заголовка следует содержимое файла spl/u-boot-spl.bin, который является копией файла spl/u-boot-spl-nodtb.bin. В свою очередь spl/u-boot-spl-nodtb.bin извлекается из spl/u-boot-spl вызовом objcopy: +``` +aarch64-linux-gnu-objcopy -j .text -j .secure_text -j .secure_data -j .rodata -j .data -j .u_boot_list -j .rela.dyn -j .got -j .got.plt -j .binman_sym_table -j .text_rest -j .dtb.init.rodata -j .efi_runtime -j .efi_runtime_rel -O binary spl/u-boot-spl spl/u-boot-spl-nodtb.bin +``` + +А вот spl/u-boot-spl уже линкуется из кучи скомпилированных исходников. +Судя по скрипту компоновщика (arch/arm/cpu/armv8/u-boot-spl.lds) в самом начале файола расположен код из start.o: +``` +SECTIONS +{ + .text : { + . = ALIGN(8); + *(.__image_copy_start) + CPUDIR/start.o (.text*) + *(.text*) + } >.sram + +``` + +Который компилируется из arch/arm/cpu/armv8/start.S: +``` +aarch64-linux-gnu-gcc -Wp,-MD,spl/arch/arm/cpu/armv8/.start.o.d -nostdinc -isystem /usr/lib/gcc-cross/aarch64-linux-gnu/9/include -Ispl/include -Iinclude -I./arch/arm/include -include ./include/linux/kconfig.h -D__KERNEL__ -D__UBOOT__ -DCONFIG_SPL_BUILD -D__ASSEMBLY__ -fno-PIE -g -D__ARM__ -mstrict-align -ffunction-sections -fdata-sections -fno-common -ffixed-r9 -fno-common -ffixed-x18 -pipe -march=armv8-a -D__LINUX_ARM_ARCH__=8 -I./arch/arm/mach-sunxi/include -c -o spl/arch/arm/cpu/armv8/start.o arch/arm/cpu/armv8/start.S +``` +