Forum: Mikrocontroller und Digitale Elektronik uboot & mini2440 mit 256MB RAM


von Zwie B. (zwieblum)


Lesenswert?

Sagt mal, hat wer von euch des mini2440 mit 256MB Flash und uboot 
erfolgreich laufen? Bei mir funktioniert uboot zwar aus dem RAM, aber 
nicht vom Flash. Letzte Meldung ist:
1
I2C:   ready
2
DRAM:  64 MB
3
Flash:  2 MB
4
NAND:  nand_scan(): Cannot allocate oob_buf
5
0 MiB

uboot habe ich mit
1
#define CONFIG_USE_IRQ                    0       /* Needed for USB device! */

compiliert - womit angäblich das Ding mit 128MB Flash klar kommt, aber 
mit 256MB funktioniert's nicht.

Irgendjemand eine Idee?

:
von Nils S. (kruemeltee) Benutzerseite


Lesenswert?

Ich hab den uboot fürs 128MB Board schon nicht zum Laufen bekommen und 
für 256MB noch gar nie auch irgendwo ein Source-Kommentar o.ä. gesehen.

Schau dich mal hier um:

http://www.friendlyarm.net/forum/topic/370?lang=en
https://www.blogger.com/comment.g?blogID=11320970&postID=8052884915704378273

http://www.friendlyarm.net/forum/topic/79?lang=en
http://labs.kernelconcepts.de/Publications/Micro24401/


Wäre sehr froh wenn ich auch bald mal eine Lösung hierfür finden 
würde...

von Zwie B. (zwieblum)


Lesenswert?

Nun, die Links hab' ich alle durch, hat aber nichts geholfen. In einem 
chinesischem Forum hab' ich noch den Hinweis - groß angekündigt - auf 
diesen uboot gefunden: 
http://github.com/tekkamanninja/U-boot-2009.11_tekkaman

Nur funktioniert der mit 256MB auch nicht. Angäblich aber mit 128MB.

seufz

von Zwie B. (zwieblum)


Lesenswert?

Ok, diese Anleitung funktioniert zumindest für uboot und 128MB Flash:
http://bill.station51.net/index.php?post/2010/01/16/U-Boot-on-Mini2440

von Nils S. (kruemeltee) Benutzerseite


Lesenswert?

Danke zwie blum, die Anleitung und 3 Stunden basteln hats bei mir 
gebracht, was genau es war, kann ich nicht sagen, aber auf jeden Fall 
bootest es nun bei mir.

Wenn du willst, kann ich dir das bin File schicken/Anhängen und 
schreiben wie ich es in den Flash bekommen habe.

von Zwie B. (zwieblum)


Lesenswert?

:-) das freut mich

uboot am 128MB NAND hab' ich nach der Anleitung von bill.station51.net 
auch schon laufen. Den gepatchten Uboot von tekkamanninja hab' ich nicht 
zum laufen gebracht (hat nur gepiepst). Jetzt hat das Ding mit 256MB 
wieder vboot drauf.

Hast du irgendwo eine funktionierende Anleitung zum Kernel/Rootimage 
bauen? Ich habe von Kernel http://arm9.net/download.asp Kernel 2.6.32.2 
mit Toolchauin und Rootimage. Ich will das Ding aber mit Angstrom oder 
buildroot bauen, ich brauch nur ein minimales Rootimage mit SDL 
(dramebuffer) oder SDL(X11).

von Sven B. (alterswede)


Lesenswert?

Nils S. schrieb:
> Danke zwie blum, die Anleitung und 3 Stunden basteln hats bei mir
> gebracht, was genau es war, kann ich nicht sagen, aber auf jeden Fall
> bootest es nun bei mir.
>
> Wenn du willst, kann ich dir das bin File schicken/Anhängen und
> schreiben wie ich es in den Flash bekommen habe.

Ich habe ebenfalls ein Mini2440 mit 256 MB.

Würde mich auch interessieren. Danke... ;-)

von Nils S. (kruemeltee) Benutzerseite


Angehängte Dateien:

Lesenswert?

>Hast du irgendwo eine funktionierende Anleitung zum Kernel/Rootimage
>bauen? Ich habe von Kernel http://arm9.net/download.asp Kernel 2.6.32.2
>mit Toolchauin und Rootimage.
Kernel ist ganz easy. Leider hat bei mir der Sound mit dem 2.6.32 nicht 
funktioniert und Touchscreen habe ich auch nicht hintbekommen. Ebenso 
war das Bild auf den T35 Display um ca. 10-12px nach Osten verschoben.
Ich verwende den 2.6.29 von der Mini2440 DVD, der geht.
Compilieren:

$ cd <kernel source> ; mkdir ../kernel-bin/
$ CROSS_COMPILE=arm-linux- ARCH=arm make menuconfig O=../kernel-bin/
in der Menuconfig nun die passende Config laden (config_mini2440_.... 
oder so)
$ CROSS_COMPILE=arm-linux- ARCH=arm make O=../kernel-bin/
nun hat man in ../kernel-bin/ den Compilierten kernel 
(arch/arm/boot/...)

>Ich will das Ding aber mit Angstrom oder
>buildroot bauen, ich brauch nur ein minimales Rootimage
Wie das mit buildroot o.ä. geht musst du mit den diversen Howtos 
rausfinden, hab ich keine Ahnung von. Mein Flash beherbergt einen 
kompletten Eigenbau, also alles selbst aus den Quellcode Paketen 
compiliert und der chrootet in ein Gentoo auf einer USB-Disk :D

Im Anhang die funktionierende uboot.bin für 128MB

von zwieblum (Gast)


Lesenswert?

Interessant. Hast du die Codesourcery-Toolchain oder eine selbst 
gebaute? Bei Meinem funktioniert Sound, Touch und das Display korrekt, 
aber der Kernel kam schon prepatched (brrrr - die Doku, wo was gepatcht 
wurde gibt's auf chinesisch). Hast du X11 laufen?

von Nils S. (kruemeltee) Benutzerseite


Lesenswert?

>Interessant. Hast du die Codesourcery-Toolchain oder eine selbst
>gebaute?
Ich hab die von der Mini2440-DVD

>Bei Meinem funktioniert Sound, Touch und das Display korrekt,
>aber der Kernel kam schon prepatched (brrrr - die Doku, wo was gepatcht
>wurde gibt's auf chinesisch).
Naja, stört mich herzlich wenig, solange ich Sourcen hab, die 
compilieren und laufen, wird kein Produktivsystem, nur zum Basteln, 
daher kann mir das egal sein.

>Hast du X11 laufen?
Ne, ich bastle mit dem Framebuffer herum. Bin gerade dabei einen 
Winamp-Klon zu (neu)schreiben, der auf den mpd zugreift für die Musik 
und die Ausgabe erfolgt mittels ezfb http://www.akrobiz.com/ezfb/
Ist sehr easy :)

von Clemens N. (clemens2)


Lesenswert?

Hallo,

ich habe auch ein Mini2440 mit 256MB Nand und versuche u-boot darauf zum 
laufen zu bekommen - bis jetzt nur leider ohne Erfolg...

Die Version von tekkamanninja habe ich auch schon probiert; klappt aber 
auch nicht... Es gibt ja auch eine "offizielle" u-boot Version von 
denx.de. Diese unterstützt allerdings nicht das Mini2440 (zumindest die 
CPU wird teilweise unterstützt). Weiß jemand, ob diese Version einen 
NAND Flash mit 256MB unterstützt? Vielleicht könnte man ja diesen Teil 
in das u-boot für das Mini 2440 einfügen...

Was mich an der ganzen Sache ja ein wenig stört, ist, daß es dutzende 
u-boot varianten im Netz gibt, die alle weitgehend undokumentiert sind & 
wo auch nicht klar ist, welche Variante mit welcher Hardware zurande 
kommt oder auch nicht...

von Thomas R. (tinman) Benutzerseite


Lesenswert?

Clemens Novak schrieb:
>
> Weiß jemand, ob diese Version einen
> NAND Flash mit 256MB unterstützt? Vielleicht könnte man ja diesen Teil
> in das u-boot für das Mini 2440 einfügen...
>

einfach kopieren ist vllt nicht drin, man muss schon an das jeweilige 
board anpassen. Ob 256MB NAND mit uboot gehen, keine ahnung, mit 512MB 
konnte bis jetzt nicht zum laufen bewegen.

> Was mich an der ganzen Sache ja ein wenig stört, ist, daß es dutzende
> u-boot varianten im Netz gibt, die alle weitgehend undokumentiert sind &
> wo auch nicht klar ist, welche Variante mit welcher Hardware zurande
> kommt oder auch nicht...

das ist doch der "vorteil" von opensource, stell dir vor du muss auf die 
"gnade des entwicklers hoffen" - wie bei dem supervivi wo die jungs nur 
für eigenes board anpassen und keine sources publizieren.

von zwieblum (Gast)


Lesenswert?

DerHaken bei uboot+mini2440 scheint die initialisierung des SDRAM zu 
sein, und das steht in den Assembler Files, wenn ich mich nicht irre, 
jedenfalls hat der C-Code - wenn er denn überhaupt angesprungen wird - 
kein RAM. Aber das ist mir ein bischen zu hoch :-)

Source von Supervivi ist auf arm9.net zu finden, aber nicht von 
mkyaffs-128. Das Ding funktioniert zumindest. Ok, ich muss ein 
ext2-Rootimage erstellen, das mounten und ein yaffs-image erzeugen, jo 
mei, es funktioniert.

Was mich aber echt nervt ist, dass die Codesourcery Toolchain 
anscheinend nicht 100% funktioniert. Ich hab' gestern mit "buildroot" 
eine eigen Toolchain gebaut, ein Rootimage erzeugt und es rennt. Sogar 
"fbv" funktioniert, nur directfb + Xfbdev machen Mucken. Aber es 
funktioniert. Ich hab' momentan diese Codesourcery Toolchain im 
Verdacht, warum uboot nicht funktioniert.

von Thomas R. (tinman) Benutzerseite


Lesenswert?

zwieblum schrieb:
> Source von Supervivi ist auf arm9.net zu finden, aber nicht von
> mkyaffs-128.

ehm, seit wann ? Ich finde da keine sources von supervivi.

Da steht nur "supervivi基于三星的vivi而来,由友善之臂发展并维护,不提供源代码", also "supervivi 
basierend auf vivi, keine sources".

Wäre mir neu das die developer es freigegeben haben.

von zwieblum (Gast)


Lesenswert?

Oje, mea culpa! In dem Paket ist Vivi-Sourcecode drinnen :-(

Hat jemand von euch vielleicht eine Idee, wie ich aus der Ausgabe von 
"fbset" eine Modline für Xfbdev erzeuge? Ich häng' noch immer hier:

# fbset -i

mode "240x320-66"
    # D: 5.882 MHz, H: 21.626 kHz, V: 65.733 Hz
    geometry 240 320 240 320 16
    timings 170000 1 26 2 5 5 2
    rgba 5/11,6/5,5/0,0/0
endmode

Frame buffer device information:
    Name        : s3c2410fb
    Address     : 0x33940000
    Size        : 153600
    Type        : PACKED PIXELS
    Visual      : TRUECOLOR
    XPanStep    : 0
    YPanStep    : 0
    YWrapStep   : 0
    LineLength  : 480
    Accelerator : No
#

# Xfbdev -screen 240x320x16 -rgba rgb
Warning: mode not found, using default
error: Invalid argument

Fatal server error:
no screens found
#

von ... (Gast)


Lesenswert?

zwieblum schrieb:
> # Xfbdev -screen 240x320x16 -rgba rgb
> Warning: mode not found, using default
> error: Invalid argument

Die Seiten kennst du?
http://www.xfree86.org/current/Xfbdev.1.html
http://www.xfree86.org/current/TinyX.1.html

von zwieblum (Gast)


Lesenswert?

ja, aber darum geht es nicht. Es ist dieses Problem: 
http://lists.freedesktop.org/archives/xorg/2007-August/027022.html

Irgendwie muss aus dem Output von "fbset -i" eine Modeline in der Form
1
/*  H       V       Hz      KHz */
2
/*  FP      BP      BLANK   POLARITY */
3
{   240,    320,    20104,  6735,
4
     17,     12,     32,     KdSyncNegative,
5
      1,      11,     14,     KdSyncNegative,
6
},

für das File xserver/hw/kdrive/src/kmode.c erzeugt werden. Die Frage ist 
nur, wie. Der Spaß mit "Xfbdev -screnn ..." funktioniert nur dann, wenn 
eine geeignete Modeline im Code steht.

von Tom (Gast)


Lesenswert?

zwieblum schrieb:
> DerHaken bei uboot+mini2440 scheint die initialisierung des SDRAM zu
> sein

Hi!

Das würde aber Deinem ersten Posting widersprechen, denn dort schreibst 
Du, daß UBoot aus dem RAM funktioniert. Man erkennt auch, daß der NAND 
nicht wirklich erkannt wird: "NAND:  nand_scan(): Cannot allocate 
oob_buf
0 MiB". Was auch immer UBoot an dieser Stelle macht, es kann einen 
Buffer für OOB (Out-of-Band-Data) nicht anlegen. Ich besitze keinen 
Mini2440, daher ist es nur eine Vermutung, aber es sieht so aus, als ob 
das NAND tatsächlich nur den reinen Speicher darstellt, ohne weitere 
Intelligenz wie Wear Levelling. Hier wird sicherlich ein Blick ins 
Datenblatt des NANDs helfen, denn so hat ein Sektor nicht die gewohnten 
z.B. 2048 oder 4096 Byte Größe sondern 2048/4096 + X, wobei X vielleicht 
16, 32 oder was anderes bedeuten kann. Exakt dort wird OOB 
abgespeichert, es können Prüfsummen über den eigentlichen Sektor sein, 
ein Marker fürs Wear Levelling, etc (das ist die Aufgabe der Software). 
Sobald die Access-Routinen auf den verbauten NAND-Typ angepaßt sind, 
müßte es mit UBoot klappen. Diese Theorie würde dadurch unterstützt, daß 
es mit 128MiB-NANDs scheinbar klappt.

BTW, ich meine mich dunkel zu erinnern, daß es bei NAND irgendwann eine 
Änderung bei der Adressierung gegeben hat - die kleineren brauchten zwei 
Bytes im Command, die größeren drei. Vielleicht ist genau bei 258MiB die 
Grenze?

von zwieblum (Gast)


Lesenswert?

"NAND:  nand_scan(): Cannot allocate oob_buf

Der Code scheitert, weil malloc beim Speicher anfordern (4096 Byte) NULL 
zurückgibt. Wenn ich uboot über Supervivi ins RAM lade und starte kommt 
der Fehler nicht - warum auch immer. Ich steig' ehlich gesagt beim 
Bootloder nicht ganz durch.

von zwieblum (Gast)


Lesenswert?

Falls wer das selbe Problem haben sollte: Damit Xfbdev+buildroot am 
mini2440 funktioniert, muss man in hw/kdrive/src/kmode.c diese Modeline 
einfügen (am besten an 1. Stelle):

    {   240,    320,    66,     0,
            0,      0,      0,     KdSyncNegative,
            0,      0,      0,     KdSyncNegative,
    },

"66" ist die Clock von "fbset -i", 'mode "240x320-66"'.

Ein paar Zeilen weiter unten muss MONITOR_TIMING_DEFAULT auf 0 gesetzt 
werden:

    #define MONITOR_TIMING_DEFAULT  0

Der Frambuffer läßt kein setzten des Videomodes zu, alle ioctl mit 
FBIOPUT_VSCREENINFO schlagen fehl. Der betroffene Codefindet sich in 
hw/kdrive/fbdev/fbdev.c, zeilen 666 bis 673:

    /* display it on the LCD **** COMMENT OUT THIS CODE */
/*    k = ioctl (priv->fd, FBIOPUT_VSCREENINFO, &priv->var);
    if (k < 0)
    {
        perror ("1: FBIOPUT_VSCREENINFO");
        return FALSE;
    }
*/

Recompile .... :-)

von florian (Gast)


Lesenswert?

Hi zusammen,

ja das funktioniert so... nicht schön aber wirkungsvoll :-)

Einen funktionierenden Workaround für das "Cannot allocate oob_buf" 
Problem findet sich übrigens hier:

http://bill.station51.net/index.php?post/2010/01/16/U-Boot-on-Mini2440

Die Änderung in "Step 3" hat hier das gewünschte Ergebnis geliefert, der 
U-Boot läuft jetzt problemlos auf einem neuen mini2440.

Gruß

Florian

von Zwie B. (zwieblum)


Lesenswert?

Kannst du bitte dein funktionierendes u-boot posten? Bei mir hat's 
nämlich nach der Anleitung nicht geklappt.

von Alex (Gast)


Angehängte Dateien:

Lesenswert?

Hallo,

nachdem ich es auf öfters vergeblich probiert habe, füge ich mal ein für 
mein mini2440 funktionierende u-boot.bin an. Das Deaktivieren des 
CONFIG_USE_IRQ hat es wirklich gebracht. Mal schauen wie weit ich bei 
meinem Versuch ein Gentoo darauf laufen zu lassen komme ...

Viele Grüße
Alex

von Pedro (Gast)


Lesenswert?

Hallo Leute,

Habe auch ein Mini2440-256MB board, doch leder habe ich noch nicht
geschafft Linux mit QT zu installieren. Nirgends im Web finde ich
einen funktionsfähigen code Toolchan Beispiel.
kann jemand helfen?

Gruss
Pedro

von Thorsten W. (t_web)


Lesenswert?

Hallo
habe U-Boot mit Debian installiert, aber den x-server bekomme ich nicht 
ans laufen. Hat hier jemand die gefixten Debian Pakete zum download ?

mfg
t_web

von K. J. (Gast)


Lesenswert?

Thorsten Weber schrieb:
> Hallo
> habe U-Boot mit Debian installiert, aber den x-server bekomme ich nicht
> ans laufen. Hat hier jemand die gefixten Debian Pakete zum download ?
>
> mfg
> t_web

Hi lauft eigentlich out of box eine config dafür findest unter 
http://www.mikrocontroller.net/wikifiles/4/4a/Xorg.conf.txt

von Thorsten W. (t_web)


Lesenswert?

Danke für deine schnelle Antwort.

geht aber leider mit der xorg.conf auch nicht.
Das Thema ist wohl der FB Treiber.
Damit muss ein neuer X-Server gebaut werden, aber das ist mir leider 
nicht gelungen.

X.Org X Server 1.7.7
Release Date: 2010-05-04
X Protocol Version 11, Revision 0
Build Operating System: Linux 2.6.31-rc9 armv5tel Debian
Current Operating System: Linux mini2440 2.6.32-rc8 #1 Tue Jul 20 
22:55:51 CEST 2010 armv4tl
Kernel command line: console=ttySAC0,115200 noinitrd root=/dev/mmcblk0p1 
mini2440=0tb ip=dhcp rootwait=5
Build Date: 15 July 2010  08:36:13PM
xorg-server 2:1.7.7-3 (Cyril Brulebois <kibi@debian.org>)
Current version of pixman: 0.16.4
        Before reporting problems, check http://wiki.x.org
        to make sure that you have the latest version.
Markers: (--) probed, (**) from config file, (==) default setting,
        (++) from command line, (!!) notice, (II) informational,
        (WW) warning, (EE) error, (NI) not implemented, (??) unknown.
(==) Log file: "/var/log/Xorg.0.log", Time: Sat Jul 31 12:07:54 2010
(==) Using config file: "/etc/X11/xorg.conf"
(==) Using system config directory "/usr/share/X11/xorg.conf.d"
(EE) FBDEV(0): FBIOPUT_VSCREENINFO: Invalid argument
(EE) FBDEV(0): mode initialization failed

Fatal server error:
AddScreen/ScreenInit failed for driver 0


Please consult the The X.Org Foundation support
         at http://wiki.x.org
 for help.
Please also check the log file at "/var/log/Xorg.0.log" for additional 
information.


giving up.
xinit:  No such file or directory (errno 2):  unable to connect to X 
server
xinit:  No such process (errno 3):  Server error

______________________________________________________________________ 
_


Autor: zwieblum (Gast)
Datum: 01.02.2010 09:01
Falls wer das selbe Problem haben sollte: Damit Xfbdev+buildroot am
mini2440 funktioniert, muss man in hw/kdrive/src/kmode.c diese Modeline
einfügen (am besten an 1. Stelle):

    {   240,    320,    66,     0,
            0,      0,      0,     KdSyncNegative,
            0,      0,      0,     KdSyncNegative,
    },

"66" ist die Clock von "fbset -i", 'mode "240x320-66"'.

Ein paar Zeilen weiter unten muss MONITOR_TIMING_DEFAULT auf 0 gesetzt
werden:

    #define MONITOR_TIMING_DEFAULT  0

Der Frambuffer läßt kein setzten des Videomodes zu, alle ioctl mit
FBIOPUT_VSCREENINFO schlagen fehl. Der betroffene Codefindet sich in
hw/kdrive/fbdev/fbdev.c, zeilen 666 bis 673:

    /* display it on the LCD **** COMMENT OUT THIS CODE */
/*    k = ioctl (priv->fd, FBIOPUT_VSCREENINFO, &priv->var);
    if (k < 0)
    {
        perror ("1: FBIOPUT_VSCREENINFO");
        return FALSE;
    }
*/

Recompile .... :-)


_____________________________________________________________________

Denke da liegt das Problem.

mfg
t_web

Beitrag #6851588 wurde von einem Moderator gelöscht.
Beitrag #6922763 wurde von einem Moderator gelöscht.
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.