Wie finde ich den ARM Linux-Einstiegspunkt, wenn die Dekomprimierung fehlschlägt?

Ich versuche, Linux über U-Boot auf einer benutzerdefinierten Karte mit i.MX6 zu starten (CPU-Kern ist ARM Cortex A9)

Wir scheinen Das U-Boot (2009.08) erfolgreich portiert zu haben. Aber das Booten von Linux schlägt bei der letzten U-Boot-Meldung fehl: "Kernel wird gestartet ..."

Hier ist meine relevante Umgebung:

bootargs=console=ttymxc1,115200 vmalloc=400M root=/dev/mmcblk0p1 rootwait consoleblank=0 earlyprintk video=mxcfb0:dev=lcd,LCD-ORTUS,if=RGB24 video=mxcfb1:dev=hdmi,1280x720M@60,if=RGB24 calibration tsdev=tsc2004 fbmem=10M,28M
bootcmd=ext2load mmc 0:1 10800000 /boot/uImage ; bootm 10800000

Die Boot-Ausgabe ist

Loading file "/boot/uImage" from mmc device 0:1 (xxa1)  
4043552 bytes read  
## Booting kernel from Legacy Image at 10800000 ...  
   Image Name:   Linux-3.0.35  
   Image Type:   ARM Linux Kernel Image (uncompressed)  
   Data Size:    4043488 Bytes =  3.9 MB  
   Load Address: 10008000  
   Entry Point:  10008000  
   Verifying Checksum ... OK  
   Loading Kernel Image ... OK  
OK  

Starting kernel ...  

Wenn ich den Kernel unter der Adresse 80008000 auslagere, sehe ich den Einstiegspunkt unter arch / arm / kernel / head.S und nicht unter arch / arm / boot / compress / head.S

Was ich sehe ist, dass der Kernel nicht einmal dekomprimiert. Ich habe versucht, einen Registermanipulationscode hinzuzufügen, um GPIOs in komprimiertem / head.S ohne Antwort zu signalisieren.

Meine Frage ist, wie kann ich sicherstellen, dass U-Boot den richtigen Einstiegspunkt anruft?

Dieselbe Kernel-Binärdatei wird mit denselben U-Boot-Befehlen erfolgreich auf dem Freescale-Referenzboard gestartet.

EDIT: Ich habe ein paar Spuren zu U-Boot hinzugefügt. Unmittelbar vor dem Aufruf des Kernels lautet der Zeiger des Kernels 10008000 und nicht 10800000. Bedeutet dies, dass der U-Boot an der falschen Stelle springt?

Antworten auf die Frage(3)

Ihre Antwort auf die Frage