commit - 7c3169833fb1850f0e601734a771e81fe42b14f3
commit + 0879b10fd556f43cce72c1b664a71284571bf482
blob - /dev/null
blob + 449dde1b0d4eaaeb77b71fda6f2914ed5ab28d30 (mode 644)
--- /dev/null
+++ capsule/squat/reports/0.0.2.gmi
+# PinePhone
+
+Эксперименты с железом PinePhone.
+
+Запуск с SD карты:
+
+=> https://linux-sunxi.org/Bootable_SD_card#SD_Card_Layout
+
+Bootloader (u-boot-sunxi-with-spl.bin) должен располагаться на SD карте по смещению 8 кб.
+
+
+Как собрать bootloader:
+
+=> https://wiki.pine64.org/wiki/U-Boot
+
+
+Разматываем матрёшку обратно:
+u-boot-sunxi-with-spl.bin собирается утилитой tools/binman следуя формату
+```
+$ head -n 32 arch/arm/dts/sunxi-u-boot.dtsi
+<...>
+&binman {
+ u-boot-sunxi-with-spl {
+ filename = "u-boot-sunxi-with-spl.bin";
+ pad-byte = <0xff>;
+
+ blob {
+ filename = "spl/sunxi-spl.bin";
+ };
+```
+То есть в самом начале файла u-boot-sunxi-with-spl.bin блобом лежит файл spl/sunxi-spl.bin
+
+Файл spl/sunxi-spl.bin собирается вызовом:
+```
+mkimage -T sunxi_egon -a 0x10060 -n sun50i-a64-pinephone-1.2 -d spl/u-boot-spl.bin spl/sunxi-spl.bin
+```
+
+Можно получить краткое содержимое заголовка вызовом той же mkimage, но с флагом -l
+```
+$ tools/mkimage -l u-boot-sunxi-with-spl.bin
+Allwinner eGON image, size: 32768 bytes
+ SPL header version 0.2
+ DT name: sun50i-a64-pinephone-1.2
+```
+
+В начале файла 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