commit 0879b10fd556f43cce72c1b664a71284571bf482 from: Aleksey Ryndin date: Tue Sep 19 16:53:41 2023 UTC squat, PinePhone: work-in-progress commit - 7c3169833fb1850f0e601734a771e81fe42b14f3 commit + 0879b10fd556f43cce72c1b664a71284571bf482 blob - /dev/null blob + 449dde1b0d4eaaeb77b71fda6f2914ed5ab28d30 (mode 644) --- /dev/null +++ capsule/squat/reports/0.0.2.gmi @@ -0,0 +1,48 @@ +# 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