Forum: Mikrocontroller und Digitale Elektronik ARM Development Board


von Freak5 (Gast)


Lesenswert?

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.

von Freak5 (Gast)


Lesenswert?

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.

von chef (Gast)


Lesenswert?

olimex.com schon gesucht?
sonst selber bauen?

von Freak5 (Gast)


Lesenswert?

Bevor ich das selber baue teste ich lieber noch etwas mit den AVRs. Die
sind günstiger, falls ich mich verlöte.

von Mike (Gast)


Lesenswert?

@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.

von Freak5 (Gast)


Lesenswert?

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?

von Mike (Gast)


Lesenswert?

???
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.

von Dominic R. (dominic)


Lesenswert?

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

von Freak5 (Gast)


Lesenswert?

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.

von Freak5 (Gast)


Lesenswert?

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.

von Freak5 (Gast)


Lesenswert?

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?)

von Markus (Gast)


Lesenswert?

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.

von Freak5 (Gast)


Lesenswert?

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.

von Freak5 (Gast)


Lesenswert?

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...

von Hans (Gast)


Lesenswert?

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

von Dominic R. (dominic)


Lesenswert?

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

von Freak5 (Gast)


Lesenswert?

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?

von Freak5 (Gast)


Lesenswert?

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.

von Freak5 (Gast)


Lesenswert?

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?

von Marco S. (masterof)


Lesenswert?

abo

von Dominic R. (dominic)


Lesenswert?

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
Noch kein Account? Hier anmelden.