Portál AbcLinuxu, 10. května 2025 22:53
Přímo na ARMuTo bych cekal, vzhledem ke stavu cross kompilace.
hw od Calxedy.Tahle kategorie ARMv7/ARMv8 HW je pro vetsinu uzivatelu Fedory v praxi nedostupna.
ARMv8 ještě na trhu neexistuje (64bit),Zatim, ale mam takove tuseni, ze tohle je ten pravy duvod onoho armiho cviceni.
ten ARMv7 máte ve všech těch zařízeních, co se o ně jedná (Cortex-A8, A9, A7, A15...).Jiste, jenze na nich genericky nenabootujete a to jde.
Což mi nevysvětluje, jestli chtějí nějak genericky řešit bootstrap na ARMu atd.Pokud nebudou cilit na nekolik dostupnych HW platforem a nebudou pro ne bootovatelne image, bude jen hracka pro par skalnich fandu ochotnych si hacknout nejaky Allwinner netbook ci tablet za par babek a na tom se primarni architektura asi stavet neda.
I pokud máte BareBox/u-boot bez podpory device-tree, tak se to na začátek dá obejít. V jádře lze zvolit
Boot options -> [*] Use appended device tree blob to zImage (EXPERIMENTAL) [*] Supplement the appended DTB with traditional ATAG informationPoté lze stáhnout data do RAM přes TFTP a přidat si vlastní startup helper, který správně nastaví registry před skokem do jádra
tftp vmx53/zImage zImage tftp vmx53/lnx-start-helper.bin lnx-start-helper tftp vmx53/atags.dat atags.dat memcpy -s zImage 0x0 0x70008000 4182973 memcpy -s lnx-start-helper 0x0 0x70007000 36 memcpy -s atags.dat 0x0 0x70000100 4096 go 0x70007000Zdroják helperu
.text .code 32 .global _start _start : ldr r0, .LC_r0_val ldr r1, .LC_r1_val ldr r2, .LC_r2_val ldr r3, .LC_jump_val mov pc,r3 .LC_r0_val: .word 0x0 .LC_r1_val: .word 0x298 .LC_r2_val: .word 0x07000100 .LC_jump_val: .word 0x07008000 .end
R1 je machine ID a pro DT může být 0xffffffff, ale zdá se, že je alespoň pro náš build ignorované. R2 by mělo ukazovat na začátek ATAG, ty se dají vykopírovat z nabootovaného původního jádra/systému. Nejsou ale kritické. Kritická je adresa v R2, která musí ukazovat na start RAM+0x100. Z hodnoty se určí start RAM pro dekompresor a startovací minimální stránkovací tabulku. Zbytek si již jádro vytahá z přibaleného DT.
Optimální řešení to není, ale minimálně umožní odzkoušení nového jádra bez (s minimalizací) rizika pokažení loaderu ve FLASH.
Problém je, že Android a další mají vlastní zprasená jádra a na mainline neběží a mainline nemají snahu o udržbu mainline.Coz je problem i mnoha HW vyrobcu, i ten bezny Allwinner neni v mainline a misto DT pouziva svuj proprietarni format.
Další možnost je DT do/za konec zImage přidat a tak to kombinovat pro různé desky i s tím embedded DT.Myslím, že by možná nebylo špatné mít možnost sestavit jádro se všemi možnýmy DT (nejlépe s možností vyprat je už během konfigurace jádra) a předat mu identifikátro toho správného až v okamžiku zavádění bootloaderm skrz parametr jádra, stejně, jako kdysi dávno u před-PnP ISA sběrnice na x68 šlo vnutit jádru porty, IRQ a DMA hardwaru (pokud nefungovala jeho autodetekce). Soubory
.dtb
(přeložené binární DT) mají rádově kilobyty až několik desítek kilobitů, takže zas tak moc by to soubor s jádrem nezvětšilo.
Tiskni
Sdílej:
ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.