Forum: Mikrocontroller und Digitale Elektronik LPC2478 welcher Speicher sinnvoll


von Mario A. (ma1979)


Lesenswert?

Hallo Zusammen,

ich möchte ein Board mit einem LPC2478 entwickeln.
Nun ist die Frage welcher externer Speicher sinnvoll ist.
Es soll später auch mal CLinux zum Einsatz kommen.

- Wieviel NOR Flash? Reichen 4MB
- Ist schnelles SRAM ausreichend oder sollte SDRAM zum Einsatz kommen?

Kann man beim LPC2478 den Code in ein ageschlossenes SDRAM kopieren und
ihn dann da drin ausführen? Ausführung im Flash ist denke ich mal zu 
langsam.

Über Info würde ich mich freuen.

Gruß Mario

von Robert T. (robertteufel)


Lesenswert?

Hallo Mario,

ich werds mal versuchen ein paar hoffentlich gute Ratschlaege zu geben.
Erst mal, der Speicherausbau ist ziemlich unabhaengig von der Tatsache, 
dass es sich um einen LPC2478 oder irgendeinen anderen 32-bit Micro 
handelt. Erforderlicher Speicher haengt von Deinem Anforderungsprofil 
ab.
Es gibt viele Steuer/Regelanwendungen, da ist die Kombination des 
internen Speichers voellig ausreichend. Jetzt bietet der Chip allerdings 
einige Schnittstellen wie USB und Ethernet, die wuerden bei regem 
Datenverkehr recht schnell den Rahmen sprengen, ueberwiegend auf Grund 
von erforderlichen Buffern. Du bringst den Vorschlag uCLinux mit in 
Spiel, jetzt zielst Du nochmals auf eine ganz andere Dimension.

Zu Deinen Fragen:
- Wieviel NOR Flash? Reichen 4MB
>> Fuer den Kernel von uCLinux, ja, aber es wird die Moeglichkeit verschiedene 
Treiber einzusetzen limitieren. Das wiederum ist meines Erachtens der einzig 
vernuenftige Grund irgendeine Art von Linux einzusetzen. Ansonsten wuerde ich eher 
ein kleines RTOS anpeilen.

- Ist schnelles SRAM ausreichend oder sollte SDRAM zum Einsatz kommen?
>> Schnelles SRAM ist schneller als SDRAM, wuerde also ausreichen, doch fuer Linux 
solltest Du schon ein paar MB spendieren und dann wird das ein echter 
Kostenfaktor. SDRAM ist im Vergleich VIEL billiger, braucht aber auch etwas mehr 
Software zur Initialisierung. Also mein Tip waere fuer uCL 16MB oder mehr SDRAM 
und aehnlich viel NOR Flash. Es geht natuerlich auch NAND Flash, wiederum viel 
guenstiger als NOR aber da wirds etwas mehr trickreich mit dem entsprechenden 
Treiber und Code kann nicht direkt aus NAND ausgefuehrt werden.

- Kann man beim LPC2478 den Code in ein ageschlossenes SDRAM kopieren 
und
ihn dann da drin ausführen? Ausführung im Flash ist denke ich mal zu
langsam.
>> Kopieren ins SDRAM und daraus ausfuehren ist die standard Vorgehensweisse. 
Ausfuehrung aus dem INTERNEN Flash ist schneller!! als aus externem Speicher, egal 
was fuer externer Speicher das ist. Ausfuehrung aus externem NOR ist deutlich 
langsamer als aus SRAM / SDRAM.

Schau Dir mal die Konfiguration von dem Embedded Artists Board an, die 
kann sowohl fuer Linux als auch fuer Steuerungsaufgaben verwendet 
werden.
http://www.embeddedartists.com/products/uclinux/oem_lpc2478.php
Das NAND Flash wird wie eine Festplatte benuetzt, hat eben der Vorteil, 
dass es sehr guenstig pro MB ist aber den Nachteil des gesteigerten 
Softwareaufwandes.

Falls genuegend Mittel das sind, wuerde ich mir so ein Board zulegen, 
selbst wenn ich mein eigenes bauen moechte. Als Referenz hervorragend 
geeignet!

Hoffe das hilft etwas weiter, Robert Teufel

Partner in Silicon Valley gesucht?
Ich stehe gerne zur Verfuegung.
-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-
Meine ARM/Cortex Webseite: http://www.lpc2000.com

von Mario (Gast)


Lesenswert?

Hallo Robert,

vorzugsweise wird das Board zuerstmal Steuerungsaugraben ohne uCLinux 
übernehmen. Das heist es soll ein kleines RTOS, Ethernet, USB Devivce, 
USB Host, zwei CAN Schnittstellen und ggf. auch noch eine SPS (CoDeSys) 
drauf laufen. Hilft das für konkretere Vorschläge?

von robertteufel (Gast)


Lesenswert?

Mario,

dafuer sollten Deine vorgeschlagenen 4MB Flash und sagen wir mal 512K 
SRAM ausreichen, mehr SRAM macht das Leben einfacher. Ich nehme mal an 
ein kleines RTOS ist so etwas wie z.B. embOS, RT-library oder uCOS-II. 
FreeRTOS hat schon etwas hoeheren Speicherbedarf aber definitiv noch in 
diesem Rahmen.

Die groesste Frage ist einfach wieviel Daten Du in einem Buffer brauchst 
um sie zwischenzuspeichern, manipulieren... Die Programmierung wird mit 
groesseren Buffern meist einfacher, das kann Zeit sparen, kostet aber 
etwas zusaetzliche Hardware. Fuer eine Anwendung wo die Hardware nur 
einmal, zehnmal oder auch hundert mal gebaut wird, wuerde ich alles 
moegliche tun um die Software zu vereinfachen, denn in der Software 
steckt das know-how und die Zeit, nicht in der Hardware. Sollte die 
Planung dahin gehen, dass mehrere tausend dieser Leiterplatten gebaut 
werden sollen, dann schlaegt so langsam aber sicher auch die Hardware 
als Kostenfaktor durch.

Der vielleicht wichtigste Rat ist, versuche das Programm im Linker so 
aufzuteilen, dass Regelalgorithmen, Interrupt Routinen und was immer 
sonst schnell sein soll im internen Flash landet und die zugehoerigen 
Variablen auch im internen SRAM. Dagegen kann alles was ein User 
Interface bedient, aber auch grosse Teile der CAN-, USB- und 
Ethernet-Treiber im externen Speicher liegen.

Handelt es sich hier um eine Entwicklung fuer eine Firma oder ein 
groesseres Hobbyprojekt? Einfach nur aus Interesse.

Nochmals der Vorschlag: leg Dir als Referenz ein EA board zu, falls das 
im Budget drin ist. Dann kann Software auf einer getesteten Hardware 
stattfinden. Es ist einfach schwierig beides, eine eigene Hardware und 
Software gleichzeitig zu debuggen.


Robert Teufel
Partner in Silicon Valley gesucht?
Ich stehe gerne zur Verfuegung.
-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-
Meine ARM/Cortex Webseite: http://www.lpc2000.com

von Mario (Gast)


Lesenswert?

Hallo Robert,

es geht eher in Richtung Firmenprojekt. Mein Problem ist, dass ich von 
der 16Bit Infineon Schiene komme und da ziemlich genau weis was man an 
Speicher braucht. Bei den ARM Controllern bin ich noch blutiger Anfänger 
und SDRAM gabs bei den Infineons auch nicht wirklich. Würdest du für das 
Board dann SDRAM vorsehen? Zum Beispiel um das Programm darin 
auszuführen?

Meine bisherige Überlegung wäre bis jetzt:
- bis 4MB NOR FLASH (ca. 70ns)
- bis 2MB SRAM (10ns) Batteriegepuffert
- 16Bit SDRAM (oder 32 Bit sinnvoller?)

von Gerhard. (Gast)


Lesenswert?

Hallo Mario,

habe bei unseren Firmenprojekt auch mit der EA 16-bit LPC2468 Platine 
angefangen und es hat mit der Entwicklung der Software und unser eigenen 
Schaltung spaeter nach EA Vorbild bestens geklappt. Die HW funktioniert 
100% zuverlaessig. Da hat Dir Robert bestimmt einen sehr guten Rat 
gegeben.

Spaeter sind wir auf den LPC2478 umgestiegen weil ein TFT 3.5" LCD damit 
betrieben werden sollte. Wiederrum hat alles gut geklappt. Das LCD hat 
ohne grosse Mucken umgehend funktioniert.

mfg,
Gerhard

von Robert T. (robertteufel)


Lesenswert?

Mario,
ich kenne die 16-bit von Infineon sehr gut. Der groesste Grund auf einen 
ARM umzusteigen ist die auf dem ARM vorhandene Peripherie. Solltest Du 
einen XC bei 40 MHz benutzt haben, dann ist bei externem 16-bit breitem 
Speicher auch bei 72 MHz keine Performancesteigerung zu erwarten!!
Also wenns auf Performance ankommt, bitte die Speicher 32-bit breit 
auslegen und ARM Mode benuetzen. Sollte es 16-bit breit sein, dann fuer 
die Programmteile im 16-bit breiten Speicher moeglichst Thumb mode 
benutzen, ist in diesem Fall schneller als ARM, da der Flaschenhals die 
Busbandbreite ist.
Grundsaetzlich sind fuer die Funktionen beim 166 und beim ARM7 aehnlich 
grosse Speicher notwendig, soweit der ARM Thumb und ARM mode beide 
ausgewogen benuetzt. Der 166 bietet allerdings weder USB noch Ethernet 
(noch LCD falls das von spaeterer Bedeutung ist). Die Stacks fuer USB 
und Ethernet koennen schon einiges mehr an Speicher abverlangen als ein 
CAN(Open) Stack.

Im Bezug aufs SDRAM, das wird in industriellen Anwendungen immer noch 
sehr ungern gesehen, SRAM bevorzugt. Fuer uCLinux ist dann allerdings 
sehr stark das SDRAM (bitte 32-bit breit) angesagt. Also wie waere es 
mit SDRAM als Bestueckungsoption. Vorsicht, keine langen Antennen 
einbauen fuer ein nicht-bestuecktes SDRAM.

Ich hoffe Du kommst jetzt weiter!

p.s. ich habe derzeit keinen Job und versuche mich mit Consulting ueber 
Wasser zu halten. Was ich hier mit Dir mache ist fast schon 
geschaeftsschaedigend :-)

Gruss, Robert

von Mario (Gast)


Lesenswert?

Naja, zwischem 40MHz zu 72MHz und 16Bit zu 32Bit sollte doch etwas 
Leistungssteigerung gegenüber dem XC Möglich sein, oder? Eigentlich 
würde ich ja gerne wegen der Leistung einen ARM9 nehmen, aber die 
wenigsten bzw. keiner bietet alle Features gleichzeitig (USB Host + 
Device, Ethernet, 2x CAN, Grafik).

von Mario (Gast)


Lesenswert?

Noch ne kleine Frage:

wie schnell kann der LPC2478 denn den Code in einem 32Bit breit 
angebundenem SDRAM ausführen?

von Robert T. (robertteufel)


Lesenswert?

Mario wrote:
> Naja, zwischem 40MHz zu 72MHz und 16Bit zu 32Bit sollte doch etwas
> Leistungssteigerung gegenüber dem XC Möglich sein, oder?
Von externem Speicher? Not really!

Eigentlich
> würde ich ja gerne wegen der Leistung einen ARM9 nehmen, aber die
> wenigsten bzw. keiner bietet alle Features gleichzeitig (USB Host +
> Device, Ethernet, 2x CAN, Grafik).

Mal bei den SAM926x oder LPC3250 nachschauen. Beide haben kein CAN aber 
sind deutlich schneller als der LPC2478.

Nur nebenbei, im sogenannten Echtzeitverhalten, also 
Interruptantwortzeit und so sind die XC sogar dem ARM9 ueberlegen!

Der Vorteil der ARM Bausteine liegt unter anderem in 2 ganz 
massgeblichen Bereichen:
1. Sehr guenstige Preise weil grosser Konkurrenzdruck
2. Das Softwareangebot von Drittanbietern oder auch Free Software ist 
kaum zu schlagen.

>Noch ne kleine Frage:

wie schnell kann der LPC2478 denn den Code in einem 32Bit breit
angebundenem SDRAM ausführen?

Nur mal so ueber den Daumen, ca. halb so schnell wie vom internen Flash 
oder SRAM. Aehnliches gilt fuer externes SRAM.

Wie schon gesagt, ich mache solche Beratungen auch, um etwas zum 
Lebensunterhalt dazu zu verdienen. Machbarkeitsstudien gehoeren dazu. 
Bei Interesse freue ich mich ueber jeden Auftrag ;-)

Robert Teufel
Partner in Silicon Valley gesucht?
Ich stehe gerne zur Verfuegung.
-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-
Meine ARM/Cortex Webseite: http://www.lpc2000.com
Anfragen an vorname punkt nachname -at- mcu-related.com

von Daniel (Gast)


Lesenswert?

Hallo,

noch ein kleiner Tipp, falls du SDRAM am LCP2478 betreiben willst:
verwende nach Möglichkeit kein SDRAM von Samsung, da kann es Probleme 
bei 72MHz geben. Deshalb ist in der neuen Version des EA-Board hier noch 
Kondensator an der CLK-Leitung angebracht.

Gruß

Daniel

von Mario (Gast)


Lesenswert?

Wenn ich die Ausagen so lesen, dann werde ich wohl doch auf den 
AT91SAM9260 zurückgreifen, denn Performance spielt auch eine Rollt. Muss 
dann halt noch irgendwie ein SJA1000 oder so ranbasteln.

von Robert T. (robertteufel)


Lesenswert?

Mario,

SAM926x ist definitiv schneller aber dann solltest Du evtl. gleich mit 
uCLinux anfangen. Das Problem bei den ARM926 basierenden Bausteinen ist 
MMU und Cache Verwaltung. Ohne Betriebssystem, das diese Verwaltung 
macht ein Albtraum!

Viel Erfolg, Robert

von Mario (Gast)


Lesenswert?

Kann mann die MMU nicht einfach abschalten oder umgehen?
Linux ist eigentlich im ersten Step nicht geplant.

von Robert T. (robertteufel)


Lesenswert?

Zumindest solltest Du den Cache sinnvoll initialisieren, sonst bringt 
der ARM9 nicht sehr viel. Die Geschwindigkeit ist nur aus Cache machbar.

Meine MMU Schulung ist schon ne Weile her und ich weiss es nicht mehr 
sicher. Kann mich nur noch daran erinnern, dass die Sache bei Benutzung 
ziemlich aufwendig war.

Robert

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.