www.mikrocontroller.net

Forum: PC Hard- und Software Mini 2440 Kernel startet nicht + Displaytiming


Autor: Emil (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi Leute,
ich habe ein Problem mit meinem Mini2440 256M version.

mal ne frage voren weg:
Habe ein X35 (3,5" Display) klappt das auch mit dem timing vom T35?
Da ich bis jetzt auf keiner Seite irgendwelche Infos gefunden habe, 
welche Einstellung ich bei der enviroment variable "mini2440" sonst 
nehmen soll.

Hauptproblem:
Der Kernel startet nicht.
Als Bootloader wird U-boot verwendet.
Auszug:
U-Boot 1.3.2-mini2440 (Feb 24 2010 - 13:04:49)

I2C:   ready
DRAM:  64 MB
Flash:  2 MB
NAND:  256 MiB
Found Environment offset in OOB..
USB:   S3C2410 USB Deviced
In:    serial
Out:   serial
Err:   serial
MAC: 08:08:11:18:12:27
Hit any key to stop autoboot:  0 

Loading from NAND 256MiB 3,3V 8-bit, offset 0x60000
   Image Name:   Ubuntu Kernel
   Created:      2011-01-10  20:33:54 UTC
   Image Type:   ARM Linux Kernel Image (uncompressed)
   Data Size:    3699900 Bytes =  3.5 MB
   Load Address: 80008000
   Entry Point:  80008000
## Booting kernel from Legacy Image at 32000000 ...
   Image Name:   Ubuntu Kernel
   Created:      2011-01-10  20:33:54 UTC
   Image Type:   ARM Linux Kernel Image (uncompressed)
   Data Size:    3699900 Bytes =  3.5 MB
   Load Address: 80008000
   Entry Point:  80008000
   Verifying Checksum ... OK
   Loading Kernel Image ... OK
OK

Starting kernel ...

Verwendet wurde der neuste kernel von www.kernel.org
Cross-Toolchain ist von Codesourcery.

Makefile Einstellungen:
ARCH    ?= arm
CROSS_COMPILE  ?= /home/emil/CodeSourcery/Sourcery_G++_Lite/bin/arm-none-eabi-

Vorgehensweise:
make mini2440_defconfig
make uImage

das uImage wurde über eine Speicherkarte in den mini2440 geschrieben:
mini2440 # nand erase kernel #Löscht kernel
mini2440 # mmcinit #initialisiert die Speicherkarte
mini2440 # fatload mmc 0:1 0x31000000 uImage #Läd das Image in den Ram
mini2440 # nand write 0x31000000 kernel #Läd das Image in den nand flash

die umgebungsvariablen sind:
MINI2440 # printenv
bootargs=root=/dev/mtdblock3 rootfstype=jffs2 console=ttySAC0,115200
bootdelay=3
baudrate=115200
ethaddr=08:08:11:18:12:27
ipaddr=10.0.0.111
serverip=10.0.0.4
netmask=255.255.255.0
usbtty=cdc_acm
mtdparts=mtdparts=mini2440-nand:256k@0(u-boot),128k(env),5m(kernel),-(root)
bootargs_base=console=ttySAC0,115200 noinitrd
bootargs_init=init=/sbin/init
root_nand=root=/dev/mtdblock3 rootfstype=jffs2
root_mmc=root=/dev/mmcblk0p2 rootdelay=2
root_nfs=/mnt/nfs
set_root_nfs=setenv root_nfs root=/dev/nfs rw nfsroot=${serverip}:${root_nfs}
ifconfig_static=run setenv ifconfig ip=${ipaddr}:${serverip}::${netmask}:mini2440:eth0
ifconfig_dhcp=run setenv ifconfig ip=dhcp
ifconfig=ip=dhcp
set_bootargs_mmc=setenv bootargs ${bootargs_base} ${bootargs_init} ${mini2440} ${root_mmc}
set_bootargs_nand=setenv bootargs ${bootargs_base} ${bootargs_init} ${mini2440} ${root_nand}
set_bootargs_nfs=run set_root_nfs; setenv bootargs ${bootargs_base} ${bootargs_init} ${mini2440} ${root_nfs} ${ifconfig}
mtdids=nand0=mini2440-nand
filesize=25A0000
bootcmd=nboot.e kernel ; bootm
mini2440=3tb
partition=nand0,0
mtddevnum=0
mtddevname=u-boot

Environment size: 1119/131068 bytes

Warum startet der Kernel nicht? Falls Angaben fehlen bitte bescheid 
geben.
Grüße
Emil

Autor: Alex (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
du zitierst uboot mit:
## Booting kernel from Legacy Image at 32000000 ...

schreibst aber:
mini2440 # nand write 0x31000000 kernel #Läd das Image in den nand flash

ist das so korrekt, als laie meine ich müsste doch dann der kernel ab 
0x32000000 geschrieben werden?

Autor: Emil (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Danke dafür,

wie ich das verstanden habe heißt das, dass er den Kernel von 0x60000 
läd und im Ram auf der adresse 0x32000000 bootet, was ja noch 
ausreichend luft nach oben lässt zum booten.

Grüße

Autor: Markus Gräb (ghost91)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Die Variable mini2400, wenn ich mich richtig erinnere, konfiguriert den 
Bildschirm und Touchscreen.
In deinem Fall mit 3,5 Zoll Bildschierm wäre der richtige Wert 0tb

Autor: Imon (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
nach denn was deine Paar Zeilen uboot anzeigen scheint es so als würde 
dein Kernelimage nicht gehen. Normalerweise müste nach den

Emil schrieb:
> ## Booting kernel from Legacy Image at 32000000 ...
>    Image Name:   Ubuntu Kernel
>    Created:      2011-01-10  20:33:54 UTC
>    Image Type:   ARM Linux Kernel Image (uncompressed)
>    Data Size:    3699900 Bytes =  3.5 MB
>    Load Address: 80008000
>    Entry Point:  80008000
>    Verifying Checksum ... OK
>    Loading Kernel Image ... OK
> OK
>
> Starting kernel ...

so was wie: uncompressed done Kommen. wenn das schon nicht der fall ist 
scheint was beim erzeugen des Kernel im Argen zu liegen. der Uboot 
scheint das Image zu erkennen und seine headers zu finden sonst würde er 
es nicht versuchen zu Starten. Wie Erzeugst du das Kernelimage.

benutzt du da irgendwelche uboot tools oder gibst du das beim make des 
linux Kernel an. Ich tippe fast ersteres.

versuche mal deinen Kernel mit folgenden Aufruf zu bauen
 make ARCH=arm CROSS_COMPILE=/home/emil/CodeSourcery/Sourcery_G++_Lite/bin/arm-none-eabi- -j9 uImage

Vielleicht will der dann.
deine Compiler halte ich übrigens auch nicht für die Beste Wahl, besser 
wäre einer welcher ungefähr so heist
arm-linux-eabi-

denn mit der Kompiler welchen du nutz ist laut Namens Convention 
eigentlich eher für bare metal Programmierung gedacht, beim Kernel kann 
das noch gut gehen aber Spätesten beim User-space sorgt das für 
Kopfschmerzen.

Ausserdem solltest du solange du keinen Funktionieren Kernel hast auf 
das Flash deiners Mini 2440 verzichten und deinen Kernel Via tftp auf 
das Board bringen und direckt starten.

Ich habe mir auf meinen Linux host hierzu den atftp installiert und in 
dessen verzeichnis einen link auf das uImage das in deinen kernel 
sourcen liegt erzeugt.

ln -s <linux-src>/arch/arm/boot/uImage uImage

dann kannst du nach dem du einen Kernel Compilert hast denn recht 
Schmerzfrei testen.

Einfach deinen uboot mit serverip und ipaddr ausstatten und dann via

tftp 0x31000000 uImage; bootm

deinen aktuellen Stand testen. Spart eine menge Zeit weil das ganze 
kopieren und Flashen Flach fällt bis du einen Stand hast der Bootet.

Autor: Emil (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Markus Gräb schrieb:
> Die Variable mini2400, wenn ich mich richtig erinnere, konfiguriert den
> Bildschirm und Touchscreen.
> In deinem Fall mit 3,5 Zoll Bildschierm wäre der richtige Wert 0tb

nein, da ich das X35 display benutze, das ist ein neueres. 0tb ist noch 
für das alte.

@Imon
habe das uImage mit make uImage erzeugt. Wofür steht dein -j9 bei make?
Habe den kernel jetzt auf verschiedene arten kompiliert. Einmal mit 
arm-none-eabi- und einmal mit arm-linux-eabi- jeweils direkt als uImage 
und nochmal als zImage, welches ich dann mit mkimage in ein uImage 
umgewandelt habe. Also habe ich hier jetzt insgesammt 4u und 2 zImages 
hier rumfliegen...

Das verrückte ist: Die zImages funktioniert einwandfrei mit vivi. Es ist 
nur das uImage, dass nicht funktioniert.

Das KernelImage starte ich jetzt direkt von einer Speicherkarte.

Kennst du vlt. noch irgendeinen guten alternativen bootloader zu u-boot, 
der zImages startet?

Danke

Autor: Imon (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Emil schrieb:

> @Imon
> habe das uImage mit make uImage erzeugt. Wofür steht dein -j9 bei make?
 -j9 sagt nutze 9 Instanzen von make um da nicht ewig zu warten  man 
sagt pi mal daumen 3 Instanzen Pro Kern den der Host hat bei mir sind es 
halt 3.

hast du wirklich nur make uImage gesagt?  wenn ja würde mich 
interessieren wie Dein host aussieht, abeitest du in einer ARM VM oder 
so ?  Ich dachte immer wenn man make beim Kernel aufruft ohne ARCH=xxx 
nimmt der Kernel automatisch an, das es sich um X86 handelt.

was sagt denn
file vmlinux 
im Kernel source tree

> Habe den kernel jetzt auf verschiedene arten kompiliert. Einmal mit
> arm-none-eabi- und einmal mit arm-linux-eabi-

Ich würde arm-linux-eabi nehmen das sollte tun.

> jeweils direkt als uImage
> und nochmal als zImage, welches ich dann mit mkimage in ein uImage
> umgewandelt habe. Also habe ich hier jetzt insgesammt 4u und 2 zImages
> hier rumfliegen...
>
> Das verrückte ist: Die zImages funktioniert einwandfrei mit vivi.

was ist vivi ?

> Es ist
> nur das uImage, dass nicht funktioniert.
>
> Das KernelImage starte ich jetzt direkt von einer Speicherkarte.
>
> Kennst du vlt. noch irgendeinen guten alternativen bootloader zu u-boot,
> der zImages startet?

du kannst mit uboot auch das zImage direkt starten indem du denn Kernel 
die Commandline mit ein kompilierst das zImage in den Speicher lädst und 
mit go <addr> anspringst, als versuch vielleicht erst mal nicht schlecht
aber nicht als dauerhafte Lösung.

als alternativer Bootloader fällt mir noch redboot ein allerdings, würde 
ich dir dirngend abraten vom uboot weg zu gehen, denn ersten ist der 
uboot IMHO der bootloader welcher an weitesten verbreitet ist in der 
Embedded Linux welt. Zweites würdest du dich mit einen wesel sehr 
isoliert aufstellen und könnstest im zweifel auf wenig Hilfe hoffen und 
zu guter Letzt wenn das austauschen des uboot Schief geht warum auch 
immer kann es schwer werden wieder was zum laufen zu bringen.

Außerdem denke ich weiterhin nicht das du ein Problem mit dein uboot 
hast.
ich tippe nach wie vor eher auf ein Fehlerhaftes Kernel Image.

hast du dort was angepasst oder geändert ? und hast du mal versucht ein 
Kernel mit default Config zu laden ?

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.