Gibt es ein gutes Development Board mit einem ARM, das folgende Bedingungen unterstützt: - Uhr, so dass ich immer die Uhrzeit weiß - Ethernet - in der Leistung vergleichbar mit einem P2 233Mhz - viel Ram (ich weiß nicht, wie viel RAM die ARMs haben, bis jetzt habe ich nur AVRs programmiert, aber 1MB wäre wirklich gut, da ich mit dem Board einen PC ersetzen möchte) Auch nützlich wären ein paar Ports (und SPI), damit ich Festplatten und CF-Karten (und über den SPI vielleicht auch MMC-Karten) ansprechen könnte. (Status LEDs, bzw. Taster) ((Ein I²C interface wäre auch nett)) Die eingeklammerten Bedingungen sind nicht so wichtig. Ich würde es schon sehr gut finden, wenn ihr mir zu den ersten 4 Punkten eine Richtung geben könntet, in die ich suchen muss.
Ich habe ganz vergessen, dass ich auch gerne in C und nicht nur in ASM programmieren möchte. Eine Entwicklungsumgebung und ein Programmierkabel wären also auch erforderlich.
Bevor ich das selber baue teste ich lieber noch etwas mit den AVRs. Die sind günstiger, falls ich mich verlöte.
@Freak5 Klingt nach nem PDA! Ist ein StrongARM drinne der vergleichbar/mehr Leistung hat als ein PII. Hat USB, MMC, ne Uhr auch, ein geiles 320x240 Display und programmieren kannst Du es sogar in C++. Gibt es gebraucht bei Ebay recht günstig. Der Toshiba E740 hat sogar einen USB-Host onboard, ich hab daran mein USB-Stick als Speicher angeschlossen, naja und VGA hat er auch.
Das klingt eigentlich gut. Die Option, dass man das später, wenn man sich mit den Möglichkeiten vertraut gemacht hat, vielleicht selber zusammenlöten kann, fände ich aber bei einem Board besser. Ist der Befehlssatz von diesen StrongARMs und den normalen ARMs eigentlich gleich?
??? Du kaufst Dir ein Auto und wenn Du damit fahren kannst, dann baust Dir ein eigenes? Die Applikation die Du vorhast, ist nur sehr aufwändig mit nem nackigen "ARM-Board" zu realisieren. Dü müsstest die Treiber für Deine Extensions erst schreiben. Also nimm einen fertigen PDA wie den E740 und zapf die Schnittstellen für Deine Zwecke an. Er hat wie gesagt VGA, MMC, CF-Card, USB-Host und seriell. Was willst Du mehr? Und ein eigenes OS dazu. Es gibt imho sogar eine Linuxversion. Der Befehlssatz muß Dich nicht interessieren, dass macht das Betriebssystem. Ich denke, so solltest Dich mal grundlegend mit den ARMs beschäfftigen. Der Aufwand den Du betreiben musst, ist deutlich höher als beim Atmel Mega und die Infos/NGs deutlich dünner gesät. Ein Buch wäre http://www.terrashop.de/77234017/artikel.php ein Anfang.
StrongARM ist ARMv4 (ohne Thumb), d.h. der Befehlssatz ist identisch z.B. mit ARM7TDMI, ARM720t, ARM920t, allerdings nur der ARM (32-bit) Befehlssatz, nicht die Thumb (16-bit) Befehle. Moderne PDAs haben allerdings meistens Intel XScale Prozessoren, z.B. PXA255, PXA27x. XScale implementiert die ARMv5TE Architektur, die alle ARMv4 Befehle + Thumb und DSP Erweiterungen enthält. Ein anderer ARM Core mit ARMv5TE Architektur wäre z.B. der ARM926EJ-S (der hat allerdings zusätzlich Jazelle (JAVA)). Die DSP Erweiterungen sind wohl für Multimedia Anwendungen ganz nützlich, ansonsten dürften die Unterschiede kaum auffallen. StrongARM hat gegenüber XScale oder ARM7/9 den Nachteil, dass der Core keinen Debug-Support bietet. Wenn Linux o.Ä. erstmal auf dem Target läuft, ist das kein Problem, aber für Low-Level Entwicklung sind die Debug Features von ARM7/9 bzw. XScale sehr nützlich. Zu deinen anderen Anforderungen: Ein 233 MHz P2 leistet schon eine ganze Menge - mehrere execution engines, 14-stufige Pipeline, superskalar, out-of-order execution. Ein ARM9 müsste wohl mindestens mit 2-3x der Frequenz laufen, um eine vergleichbare Leistung zu liefern. Ein XScale mit 400 oder 600 MHz dürfte wohl ähnlich oder besser sein. "Viel Ram" - 1MB klingt nach sehr wenig, und wird kaum zu bekommen sein, zumindest nicht mit einem so schnellen Prozessor. 1GB ist für ein Embedded System dagegen schon recht viel - das wird dann wohl sehr teuer. Gruesse, Dominic
Ich kenne mich mit den ARMs noch nicht aus. Die Aufgabe ist eine Serveranwendung und ein paar andere Netzwerkaufgaben. Ich schätze, dass man den RAM-Bedarf auf 100kB drücken könnte, aber 1MB würde das programmieren erleichtern. Der PII hat 32 Ram, aber davon sind durch Windows schon viele Ressourcen verbraucht. Ich dachte immer, dass die ARMS auch mit einem oder wenigstens wenigen Takten pro Befehl arbeiten können. Ein Pentium braucht hingegen viel mehr. Ich dachte auch, dass es eine Menge von Arms gibt, die 200Mhz Takt haben und vergleichbar viele oder mehr Befehle als ein PII abarbeiten können, da sie weniger Takte pro Befehl benötigen und da man sie, wie AVRs leichter ohne Betriebssystem programmieren kann. Es soll zwar ein PII mit 233Mhz Takt ersetzt werden, aber die Leistung dieses PCs wäre auch mit 100Mhz noch gut genug gewesen. Da ich aber noch keine Erfahrung mit ARMs habe, kann mehr Leistung aber nicht schaden, so dass ich erst etwas herumspielen kann, bevor ich viele Optimierungen in den Code einbaue. Ich will aber kein Betriebssystem haben. Deshalb finde ich die PDA-Lösung schlecht. >??? >Du kaufst Dir ein Auto und wenn Du damit fahren kannst, >dann baust Dir ein eigenes? Genau. Denn wenn ich mir ein eigenes baue und es dann nicht funktioniert, kann ich einen Fahrfehler ausschließen. Das wäre ohne Erfahrung nicht der Fall. Ich kann den funktionierenden Code dann einfach portieren. Das was ich machen will könnte man theoretisch auch mit 4 einzelnen AVRs des Typs 128 realisieren. Ich möchte es aber gerne verbinden und die Lösung soll nicht so langsam werden wie ein AVR 128. @Dominic: Wieso sollte ich 1GB Speicher haben wollen? So viel Speicher brauche ich für die Anwendung noch nicht einmal als Festplattenspeicherplatz(16MB sollten da schon reichen). Als AVR ausgedrückt wären die Mindesanforderungen bei 200kB SRam und 60Mhz. Schneller ist natürlich immer besser. Besonders mehr SRam kann nie schaden.
DSP-Erweiterungen fände ich auch nicht schlecht. Die würden zwar nicht zum Lösen meines Problemes beitragen, aber dafür könnte ich das Board dann auch für andere Probleme benutzen.
http://www.atmel.com/dyn/resources/prod_documents/1768s.pdf Das wäre zum Beispiel ein Chip, der scheinbar alles unterstützt. Man müsste nur 1MB externen SRam hinzufügen und eine Uhr mit einbauen. Er kann sogar Compact Flash lesen, wobei ich noch nicht weiß, ob er das gleichzeitig zur SRAM-Unterstützung unterstützt und ob er Flash-Karten mit mehr als 64MB liest. Der Chip hat übrigens 200MIPS bei 180Mhz (Kann der mehrere Befehle pro Takt?)
Bereits der Pentium1 braucht für viele Befehle nur 1 Takt und macht im Idealfall zwei Befehle pro Takt. Deswegen findet man dann so optimistische Angaben wie 200MIPS bei 133MHz. Zum Selberbauen: Kannst Du ein Design für eine 100 oder gar 200MHz-CPU mit externem Speicher machen? Hast Du Dir mal die ARM7 angeschaut? Der LPC2148 hat 512KB Flash und 32KB RAM und läuft mit 60MHz. Die Boards sind relativ günstig (<<100 Euro) und als C-Compiler gibts den GCC.
Nachdem ich etwas mit einem Developmentboard experimentiert habe, würde ich mir durchaus zutrauen ein Design mit externem Speicher zu entwerfen. Den Speicherzugriff kann man ja einfach auf <20Mhz drosseln ;-). 32Kb Ram sind aber etwas wenig finde ich. Also 100Kbyte möchte ich schon haben.
http://www.atmel.com/dyn/resources/prod_documents/doc6103.pdf Wenn dieses Board einen ARM mit mehr als 50Mhz hat, fehlt ihm nur noch die Uhr(die könnte man ja auch nachträglich hinzufügen) P.S.: Diese Antwort ist zwischendurch in ein falsches Fenster geraten...
olimex arm7/9 boards die das könnten was du da oben beschrieben hast: http://www.olimex.com/dev/lpc-h2888.html http://www.olimex.com/dev/lpc-e2214.html http://www.olimex.com/dev/lpc-e2294.html http://www.olimex.com/dev/oki-h5003.html+http://www.olimex.com/dev/oki-e5003.html http://www.olimex.com/dev/cs-e9301.html http://www.olimex.com/dev/cs-e9315.html http://www.olimex.com/dev/sam7-ea2.html von denen sind einige boards noch nicht verfügbar !!! ulrich radig hat übrigends auch schon sowas ähnliches auf die beine gestellt mit linux port !!! ;) 73
Der ARM führt oft einen Befehl pro Takt aus, allerdings nur wenn der Speicher mitkommt, wenn die Datenpfade frei sind, und wenn die Instruktion nicht zu komplex ist. Multiplikationen können z.B. bis zu 5 Takte benötigen. Ab 60 MHz benötigt der Prozessor ausserdem entweder SRAM oder irgend eine Form von schnellem "Zwischenspeicher" - L1 Cache bei vielen "grossen" ARMs, oder z.B. ein "Memory Accelerator Module" wie die LPC2000, das mehrere Datenworte vom 128-bit breiten Flash puffert. Der PII braucht zwar bei einigen Befehlen auch mehr als einen Takt, führt aber mehrere Befehle gleichzeitig aus. Ausserdem muss er nicht unbedingt darauf warten, dass Daten aus dem Hauptspeicher oder L2 Cache nachgeladen werden - er führt einfach andere, von den Daten nicht abhängige Befehle aus (out-of-order execution). Die IA32 ISA (instruction set architecture) ist ausserdem ein CISC Befehlssatz - ein einzelner Befehl eines PII kann mehrere ARM Befehle ersetzen. Ausserdem unterstützt der PII DMA, d.h. z.B. dass Daten vom Netzwerk-Interface oder der Festplatte ohne die CPU in den Speicher kopiert werden. @Freak5: Auf 1GB Speicher kam ich, nachdem du von "Leistung wie ein PII" und "Viel Speicher" geschrieben hattest. Ein ARM7 (z.B. LPC2000 oder AT91SAM7) dürfte kaum deinen Anforderungen entsprechen. Für 1MB SRAM brauchst du ein externes Speicherinterface, ebenso für Ethernet, sofern das nicht schon auf dem Chip ist (AT91SAM7X). Der LPC2148 z.B. hat kein externes Speicherinterface und keinen eingebauten Ethernet-Controller, und fällt damit wohl aus. Der AT91RM9200 den Markus empfohlen hat ist schon eine ganze Ecke Leistungsfähiger, hat ein SDRAM Interface, eingebauten Ethernet Controller, SPI, externes SRAM Interface, und noch einiges mehr. Er läuft mit bis zu 180 MHz, wobei es mir ein Rätsel ist, woher die 200 MIPS kommen - er führt maximal einen Befehl pro Takt aus. Aber auch ein solcher ARM9 wäre immer noch deutlich langsamer als ein PII. Welchen Einfluss Windows auf die Performance hat will ich nicht beurteilen, aber auch auf dem AT91RM9200 wirst du kaum ohne ein (kleines) (RT)OS auskommen. Die Resourcen, die Windows benötigt, werden ja durchaus auch genutzt - z.B. Netzwerk-Kommunikation, Festplatten Zugriffe, IPC, etc. Wie sieht der Netzwerk-Traffic denn in etwa aus? Und wie aufwendig sind die Server-Dienste? Gruesse, Dominic
Einige Aufgaben (mit denen ich schon zufrieden wäre) wurden schon auf einem ATmega32 realisiert. Ich möchte nur viel schnellere Antwortzeiten realisieren und ein schlampigeres Programmieren in C. Wenn das funktioniert möchte ich das einfach immer stärker erweitern. Abhängig davon, wie ich das erweitere und programmiere sind die Grenzen zwischen viel zu viel Leistung und gerade noch ausreichend ziemlich fließend. Das OS möchte ich mir gerne selber schreiben. (Hätte ich für den PII auch getan, wenn ich die richtigen Compiler usw. schon gefunden hätte) Mehr möchte ich zum Programmieren eigentlich nicht sagen, da ich mir das als eigene Leistung bewerten lassen möchte. Der Netzwerktraffik wird im Mittel relativ gering sein. Wenn man mit dem T91RM9200 auf eine Festplatte zugreifen möchte, könnte er das (im gegensatz zu Compact Flash zugriffen) nicht duch eine spezielle Hardware, oder? Das müsste ich dann in Software realisieren?
http://www.ulrichradig.de/site/arm_projekts/webbox/index.htm Sowas ähnliches wird es dann später werden. Aber ich habe noch ein paar Ideen, wie ich das erweitere usw.
Oder gibt es vielleicht Adapterboards, die die wichtigen, geschwindigkeitsrelevanten Elemente onboard haben? Also mit Speicher und quarz, so dass man dieses Board überall einstecken kann?
Ich würde den Aufwand, den es bedeutet, das nötige OS zu schreiben, nicht unterschätzen. Der "richtige" Compiler für den PII wäre der GCC - damit wird Linux, xBSD, Minix etc. ebenfalls übersetzt. Das Problem ist wohl eher, die Dokumentation für die einzelnen Chips zu bekommen - hier könnten die Linux Treiber als Anschauungsmaterial dienen. Es gibt einige AT91RM9200 Boards, die mit Speicher etc. bestückt sind. Einige Beispiele wären http://kwikbyte.com/, http://www.mechatronicbrick.dk/, http://www.easytoweb.net/ oder http://cogcomp.com/csb_csb637.htm "Netzwerktraffik wird im Mittel relativ gering sein" - ist leider relativ ungenau ;) Wenn das ganze hin und wieder ne Webseite ausliefern soll oder nen Telnetserver zur Verfügung stellt, reicht auch ein kleiner ARM7 + externem Ethernet Controller. Der AT91RM9200 hat den Ethernet Controller eingebaut und bietet DMA, damit können bereits viel grössere Datenmengen übertragen werden. Als Fileserver oder Router wäre aber auch der AT91RM9200 bald überfordert, da wäre dann ein XScale IXP basiertes System besser. Es gibt eine AppNote von Atmel die erklärt, wie sich eine Festplatte an den AT91RM9200 anschliessen lässt, unter Verwendung der meisten CF Signale (http://www.atmel.com/dyn/products/app_notes.asp?family_id=605). Die AppNote verwendet allerdings kein DMA, und ich weiss auch nicht, ob das mit dem AT91RM9200 möglich wäre. Die Performance is damit auf jeden Fall deutlich niedriger als bei deinem PII - ob das reicht hängt davon ab, was du mit der HDD machen willst. Gruesse, Dominic
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.