Commit Diff


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
+```
+