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
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
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?
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
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?)
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
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
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).
Noch ne kleine Frage: wie schnell kann der LPC2478 denn den Code in einem 32Bit breit angebundenem SDRAM ausführen?
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
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
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.
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
Kann mann die MMU nicht einfach abschalten oder umgehen? Linux ist eigentlich im ersten Step nicht geplant.
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.