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
Hallo, Ich nochmal, im Anhang noch ein Photo von meinen System auf Lochraster und einige Eagle Files. Mfg Ulrich
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
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
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.
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
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
"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?
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
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
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
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
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
hmm ich hab noch massenhaft simm`s und dimm`s... ließe sich hiermit abhilfe schaffen?
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 !
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
Hi, wie stellst du das mit dem Debuggen? Hast du dir da selbst was gebastelt? Die Programmierung läuft über RS232?
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
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
@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
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
Hi könntest du den link zu dem projekt mal geben? gruss flo
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?
@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
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?
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?
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
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
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 :)
Hi ich meinte den link zum referenz design. gruss flo
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.
@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
Hallo, Das RAM 4x 512KByte habe ich von Reichelt! Kosten liegen bei 3,10 pro RAM (Type 628512-55) Mfg Ulrich
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
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
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
Steffen könntest du mir das zeugs für den dram controller schicken? gruss flo
@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
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.
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
"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.
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
Hallo, hier mal eine Appnote für einen SRAM controller. Mfg Uli
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
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.