Forum: Mikrocontroller und Digitale Elektronik AT91RM9200 Bootstrap loader


von Andreas A. (aauer1) Benutzerseite


Lesenswert?

Hi

Ich hab mich jetzt endlich drüber getraut und mir ein AT91RM9200 Board 
gebaut. Natürlich soll irgendwann Linux drauf laufen und ein Schritt in 
diese Richtung ist einen ersten Bootloader zum Laufen zu bringen.
Dieser "erste Bootloader" darf nicht größer als 12k sein, damit er über 
DFU bzw. RS232 geladen werden kann. Von der Funktion her soll dieser 
Bootloader das AT45DB161 Dataflash lesen und schreiben können und so 
auch den nächsten Bootloader (UBoot) laden können.
Nachdem ich bestimmt nicht der erste bin, der so einen Bootloader 
braucht, dachte ich mir, dass es vielleicht sowas schon irgendwo gibt. 
Leider hab ich bis jetzt keinen passenden gefunden (Google konnte mir da 
nicht so richtig weiterhelfen). D.h. "RomBoot" hab ich versucht, leider 
hatte ich keinen Erfolg das Ding neu zu übersetzen. Und der 
AT91Bootstrap Loader von Atmel ist nur für die SAM926x ARMs ausgelegt.

Vielleicht kennt ja jemand einen Bootstrap Loader, der sich übersetzen 
lässt. Ansonsten muss ich wohl oder übel irgendeinen portieren (am 
besten AT91Bootstrap).

Besten Dank,
Andreas

von Claude (Gast)


Lesenswert?

Ich hätte da etwas :
http://svn.arhuaco.org/svn/src/emqbit/ECB_AT91_V2/darrell-loader/src/

Kann Dir auch ein Binary zuschicken wenn Du möchtest.

von Claude (Gast)


Angehängte Dateien:

Lesenswert?

Mal schnell auf der Platte gekramt
und den Loader + Uboot (Dataflash) Binary gefunden.
Wenn Du dich bei deinem Board an die Atmel Starterkits gehalten hast und 
der SDRAM 16 Bit breit angebunden ist sollten
die Binarys bei Dir funktionieren.
Gruß
Claude

von Peter (Gast)


Lesenswert?

Hey,

über selbe Thematik zerbreche ich mir den Kopf. Würdest Du deine Pläne 
(shematic etc.) online stellen?

von Claude (Gast)


Lesenswert?

Ja an deinen Schematics wäre ich auch interessiert! Auf wieviel Layern 
hast Du den dein Board geroutet? Und kommt man bei deinem Board an den 
EBI ?

Habe noch ein paar Sourcen für den Ur-Loader gefunden. Im Uboot Source 
ist auch ein AT91 Ur-Loader dabei

von Andreas A. (aauer1) Benutzerseite


Angehängte Dateien:

Lesenswert?

Hi

Erstmal danke für die rasche Antwort (btw. meine SDRAMs sind 32-bit 
mäßig angebunden, aber da ist nur ein Bit im SDRAMC zu ändern).

Ich stell natürlich gerne meine Pläne zur Verfügung. Im Anhang sind mal 
meine Schaltpläne als PDF, da ich hier ungern meine Eagle Files poste. 
Ich bin aber gern auch bereit meine Eagle Files als Ausgangsbasis für 
eigene Projekte zur Verfügung zu stellen, wobei ich das dann eher in die 
Richtung machen möchte, dass jeder meine Files ändern darf und kann, 
jedoch seine Änderungen/sein Projekt wieder der Allgemeinheit zur 
Verfügung stellen soll/muss (Opencores rules). Dafür benötige ich dann 
aber auch noch einen entsprechende Platform...

Zu den Fragen, die noch offen sind:
* das Board ist auf 2 Layern geroutet.
* 64 MB SDRAM, Ethernet,
  USB Host/Slave,
  MicroSD Sockel,
  512 MB Flash,
  2 MB Dataflash,
  3,3V und 1,8V Spannungsregler sind auf dem Board
* leider hatte ich keinen Platz mehr um das EBI auf Stiftleisten zu 
routen.

mfg
Andreas

von Andreas A. (aauer1) Benutzerseite


Angehängte Dateien:

Lesenswert?

Hier noch ein Foto von dem halb-aufgebauten Board. Hier fehlen noch das 
512 MB Flash (ist auf der Unterseite drauf) und der Ethernet Controller.
BTW. das Board ist 100x80 mm groß (halbe Eurokarte).

mfg
Andreas

von Peter (Gast)


Lesenswert?

Du sag mal, dieses microtux erinnert mich grad an irgendwas.
gabs da eine Vorlage für? also, es gibt ja noch picotux -> aber ich bin 
mir fast tausendprozentig sicher, dass es auch schon ein microtux board 
gibt. hast du die schaltplan vorlage aus einem anderen projekt?

von Jörn K. (joern)


Lesenswert?

Hallo Andreas,

hast du Interesse an etwas Zusammenarbeit? Ich habe ein Baord mit einem 
9260 entworfen, von dem die 1. Revision gerade beim 
Leiterplattenhersteller ist.
Die Vorgängerversion kann du hier sehen, war leider etwas buggy ;(
http://www.joernonline.de/dw/doku.php?id=projects:sam9_eval:1_sam9eval

Ich habe auch vor aus dem Dataflash zu booten und danach entweder den 2. 
Level Bootloader aus dem DF zu holen bzw. direkt auf SD-Karte zu gehen. 
Vielleicht kann man sich beim Treiber schreiben zusammen tun.

Viele Grüße
Jörn

von Claude (Gast)


Lesenswert?

Hallo Jörn,
könnte ich mich da mit einklinken? Dein Board entspricht beinahe dem was 
ich suche. Ich benötige nur mehr Adressen am EBI zwecks Altera FPGA 
Spielerein.

Wegen den Treibern: das meiste ist schon in den AT91-Maxim Linux Patches 
vorhanden. Uboot hat eine Config für die AT91 Starterkits und
den Ur-Loader findet man im Source z.b. bei http://dlharmon.com/sbc.html

von Andreas A. (aauer1) Benutzerseite


Lesenswert?

Hi

@Peter:
Ich hab keine Ahnung, ob es ein Microtux Board schonmal gegeben hat bzw. 
gibt. Mein Board ist auf jedenfall von Grund auf neu enstanden, wobei 
man bei den meisten Dingen eh keine Wahl hat (d.h. die SDRAM, das 
Dataflash, usw.  sind meistens immer auf die selbe Art und Weise 
angeschlossen).

@Jörn:
Hätte natürlich Interesse an einer Zusammenarbeit! Dein Board sieht 
übrigens sehr interessant aus. Wie groß ist es von den Abmessungen her?? 
Übrigens hab ich dein JTAG Interface (OOCDLink) nachgebaut und leider 
noch ein paar Probleme damit (ARM lässt sich nicht richtig 
programmieren). Aber das ist ne andere Geschichte...
Ahm... eine Seite, die du vielleicht schon kennst, die auch einen First 
Stage Bootloader für deinen SAM9260 haben ist http://www.linux4sam.org.
Ach ja... was mich noch interessiert, wäre wie du deine SDRAM getestet 
hast. Hab gestern nämlich den Loader ausprobiert, den "Claude" gepostet 
hat, und der schafft es nicht meine RAMs richtig anzusprechen. Jetzt 
weiß ich natürlich nicht, ob die SDRAM nicht funktionieren, oder ob sie 
nur falsch initialisiert werden.

Ok, das wars jetzt mal von meiner Seite denk ich.

mfg
Andreas

von Jörn K. (joern)


Angehängte Dateien:

Lesenswert?

Hallo zusammen,

@Claude:
An wieviele Adressleitungen hast du gedacht? Auf dem externen Verbinder 
liegen schonmal die Signale, um eine Altera FPGA über den passive serial 
mode zu konfigurieren.

@Andreas:

> Hätte natürlich Interesse an einer Zusammenarbeit! Dein Board sieht
> übrigens sehr interessant aus. Wie groß ist es von den Abmessungen her??
> Übrigens hab ich dein JTAG Interface (OOCDLink) nachgebaut und leider
> noch ein paar Probleme damit (ARM lässt sich nicht richtig
> programmieren). Aber das ist ne andere Geschichte...

Was hat nicht funktioniert? Hab den OOCDLink schon mit 9260 am Laufen 
gehabt.

> Ahm... eine Seite, die du vielleicht schon kennst, die auch einen First
> Stage Bootloader für deinen SAM9260 haben ist http://www.linux4sam.org.

Danke für den Tipp, werde ich mir mal anschauen.

> Ach ja... was mich noch interessiert, wäre wie du deine SDRAM getestet
> hast. Hab gestern nämlich den Loader ausprobiert, den "Claude" gepostet
> hat, und der schafft es nicht meine RAMs richtig anzusprechen. Jetzt
> weiß ich natürlich nicht, ob die SDRAM nicht funktionieren, oder ob sie
> nur falsch initialisiert werden.

Ich hab verschiedene Datenmuster auf Adresse geschrieben und 
zurückgelesen. Anschließend mal ne Stunde gewartet und nochmal gelesen, 
um auszuschließend, dass der SDRAM an Vergesslichkeit leidet. Ich such 
dir mal  meine SDRAM Konfiguration raus.

Viele Grüße
Jörn

von Andreas A. (aauer1) Benutzerseite


Lesenswert?

Jörn Kaipf wrote:
> Was hat nicht funktioniert? Hab den OOCDLink schon mit 9260 am Laufen
> gehabt.

Ahm... ich hab das Tool mit einem AT91SAM7S128 Board ausprobiert. 
OpenOCD greift auch auf das JTAG Interfacae zu und ich bekomm auch mit 
"flash info 0" meistens die richtigen Infos des ARM7 Devices zurück. 
"meistens" deshalb, weil es hin und wieder vorkommt, dass er sagt, dass 
ein unbekanntes Device über JTAG angeschlossen ist. Außerdem kann ich 
den ARM7 nicht richtig programmieren. Ich weiß aber nicht woran es 
liegt... vielleicht sind die JTAG Signale nicht sauber...

> Ich hab verschiedene Datenmuster auf Adresse geschrieben und
> zurückgelesen. Anschließend mal ne Stunde gewartet und nochmal gelesen,
> um auszuschließend, dass der SDRAM an Vergesslichkeit leidet. Ich such
> dir mal  meine SDRAM Konfiguration raus.

Ja danke... das wäre super!

mfg
Andreas

von Claude (Gast)


Lesenswert?

Hallo Jörn,

dachte da so an 19-22 Adressleitungen und 1-2 Chipselects und nWait.
Schön ware auch einen der MCLKs auf den Header ,
zwecks Synchronität zum FPGA, zu legen.

Ich bastel gerade viel mit Framebuffern im FPGA herum und da ist es 
schöner/schneller ein memcpy() auf den Framebuffer zu machen als alles 
per Page Write durchzukauen.

So hätte man einen linaren Framebuffer den man aus Linux heraus einfach 
über /dev/mem oder Kernel Treiber lesend und schreibend ansprechen kann.

Ausserdem könnte man mit einen größeren Adressraum am FPGA auch so
schöne sachen wie Wishbone,Avalon,etc sinnvoller nutzen.

Wenn Du noch was suchst um per Passive Serial unter Linux oder Uboot ein 
FPGA zu Programmieren kann ich Dir aushelfen. Auf der Arbeit mache ich 
auch viel mit ARM9 (Netsilicon) und Alteras und hab da ein paar lösungen 
programmiert (GPL Code).

Gruß aus dem Ländle*
Claude

*Hab gerade in deinem Impresum entdeckt das ich
bei Dir "ums eck" Wohne :-)

von Jörn K. (joern)


Angehängte Dateien:

Lesenswert?

Hallo Claude
> dachte da so an 19-22 Adressleitungen und 1-2 Chipselects und nWait.
> Schön ware auch einen der MCLKs auf den Header ,
> zwecks Synchronität zum FPGA, zu legen.
>
> Ich bastel gerade viel mit Framebuffern im FPGA herum und da ist es
> schöner/schneller ein memcpy() auf den Framebuffer zu machen als alles
> per Page Write durchzukauen.

Sind aber ganz schön viele Adressen ;) Wie wäre es mit einem 
Konfigurationsregister, in das die Startadresse geschrieben wird und 
danach die Daten auf einer fixen Adresse lesen bzw. schreiben. Man kann 
dann zwar kein memcpy mehr bentutzen braucht aber weniger Adressen.

> Wenn Du noch was suchst um per Passive Serial unter Linux oder Uboot ein
> FPGA zu Programmieren kann ich Dir aushelfen. Auf der Arbeit mache ich
> auch viel mit ARM9 (Netsilicon) und Alteras und hab da ein paar lösungen
> programmiert (GPL Code).

Auf dein Angebot werde ich vielleicht noch zurück kommen.

> Gruß aus dem Ländle*
> bei Dir "ums eck" Wohne :-)

Wo liegt denn "ums eck" ;) ?

@Andreas:
Im Anhang mein Initskript (OpenOCD) für den SAM9260 (mit SDRAM)

Viele Grüße
Jörn

von Claude (Gast)


Lesenswert?

Hi Jörn,
>Sind aber ganz schön viele Adressen ;)
ja sind viele Adressleitungen. Bin da etwas vom NIOS verwöhnt.
Dein Vorschlag mit dem Register geht natürlich ,
und läuft bereits, auch.

>Auf dein Angebot werde ich vielleicht noch zurück kommen.
Einfach melden , ich schaue gelegentlich dann mal in diesen Thread rein.

>Wo liegt denn "ums eck" ;) ?
Schwäbisch Hall , so 90km von Ulm weg. Ok, eine etwas größere Ecke :-)

Gruß
Claude

von Andreas A. (Firma: Embedded Microtec) (andi) Flattr this


Lesenswert?

Hi

Ich hätte da nochmal eine Frage bezüglich den ARM9s...
Ich habs dieses Wochenende geschafft, dass ich einen Bootloader 
(Darrel-Loader) ins Flash gespielt hab und danach mit UBoot den Kernel 
gebootet habe.
So... ich wollte jetzt die SD card als rootfs verwenden. Leider funkt 
die Ansteuerung irgendwie nicht so ganz (schaut zumindest so aus). Jetzt 
wollte ich euch einfach mal fragen, ob ihr die SD card schonmal am 
Laufen hattet?!?!

mfg
Andreas

von Claude (Gast)


Lesenswert?

Ja hab ich. Versuch mal dem Kernel die Option "rootdelay=5" mitzugeben. 
Damit wartet der Kernel 5 Sekunden bevor er das rootfs mountet, scheint 
bei SD nötig zu sein. Hab auch mal irgendwo gelesen das der "4 wire 
mode" im at91 SD Treiber Buggy sein soll, deswegen läuft er bei mir im 
SPI Mode.

Gruß
Claude

von Andreas A. (Firma: Embedded Microtec) (andi) Flattr this


Lesenswert?

Hi

Habs jetzt auch zum Laufen bekommen. Das Problem lag aber an der Kernel 
Version. Ich hab versucht den Kernel 2.6.23 zu booten und der hat 
anscheinend ein Problem mit dem SD Interface. Der Kernel 2.6.17 hat dann 
sofort problemlos funktioniert. Laut Kernel-Log läuft auch bei mir der 
SD Treiber im 1 Bit mode. Hab auch im Treiber gesehen, dass der 4-bit 
mode nur mit den AT91SAM92xx aktiviert wird.

Danke für deine Message,
Andreas

von Claude (Gast)


Lesenswert?

Bei mir läuft der 2.6.21 mit Debian rootfs ganz gut. War im Oktober auf 
einem Kernel Summit Meeting, dort wurde der 2.6.21er wärmstens 
empfohlen. War anscheinend der Kernel mit am meisten Bugfixes seit 
langem ( oder überhaupt? ). Das komplette IRQ und Netcode Framework 
wurde neu geschrieben.
Jedenfall war die Gesamtgröße der eingereichten Patches größer als das 
Kernel Archiv :-)

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.