Hallo alle zusammen.
Ich möchte mich in ARM einarbeiten und habe entdeckt das ARM7 mit
Thumbmode nicht kompatibel zu dem Thumbmode2 vom Cortex M3 ist. Soll ich
lieber gleich mit einem Cortex M3 arbeiten?
Gruß
Student
Also ich kannte bis jetzt aktiv nur AT89* und XC167* und bin jetzt durch
eine Arbeit an der Uni auf den Cortex M3 gekommen. Im Konkreten den
STM32F103xxx. Also ich muss sagen, mir gefällt das Ding. Geht bei uns v.
a. um die Stromspareigenschaften und günstige Toolchain.
mfg
Die meisten werden dir sagen, dass der ARM7 veraltet ist, dem stimme ich
nicht zu. Der Cortex M3 ist moderner und gleichzeitig der einzig
inkompatible Core von ARM. Was ic hdamit sagen moechte ist, dass alle
anderen Cores den ARM Mode, den Thumb Mode und alle Cortex den Thumb2
mode unterstuetzen. Durch die Inkompatibilitaet lassen sich ARM7
Programme nicht so ganz ohne weiteres auf den Cortex transferieren
"einfach neu kompilieren" hoer ich dann immer, reicht nicht so ganz aber
lassen wir das mal.
Mit ARM7 core gibt es schaetzungsweisse 10-20 mal mehr Auswahl als mit
dem M3. Jetzt hoer ich auf mit der Argumentation fuer den ARM7.
Der Cortex-M3 ist einfacher zu handhaben, besser zu debuggen, mehr
echtzeitfaehig, bringt eine bessere Leistung / MHz und ist mehr
standardisiert, was zukuenftiger Wiederverwendung von Code sehr entgegen
kommt. Konzipiert war der M3 zwar urspruenglich als 8-bit Aufsteiger und
sollte unterhalb des ARM7 angesiedelt sein. Das hat sich geaendert, er
ist gleich oder leicht oberhalb des ARM7 in Performance.
Also wenn es darum geht fuer Dich selbst einzusteigen, nimm ein M3
basierendes Device. Wenn es um eine Firmenentscheidung geht, dann soll
evtl. auch Atmel oder NXP genommen werden und da kommen die M3 Derivate
erst in kuerze auf den Markt. Ansonsten Luminary oder ST haben ne Menge
Teile verfuegbar und weitere folgen bald.
Robert Teufel
Sucht Ihre Firma einen Partner in Silicon Valley?
Ich stehe gerne zur Verfuegung.
-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-
Meine ARM/Cortex Webseite: www.lpc2000.com
>Soll ich lieber gleich mit einem Cortex M3 arbeiten?
Wenn Du nicht aus irgendwelchen (dienstlichen?) Gründen gezwungen bist,
später den ARM7 einzusetzen, dann ist der M3 klar die erste Wahl. In 1-2
Jahren wird der der Standard-32Bit Controller von ARM sein.
Zum Einstieg wirst Du es auch viel einfacher mit dem M3 haben. Der ist
halt aktuell und als Nachfolger vom ARM7 konsequenter für den
Mikrocontroller-Markt entwickelt. Der ARM7 ist halt eine CPU, die als MC
eingesetzt wird. Daher kommen auch solche Altlasten wie der nicht
integrierte Interrupt Controller - Stichwort spurious interrupts sowie
lange, nicht deterministische Latenz -, zwei Befehlssätze, bitbanding -
also unter anderem atomare Port- sowie Registerzugriffe -, nicht alignte
Speicherzugriffe - spart Speicher -.
Von Vorteil ist sicherlich auch, daß ARM jetzt mit CMSIS einen
Softwarestandard setzt, der einen schnellen Wechsel der Derivate oder
Tools ermöglicht, ohne nervende Anpassungen der Software vornehmen zu
müssen.
Nicht zu vergessen auch die umfangreichen Peripherie-Libraries der
Hersteller wie Luminary oder ST, die einen Einstieg ohne großes Lesen
der Datenblätter ermöglichen.
Ich sach mal auch, eindeutig Cortex M3.
Diese unsäglichen Set- und Clear-Register des LPC, damit man von hinten
durch die Brust ins Auge Bits atomar zugreifen kann, gehen mir sowas auf
den Senkel.
Man merkt dem ARM7 an, daß er ursprünglich nicht als MC konzipiert war
und dann mit der heißen Nadel umgestrickt wurde.
Peter
>...In 1-2 Jahren wird der der Standard-32Bit Controller von ARM sein.
Totgesagte leben länger, siehe 8051. Der ARM7 wird sich noch sehr lange
am Markt halten.
Hi,
Ich würde dir als Cortex-M3 den STM32 empfehlen, der lässt sich wirklich
"schön" programmieren.
Soll es ein ARM7 sein, so habe ich gute Erfahrungen (war mein
ARM-Einsteiger-Controller) mit dem LPC2148 gemacht.
Als Toolchain empfehle ich Keil uVision, auch bei der Demo sind
sämtliche Examples dabei, und das Codelimit reicht sehr lange aus.
Die GNU Tools sind kostenlos, allerdings braucht man da etwas mehr
Erfahrung.
Für den Cortex-M3 empfehle ich weiterhin die CMSIS, sie bietet neben
einem simplen Register-Programmiermodell einige Helferlein (Funktionen)
u.a. zum NVIC sowie (z.Zt.) ein Setup des Clockings vom STM32.
VG,
/th.
Naja:
>Als Toolchain empfehle ich Keil uVision, auch bei der Demo sind>sämtliche Examples dabei, und das Codelimit reicht sehr lange aus.
Das Limit sind 32 KiB für Code+Daten. Für einen 256KB Chip und erst
recht einen 32Bitter ist das eine Grenze, die schnell erreicht ist.
Sicherlich vergleichbar mit den 16KiB eines Mega16.
Also ein Display dran, ein bißchen Grafik, schon muss man externen Flash
anstricken, um weitermachen zu können...
Ob sich dann der Einarbeitungsaufwand dafür lohnt, wenn man eh im Voraus
weiß, daß man das Geld nicht für die Vollversion ausgeben wird...
Ich denke, daß sich so eine Eval-Version nur lohnt, wenn man wirklich
irgendeine Vollversion hinterher kaufen will.
Andreas wrote:
> Naja:>>Als Toolchain empfehle ich Keil uVision, auch bei der Demo sind>>sämtliche Examples dabei, und das Codelimit reicht sehr lange aus.>>> Das Limit sind 32 KiB für Code+Daten. Für einen 256KB Chip und erst> recht einen 32Bitter ist das eine Grenze, die schnell erreicht ist.> Sicherlich vergleichbar mit den 16KiB eines Mega16.> Also ein Display dran, ein bißchen Grafik, schon muss man externen Flash> anstricken, um weitermachen zu können...
Na, da würde ich mal wiedersprechen. Es muss schon so einiges
zusammenkommen, um an 32k (20k+12k glaub ich) ranzukommen. Jeder ARM
rechnet zwar intern mit 32Bit, die (meisten) Thumb(2)-Befehle benötigen
aber nur 16Bit im Programmspeicher.
> Ob sich dann der Einarbeitungsaufwand dafür lohnt,
Genau das gefällt mir daran, dass der Aufwand fast =NULL ist. Als ich
vor ca: 2,5J mit dem LPC anfing, kannte ich nur den AVR, CodeVision bzw.
WinAVR.
Ich hab das uVision Handbuch nie gelesen (doch, aber erst 2J später
**smile**).
> wenn man eh im Voraus> weiß, daß man das Geld nicht für die Vollversion ausgeben wird...> Ich denke, daß sich so eine Eval-Version nur lohnt, wenn man wirklich> irgendeine Vollversion hinterher kaufen will.
Sie lohnt sich für den Einstieg, da man "fertig gekochtes" vorgesetzt
bekommt, was auch wirklich (anpassungslos oder mit geringem Aufwand für
eigene Entwicklungen) läuft. Mit gcc habe ich da andere Erfahrungen
gemacht, als ich etwas einfaches für den STM32 suchte... (keine DL!).
Ich fand das zumindest damals sehr hilfreich :-)
VG,
/th.
Danke erstmal.
Ihr habt mir echt weiter geholfen!
Also ich werd mich jetzt auf den Cortex M3 stürtzen.
Eine Frage zu den Toolchains und J-Tag:
Toolchain:
- GNU
- µVision
- CrossWorks (www.rowley.co.uk)
J-Tag:
- ARM-USB-OCD
Wenn ich später in der Industrie (produktiv) arbeiten möchte, was würdet
ihr vorschlagen? GNU oder propritäres. Was haltet ihr von CrossWorks?
Ich find es klasse das es auch unter Linux läuft.
Student wrote:
> Wenn ich später in der Industrie (produktiv) arbeiten möchte, was würdet> ihr vorschlagen? GNU oder propritäres.
Ich sage das nicht leichten Herzens, aber kommerzielle tools sind in so
einem Fall durchaus zu bevorzugen. Vor allem zum Debugging, Simulieren,
etc. Denk an einen JTAG Adapter, der (bzw. dessen Treiber) alle
gewünschten Funktionen Deines Systems unterstützt.
Der Compiler/Linker ist eher zweitrangig. Aber da Du eh schon für die
toolchain bezahlt hast...
Gruß
Marcus
http://www.doulos.com/arm/