Jak znaleźć punkt wejścia ARM Linux, gdy nie zdoła rozpakować?

Próbuję uruchomić system Linux za pomocą U-boot na niestandardowej płycie z i.MX6 (rdzeń procesora to ARM Cortex A9)

Wydaje się, że udało nam się przenieść Das U-Boot (2009.08). Ale uruchomienie Linuksa kończy się niepowodzeniem w ostatnim komunikacie U-Boot: „Uruchamianie jądra ...”

Oto moje odpowiednie środowisko:

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

Wyjście rozruchowe to

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 ...  

Kiedy objdump jądra pod adresem 80008000, widzę punkt wejścia w arch / arm / kernel / head.S, a nie arch / arm / boot / compressed / head.S

Widzę, że jądro nawet nie dekompresuje. Próbowałem dodać kod manipulacyjny rejestru, aby sygnalizować GPIO w skompresowanym / head.S bez odpowiedzi.

Moje pytanie brzmi: jak mogę się upewnić, że U-Boot dzwoni na właściwy punkt wejścia?

Dokładnie ten sam plik binarny jądra z powodzeniem uruchamia się na płycie odniesienia Freescale, używając tych samych poleceń U-Boot.

EDYCJA: Dodałem kilka śladów do U-Boota. Tuż przed wywołaniem jądra wskaźnik Kernel wynosi 10008000, a nie 10800000. Czy to oznacza, że ​​U-boot skacze w niewłaściwym miejscu?

questionAnswers(3)

yourAnswerToTheQuestion