Spørgsmål:
RPi3 + buildroot + U-boot
XonqNopp
2017-06-08 19:57:39 UTC
view on stackexchange narkive permalink

Hvad jeg vil gøre:

Jeg arbejder på et projekt, hvor vi vil opdatere vores RPi ved opstart. Vi arbejder med buildroot med succes i næsten et år. Nu prøver jeg at få det til at fungere med U-boot.

Hvilke versioner jeg arbejder med:

  • RPi 3
  • buildroot 2017.05, som indeholder U-boot 2017.03

Hvad jeg allerede har læst:

Jeg har læst over 100 websider. Mine vigtigste inspiration er:

Hvad jeg har gjort indtil videre:

Så jeg bygger på en Debian (32bits). Jeg konfigurerer buildroot med raspberrypi3_defconfig , og i bootloader-menuen vælger jeg U-boot og sætter U-boot-konfigurationen til rpi_3_32b . Den enkle rpi -konfiguration fungerer ikke (hænger i regnbue), og selvfølgelig er jeg ikke i stand til at bygge med rpi_3 -konfiguration, da den indebærer 64bits, som min vært ikke er i stand til at levere. (Hvis jeg virkelig skal skifte til 64bits for vært og RPi og U-boot, tror jeg, jeg ville være i stand til at gøre det, men jeg er ret sikker på, at jeg også skulle være i stand til at nå mit projekt med 32bits.)

I Linux-menukonfigurationen af ​​buildroot ændrede jeg også nogle kerneindstillinger for at have tidligt printk, logningsniveau til 7 og for at aktivere fejlfinding på lavt niveau.

Hvad jeg er i stand til at gøre:

Jeg kan starte og stoppe i U-boot-menuen.

Problemet nu:

Når jeg fortsætter fatload + bootz-kommandoerne, får jeg kun startkernemeddelelsen, og den hænger der. Jeg har forbindelse via UART seriel linje, og jeg har også den officielle RPi touchscreen på DSI. Jeg forsøgte at ændre konsollen i bootargs, da der er forskellige tanker på nettet, jeg prøvede ttyAMA0, ttyS0, tty0, tty1.

Men hvis jeg kun ændrede kernen = linjen i config.txt, hænger min RPi i regnbuens skærm. Jeg var nødt til at deaktivere overlayindstillingen for at løse dette.

Da jeg slet ikke får noget output, er det virkelig svært at gætte, hvad problemet er ... Enhver rådgivning ville være velkommen :)


Opdatering 06-06-2017

Her er nogle flere oplysninger om de kommentarer, jeg modtog:

  • Linket til RPi-fora er i en kommentar . Da jeg ikke har nok omdømme, kan jeg ikke sende mere end 2 links her, undskyld ...
  • Hvis jeg config.txt erstatter jeg kernel = u-boot .bin af kernel = zImage , den starter korrekt. Også i config.txt var jeg nødt til at deaktivere pi3 overlays ellers fungerer U-boot ikke, og jeg sidder fast i regnbuens skærm.
  • Bygge buildroot med raspberrypi3_64_defconfig og U-boot med rpi_3 (i stedet for rpi_3_32b ) mislykkes kompileringen
* "de officielle Raspberry-fora, hvor jeg sendte nøjagtigt det samme spørgsmål" * -> Det ville være høfligt af dig at give et faktisk link her, så andre ikke spilder deres tid på at hjælpe dig med rådgivning, du allerede har modtaget.
Uanset om din vært er 32/64 og målet er 32/64 er to helt uafhængige ting. Du kan opbygge et ARM64-system fra et x86 32 bits system.
Du skal se, om dette udelukkende er et kerneproblem eller et problem med din bootloader. 1) Kopier din kerne og modulerne til et lager Raspbian (eller hvad som helst) billede, og prøv det der, 2) Kopier en forud kompileret lager til din u-boot / buildroot-installation, og prøv det. Hvis nr. 1 mislykkes, og nr. 2 lykkes, er din krydsværktøjskæde ikke god. Omvendt, hvis nr. 1 lykkes, og nr. 2 mislykkes, er det formodentlig bootloaderen.
@XonqNopp, Jeg prøver det samme (undtagen uden at bruge buildroot, bygge u-boot og kerne manuelt og forsøge at bruge eksisterende rootfs) uden succes. Jeg er ikke engang i stand til at nå frem til u-boot-prompt (når jeg bygger med 32-bit-konfiguration ved hjælp af 32-bit værktøjskæde). Kan du venligst give oplysninger om, hvilket værktøjskæde du bruger til at opbygge u-boot?
@goldilocks Jeg ville have været glad for at give linket, men jeg er begrænset, da jeg ikke har nok ry. Her er det: https://www.raspberrypi.org/forums/viewtopic.php?f=29&t=185615&p=1172818
@vtha min værktøjskæde er buildroot;)
@goldilocks Jeg er ikke sikker på at forstå, hvad du mener, men hvis der i min `config.txt` skift fra` kernel = u-boot.bin` til `kernel = zImage ', starter den ordentligt
@ThomasPetazzoni OK Jeg var ikke opmærksom på dette, jeg gættede, at det ikke ville være muligt, da jeg stødte på kompileringsproblemer, da jeg forsøgte at bygge buildroot med `raspberrypi3_64` og U-boot med` rpi_3` i stedet for `rpi_3_32b`
Tre svar:
Robert
2017-08-03 02:45:20 UTC
view on stackexchange narkive permalink

Jeg havde lignende problemer med Buildroot 2017.5 : Kernen kørte fint uden u-boot, men når den blev startet via u-boot, hængte den efter "Start kernel ...".

Det viste sig, at den foruddefinerede adresse til enhedstræet $ {fdt_addr_r} forårsagede problemet (ser ud som om der var en vis overlapning med kernen). Indlæsning af enhedstræet til 0x2000000 fungerede for mig:

  mmc dev 0 fatload mmc 0: 1 $ {kernel_addr_r} zImage fatload mmc 0: 1 0x2000000 bcm2710-rpi-3-b.dtb setenv bootargs 8250.nr_uarts = 1 root = / dev / mmcblk0p2 rootwait console = ttyS0,115200bootz $ {kernel_addr_r} - 0x2000000  

Bemærk, at jeg ikke brugte overlayet til at indstille den serielle port til ttyAMA0 . I min config.txt har jeg kun

enable_uart=1kernel=u-boot.bin

Den serielle port forbliver derfor på ttyS0 kode> som jeg sender i bootargs (se ovenfor).

Tak for svaret. Bare prøvet og ser ud til at arbejde. Jeg laver mere omfattende tests, men jeg er i ferie temmelig snart ... Vær sikker på at jeg kommer tilbage her bagefter :)
Det virker tak. Jeg går i øjeblikket med buildroot 2017.08 (rc1 for nu), hvor U-boot blev opdateret, men denne løsning er stadig påkrævet.
Juho Östman
2018-07-01 15:22:58 UTC
view on stackexchange narkive permalink

I mit tilfælde var FDT-filen i firmwarepakken forkert og fik kernen til at hænge. Ved opstart videregiver firmwaren en intern version af FDT til u-boot, og denne fungerede. Så i stedet for at indlæse FDT fra en fil, måtte jeg videregive den version, der blev leveret af firmwaren. Adressen til den leverede FDT er i variablen fdtcontroladdr . Dette eksempel er for aarch64-kernen, men du kan prøve variationer. For eksempel fungerede booti i mit tilfælde, men andre kerneformater kræver muligvis bootm eller bootz.

  fatload mmc 0 $ {kernel_addr_r} kernel.imgsetenv bootargs console = ttyS0,115200n8 console = ttyAMA0,115200n8 console = tty0booti $ {kernel_addr_r} - $ {fdtcontroladdr}  

Hvis en foretrækker at indlæse FDT fra en fil, for eksempel for at anvende overlays, kan u-boot gemme FDT fra hukommelsen til en USB-stick. At gemme på SD-kortet fungerede ikke for mig, det modtog en fejltilstand og sidder fast.

Harshad
2017-07-13 15:29:47 UTC
view on stackexchange narkive permalink

Jeg stod over for et lignende problem med Buildroot 2017.5 , uboot-2017.03 og kernel-4.9.

Når du få uboot prompt, prøv disse kommandoer:

  mmc dev 0 fatload mmc 0: 1 $ {kernel_addr_r} zImage fatload mmc 0: 1 $ {fdt_addr} bcm2708-rpi-b.dtb setenv bootargs console = tty1 root = / dev / mmcblk0p2 rootwait bootz $ {kernel_addr_r} - $ {fdt_addr}  

Håber, dette hjælper!

Tak for svaret. Dette er næsten det, jeg har prøvet, da jeg fulgte artiklen fra ltekieli.com. Stadig hængende ved "startkerne ..." Har du nogen anden tip?


Denne spørgsmål og svar blev automatisk oversat fra det engelske sprog.Det originale indhold er tilgængeligt på stackexchange, som vi takker for den cc by-sa 3.0-licens, den distribueres under.
Loading...