Forum: Projekte & Code uCLinux Bootloader + Kernel für ARM LPC2294


von Uli (Gast)


Angehängte Dateien:

Lesenswert?

Hallo,

Da bin ich mal wieder, dieses mal mit einen uCLinux MMC Bootloader für
den Philips LPC2294. Anbei auch der KERNEL und mein ROMFS Image.
Es wird benötigt der LPC2294 und 2MB SRAM bei Adresse 8100 0000 - 8120
0000 natürlich 32Bit Organisiert.

Mfg Ulrich Radig

von Uli (Gast)


Angehängte Dateien:

Lesenswert?

Hallo,

Ich nochmal, im Anhang noch ein Photo von meinen System auf Lochraster
und einige Eagle Files.

Mfg Ulrich

von Hans (Gast)


Lesenswert?

endlich mal einer der sich mit den lustigen dingern beschäftigt ;)

ich hab da mal eine frage.. angenommen ich nehme den uclinux kernel
(der ja angeblich ein 2.6er mit eingeschaltener mmu emulation ist) und
spiel das zeug ein.. und dann lass ich noch eine schöne abgespeckte
shell ala busybox laufen der ich die daten z.b mit einem vt100 terminal
über die serielle reinschieb.. tut das teil dann gleich wie eine
"richtige" linux maschine ???

weil das wäre dann schön zum debuggen udgl...

auf den ganzen uclinux seiten bin ich diesbezüglich nirgends wirklich
fündig geworden...

und dann gleich noch eine frage.. wo bekommt man die dinger her ;D

73

von Uli (Gast)


Angehängte Dateien:

Lesenswert?

Hallo,

Den LPC2294 habe ich als Sample bekommen(Danke an den Spender ;-). Der
Kernel ist die Version 2.6.5 ohne MMU. Im Anhang die komplette Doku die
ich benutzt habe. Allerdings muß man noch einiges Basteln.
Ich werde noch eine genauere Doku in den nächsten Tagen auf meiner HP
veröffentlichen. Das Linux verhält sich sonst wie auf einen PC mit
Shell. Die Ein-Ausgabe erfolgt zur Zeit über ttyS0 also RXD0/TXD0 vom
Philips LPC2294. Jetzt werde ich noch ein schönes Board mit Eagle
erstellen.

Mfg Ulrich

von Don (Gast)


Lesenswert?

Was ich zu dem Thema empfehlen kann:

Linux Device Drivers
3. Edition
http://www.oreilly.de/catalog/linuxdrive3/index.html

Ist prima geeignet, wenn man sich die Treiber fuer die Hardware selber
schreiben muss.

von Steffen (Gast)


Lesenswert?

Hallo Ulrich,

erst einmal vielen Dank für die Veröffentlichung Deiner interessanten
Projekte. Das Thema ARM finde ich besonders spannend.

Hast Du schon über eine Ethernet-Anbindung nachgedacht? Wird auch hier
der RTL8019AS bzw. eine ISA-Netzwerkkarte zum Einsatz kommen?

Mich würde ein Performancevergleich zum AVR-System interessieren.

Gruß Steffen

von Uli (Gast)


Lesenswert?

Hallo,

>>Hast Du schon über eine Ethernet-Anbindung nachgedacht?
Ja habe ich! Da für den LPC2294 im uClinux ein Netzwerktreiber
(RTL8019) vorhanden ist, werde ich diesen auch verwenden.
Allerding reicht der Speicher in diesem Fall dann nicht aus.
Es werden min 4MB benötigt.

>>Mich würde ein Performancevergleich zum AVR-System interessieren.
Laut meinen uClinux schafft der Processor 0,81BogoMips ich habe aber
diesen auch schon mit 3,5Bogomips gesehen. Die Leistungssteigerung zum
Atmel kann ich nur so vergleichen der Atmel ist eine Ente und der ARM
LPC2294 ein Porsche. Der eine verarbeitet 32Bit der andere 8Bit,
hinzukommt noch der 6mal (60Mhz) höhere Takt. Ich würde sagen der LPC
ist so um den Faktor 100 schneller.

Mfg Ulrich

von Michael (Gast)


Lesenswert?

"Laut meinen uClinux schafft der Processor 0,81BogoMips ich habe aber
diesen auch schon mit 3,5Bogomips gesehen."

Also 0,81 BogoMips sind extrem wenig. Das sieht nach irgendwelchen
Problemen aus. Vielleicht falsch kompiliert?

von Florian (Gast)


Lesenswert?

Hi

Kannst du mal den kompletten schaltplan posten? und kannst du noch nen
netzwerk übertrager mit dran hängen damit ssh geht fände ich noch
praktisch.

gruss flo

von Hans (Gast)


Lesenswert?

der lpc2214 kostet bei rs 18e... nur der sram kostet.. 4MB würden mit
11e zu buche schlagen...

könnte man da nicht einen dram controller ranbaun (z.b einen fpga
dazuwischen tun) und dann dram verwenden???

das wär dann billiger.. so 64MB um das gleiche was 4MB sram kosten
würden...

73

von Marco (Gast)


Lesenswert?

Können die Dinger nicht auch mit SDRAM umgehen? Wäre billig, schnell und
sehr leicht zu beschaffen.

Und 0,8 BogoMips sind wirklich putzig g
http://www.tldp.org/HOWTO/BogoMips/x188.html#AEN193

von Hans (Gast)


Lesenswert?

nein die können meines wissens nur mit sram umgehn


und die 0,8 bogomips könnten ja von einer nicht eingeschaltenen pll
kommen... hast du das schon gecheckt???

oder unter umständen nicht alle optimierungsmöglichkeiten für den
compiler ausgereizt... das ist glaub ich aber das geringste übel...

wirklich wichtig wäre ram.. und davon massenhaft ;)

73

von Uli (Gast)


Lesenswert?

Hallo,

Das mit 0,81BogoMips liegt halt nur an einer Einstellungssache ich habe
alle Werte an meinen Quarz angepasst :-) und siehe da ich erhalte
2.92BogoMips was ich auch als real Bewerte.

Leider hat der Philips LPC2294 kein SDRAM Controller, somit ist es
nicht ohne weiteres möglich SDRAM anzuschließen.

Mfg Ulrich

von KoF (Gast)


Lesenswert?

hmm ich hab noch massenhaft simm`s und dimm`s... ließe sich hiermit
abhilfe schaffen?

von Michael (Gast)


Lesenswert?

Ich finde den Beitrag sehr gut und hoffe, irgendwann auch einmal Zeit
für diese 'Typen' zu haben.
Allerdings bin ich bei Deiner Einschätzung der Geschwindigkeit
gegenüber einem AVR sehr skeptisch. Faktor 100 halte ich für
übertrieben, Faktor 10 als wünschenswert und Faktor 5 als realistisch,
sofern es sich um eine typische µP-Anwendung handelt (rechnen + IO).
Aber auch Faktor fünf ist erheblich !

von Uli (Gast)


Lesenswert?

Hallo Michael,

Nur Faktor Faktor 5 das halte ich untertrieben, wenn der Prozessor
schon alleine mit der gleichen Geschwindigkeit wie ein AVR arbeiten
würde wäre dieser 4mal schneller 32Bit anstelle von 8Bit, desweiteren
kommt hinzu das der ARM 3Pipes hat. Wärend der ARM einen Befehl
abarbeitet holt dieser schon den neuen Befehl(32Bit). Zum Schluß ist da
halt noch der Takt der ARM arbeitet mit 60MHz. Also gut Faktor 100 habe
ich evt. zu hoch angesetzt ;-) Zum Schluß beide Prozessoren sind RISC
Prozessoren. Programmiere nun mal ein Programm mit Integer Werten
(32Bit) mal sehen wie schnell dann ein Atmel AVR ist so MD5 ist da evt.
eine gute Anwendung! Bezogen auf reine I/O Anwendungen ist der Faktor
5/10 real.

Mfg Ulrich

von Sebastian Halle (Gast)


Lesenswert?

Hi,

wie stellst du das mit dem Debuggen? Hast du dir da selbst was
gebastelt? Die Programmierung läuft über RS232?

von Uli (Gast)


Lesenswert?

Hallo,

Die Programmierung des internen Flash erfolgt mithilfe eines
Bootloaders der in dem LPC2xxx vorhanden ist. Dazu gibt es auf der HP
von Philips ein kostenloses Flash Tool. Ich benutze aber welches bei
WIN GCC dabei ist. Dieses Flash Tool beschreibt mir den internen
Speicher Flash und SRAM. Zum Debuggen und auslesen wo ich gerade im
Programm bin benutze ich einfach printf unter C, bzw beim Kernel
printk. Vorrausgesetzt man hat die erforderlichen Routinen die schon
laufen (Printf und Printk). Hierbei erfolgt auch die Ausgabe über die
serielle Schnittstelle.

Mfg Ulrich

von Michael (Gast)


Lesenswert?

Hallo Ulrich,

an anderer Stelle habe ich mich wiederholt für 32-Bitter stark gemacht,
weil die Rechenleistung deutlich steigt, wenn man 'long' Variablen
braucht (man braucht sie :-)
Aber wenn es darum geht, einzelne Portbits anzusprechen, geht dies
nicht in gleichem Maße schneller wie die Rechnerei. Auch muß man sehen,
daß z.B. externes RAM 'nur noch' mit 20MHz (3 Takte)angesprochen wird
und das bei Berechnungen längerer Tabellen (Meßdaten) nicht so flott
geht.

Und auch wenn so ein Teil nur fünffach schneller sein sollte, schafft
es immerhin soviel, wie fünf AVRs gleichzeitig. Hinzu kommt bei diesen
µPs, daß richtig viel Datenspeicher im direkten Zugriff ist und nicht
irgendwie und ganz blöd segmentiert.
Diese Teile sind letzlich eine ganz andere Leistungsklasse. Irgendwann
nehme ich sie auch :-)

Michael

von peter dannegger (Gast)


Lesenswert?

@Uli,

"wenn der Prozessor schon alleine mit der gleichen Geschwindigkeit wie
ein AVR arbeiten würde wäre dieser 4mal schneller 32Bit anstelle von
8Bit"

Ein 32Bitter ist nur dann schneller, wenn man auch die 32Bit braucht.
Um z.B. einen Portpin zu setzen, nützen Dir 32Bit überhaupt nichts. Der
AVR braucht dazu nur 2 Zyklen (SBI), der ARM dagegen 6 Zyklen
(LDR+LDR+STR), ist also 3mal langsamer !


"desweiteren kommt hinzu das der ARM 3Pipes hat"

Das ist nur ne Krücke, um den Flash auszutricksen, der kann nämlich nur
mit max 20MHz auslesen.
Trotz dieser Krücke kommt es aber zu Cache Miss, so daß der LPC bei
60MHz effektiv nur etwa doppelt so schnell ist, wie bei 20MHz.
Der ARM kann definitiv nicht 3 Befehle je Zyklus ausführen.

Ich schließe mich daher auch den anderen an, im Mittel 5..10-fach ist
real.


Peter

von Andreas (Gast)


Lesenswert?

Und wieder mal ein Mythos zerstört... ;)

von Hans (Gast)


Lesenswert?

mich hat wieder das embedded linux fieber gepackt... ;)

hat hier jemand einführende doku zu dem thema ??

weil ein schöner arm720 (LH79520) (der sdram mag) kostet nicht viel
mehr als ein arm7tdmi... und ganz nebenbei hat der auch eine mmu, was
der performance sicher auch nicht schlecht tun dürfte....


jetzt hab ich mir so ein reference design mal angeguckt und irgendwie
schaut das doch recht aufwendig aus... also nicht unbedingt für
quick&dirty pcbs geeignet...

mich würds interessieren ob es da schon open hardware projektchen gibt
(weil so ein ganzes board selbst designen ohne ahnung von der materie
macht keinen spass...und das reference design hat 64MB ram, audio
codex, usb,und weis der teufel noch für schnick schnack drauf g)

73

von Florian (Gast)


Lesenswert?

Hi

könntest du den link zu dem projekt mal geben?


gruss flo

von KoF (Gast)


Lesenswert?

ab wann ist denn damit zu rechnen, das du deine graka mit dem arm
kombinierst??

ps. würden die alten dimms (die ich ober erwähnt habe) funktionieren?

von OldBug (Gast)


Lesenswert?

@Uli:

WIN GCC?

von Hans (Gast)


Lesenswert?

@KoF: Nein, Dimms gehn nicht, da dieser arm keinen dram controller
hat...

@Florian: Welchen link? den zu ulrichs page oder den zu dem referenz
design,das ich gefunden habe?

73

von Uli (Gast)


Lesenswert?

Hallo @OldBug,

Ja Win GCC oder GNU ARM!

Mfg Ulrich

von OldBug (Gast)


Lesenswert?

Hm, sicher, daß das Package Win GCC heist?

Wenn ja, dann kenne ich das noch nicht.
Ich vermute aber, daß Du WinARM von Martin Thomas meinst, oder doch
nicht?

von Netbandit (Gast)


Lesenswert?

hmmm ich als Assebler Fan... lassen sich die teile auch ohne LinuX nur
auf Assemblerbasis programmieren...?

klingt zwar recht krank, aber wenn schon denn schon.. was nützt mir die
gesteigerte Leistung wenn ein OS wieder einen Teil davon auffrißt?

von Hans (Gast)


Lesenswert?

türlich geht das ;) nur frage ich mich ob du so viel effizienter coden
kannst als ein c compiler wenn du so viel speicher und resourcen zur
verfügung hast ;)

vor allem wenn man bedenkt,dass c eh nur ein besserer makro-assembler
ist g

73

von Uli (Gast)


Lesenswert?

Hallo,

Leute, mir geht es hier nicht um die Leistung!! Oder ob ein Atmel AVR
besser ist oder schlechter! Mir geht es auch nicht drum ob ich so ein
Ding nicht besser in C oder in ASM programmieren kann.

Mir geht es darum ein Linux System verzustellen welches viele Personen
recht Flexibel eisetzen können. Desweiteren benötigt dieses System
gerade mal 100mA. Unnnnddd man kann es selber bauen.

Zum tot Quatschen gibt es bessere Threads!!

Mfg Ulrich

von OldBug (Gast)


Lesenswert?

Meine Frage war übrigens ernst gemeint!

von Netbandit (Gast)


Lesenswert?

Sorry Uli, war doch nur eine Frage...
Ja ucLinux ist schon cool und bietet viele Funktionen. Aber ich habe
bei den gedanken einfach das Gefühl, daß ich mich von der Hardware
entferne, daher nur die Frage ob man solche Teile auch einfach ohne
Linux in Assembler programmieren kann.

Trotzdem toll, daß du dein Projekt hier vorstellt, ich wollte es ja
nicht kleinreden... sondern nur eine Frage stellen, die ja jetzt schon
beantwortet ist :)

von Florian (Gast)


Lesenswert?

Hi

ich meinte den link zum referenz design.

gruss flo

von KoF (Gast)


Lesenswert?

@florian
http://www.dreamislife.com/arm/

^^beispiel für asm auf dem arm ohne eigenem os ;-)

von Andreas (Gast)


Lesenswert?

Was ich empfehlen kann:

http://www.gumstix.org

Die sind nicht nur preiswert und prima ausgestattet, sondern es gibt
auch eine echt gute Linux-Unterstützung. Wenn also jemand ein
leistungsfähiges embedded Linux benötigt, dann sollte er da mal
reinschauen.

von Hans (Gast)


Lesenswert?

@florian:

Das design kommt von dem dev-kit ;)
http://www.nuhorizons.com/services/development/sharp/evalboardkit.html

und das pdf teil (5MB) liegt hier..
http://www.nuhorizons.com/services/development/sharp/tec_usersguide_kev79520.pdf

wenns nicht gehn sollte könnt ichs dir auch noch mailen...

@uli genau so solls sein... einfach zu baun und dank linux auch schnell
zu programmieren ;)

wo hast du deinen ram her wenn man fragen darf.. und was hat er
gekostet???

73

von Uli (Gast)


Lesenswert?

Hallo,

Das RAM 4x 512KByte habe ich von Reichelt! Kosten liegen bei 3,10€ pro
RAM (Type 628512-55)


Mfg Ulrich

von Peter D. (peda)


Lesenswert?

55ns, sind die nicht für 60MHz viel zu lahmarschig ???

Was für ein Timing hast Du denn eingestellt ?

Der Stack sollte wohl auf alle Fälle im internen RAM liegen.

Hut ab, daß Du soviel Geduld hast, alles mit Drähten zu ziehen und das
es sogar noch läuft.

Wieviel 100nF hast Du am LPC ?

In der Schaltung von Olimex sind 15 Sück drauf.


Ich hab meinen Softwerkern den LPC2106 gezeigt und schon muß es ein
LPC2292 mit externem SRAM und Ethernet sein. Gibt man denen den kleinen
Finger, reißen sie einem gleich den ganzen Arm aus.

Also händisch routen is nich, mal sehen, was der Autorouter da so
hinscheißt.

Die gucken immer nur auf den Preis der CPU und wenn dann 6 Layer nötig
werden, fallen sie aus allen Wolken.


Peter

von Uli (Gast)


Lesenswert?

Hallo,

Ja 55ns sind schon sehr langsam. Vom Timing benutze ich alle 19
Waitstaits. Bin zur Zeit an einen DRAM Controller zugange. Dann habe
ich das Speicherproblem im griff (man hat ja nie genug Speicher).
Desweiteren wird dann der httpd Server getestet.

Wieviel 100nF hast Du am LPC ?
Bei mir sind es erstmal nur 5 gewesen! Aber bei meinen Layout werden es
einige mehr sein. Das erste Layout arbeitet bei mir noch mit 2Layern
halt Hobbybastler freundlich und von der größe ist es auch nicht gerade
kompakt ;-) aber es funzt.

Mfg Ulrich

von Steffen (Gast)


Lesenswert?

Hallo,

hatte auch des Problem mit dem SRAM. Die ich hatte IS61LV10248-10T (
1Mx8 10ns von ISSI ) waren mir etwas teuer ( etwa 9,20 EUR netto ).
Jetzt habe ich einen DRAM-Controller mit 16MB ( 32 Bit ). Den
Controller habe ich mit einem Lattice LC4128V und den Takt mit einem
ICS502 ( PLL CLOCK MULTIPLIER ) aufgebaut. Als SDRAM habe ich den
MT48LC16M4A2-TG-7E genommen.

Gruss

Steffen

von Florian (Gast)


Lesenswert?

Steffen

könntest du mir das zeugs für den dram controller schicken?

gruss flo

von Steffen (Gast)


Lesenswert?

@Florian

den Schaltplan kann ich Dir schicken, nur die Sourcen leider nicht. Die
stammen von Lattice und wurden von mir etwas angepasst. Wenn Du bei
Lattice registriert bist, kannst Du Dir das ges. Projekt laden.

Gruss

Steffen

von Michael (Gast)


Lesenswert?

DRAM-Controller sind eigentlich bei jedem Logik-Hersteller als App-Note
verfügbar, also auch Xilinx und Co.
Schau auch mal bei AD, die haben etwas für ihre DSPs.
opencores.org ist natürlich auch eine Fundgrube.

von Andreas Auer (Gast)


Lesenswert?

Hi

Hab eure Beiträge mit großem Interesse gelesen. Hab selbst auch
schonmal daran gedacht, die LPC22xx für ein Embedded System zu
verwenden. Mir war aber der Aufwand mit parallel geschalteten SRAMs zu
groß und hab deshalb auch nie ne Schaltung aufgebaut. Aber wie man
sieht funktioniert es (sogar mit uCLinux)!! Mal großen Respekt!!

Wie gesagt, interessiert mich das Thema sehr (vorallem weil ich ich die
ARM Controller genial finde)! Jedenfalls wollte ich mich erkundigen, ob
ihr/du (du = Ulrich) mit dem DRAM Controller schon weitergekommen
seid/bist.
Der DRAM Controller für diese Anwendung müsste ja so beschaffen sein,
dass es für den LPC so aussieht als würde er direkt auf ein SRAM
zugreifen, oder?? Bei Xilinx gibts zwar massig AppNotes zum Thema
Speicherinterface, aber hauptsächlich für deren FPGAs, wodurch die DRAM
Controller Schaltung schon fast wieder zum eigenen Projekt wird.
Außerdem sind die Virtex und Spartan FPGAs relativ teuer.

Würd mich also interessieren, wie ihr das löst bzw. welchen
Lösungsansatz ich wieder übersehen habe!

Find euer vorhaben auf jedenfall genial. Ich hoffe, dass ich in der
vorlesungsfreien Zeit - im Sommer - auch mal dazukomme mich mit nem
LPC2214 zu beschäftigen.

mfg
Andreas

von Jim (Gast)


Lesenswert?

"Außerdem sind die Virtex und Spartan FPGAs relativ teuer."

FPGAs brauchst Du nur für den DRAM-Controller nicht. Es reichen die
günstigen CPLDs, beispielsweise ein XC95144XL, den man schon für einen
10er bekommt.

von Andreas Auer (Gast)


Lesenswert?

Na das hört man ja schon gerne, dass es auch mit den CPLDs möglich ist.
Hab jetzt nochmal die Datenblätter des LPC etwas durchgeschaut. Die
SDRAMs benötigen ja, was ich gelesen habe, einen Command, ob jetzt
geschrieben oder gelesen wird. Dann gibts da noch 4 Bänke mit Rows und
Columns, wobei zum Schreiben bzw. zum Lesen eine Row geöffnet sein
muss.

D.h. dass der CPLD, der als SDRAM Controller, fungieren soll, beim
Schreiben/Lesen erstmal eine Row öffnen, dann den Schreib-/Lesebefehl
schicken muss und dann die Daten ins RAM schreibt. Hoffe ich hab das
jetzt so richtig verstanden!
Jedenfalls sollte das während einiger, hoffentlich weniger, Waitstate
Zyklen des LPCs passieren, richtig??

Und so nebenbei soll der SDRAM Controller auch noch den Refresh
durchführen.
Falls das so stimmt, kann ich ja auch mal selbst versuchen sowas im
Webpack zu modellieren!

mfg
Andreas

von uli (Gast)


Angehängte Dateien:

Lesenswert?

Hallo,

hier mal eine Appnote für einen SRAM controller.

Mfg Uli

von matze (Gast)


Lesenswert?

Hallo zusammen,
echt interessantes Projekt und Beiträge! Ich habe mich bis jetzt mit uC 
aller 80C51 (8Bit) befasst... jetzt will ich auch Ethernet anschliessen. 
Da eignet sich der ARM besser. Embedded Linux benötigt viel Speicher, da 
bin ich auf eine interessante Projektseite gestossen 
http://www.ethernut.de/en/hardware/enut3/index.html
Ein einfaches Board, mit Eagle-CAD Plänen und eignem OS zum runterladen 
(inkl . TCP/IP Stack etc.).

Gruss
Matze

von Gottfried (Gast)


Lesenswert?

Bogomips hat rein gar nichts mit der Geschwindigkeit zu tun!
Bogomips werden nur benötigt um Timings beim Starten mittels Schleifen 
zu realisieren, bevor die ganzen Interrupts gestartet werden.

Bogomips = falsche MIPS
Nachzulesen hier:
http://de.wikipedia.org/wiki/Bogomips

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.