Hallo,
Frage an die Studenten (auch ehemalige), die im Studium mit Arm
Mikrocontroller zutun haben/hatten. Mit welcher Lektüre lernt Ihr,
welche Bücher, welche Controller?
Dann, na ja, eine Frage, die natürlich von vielen Faktoren abhängig ist,
aber ich stelle sie mal trotzdem. Wie lange braucht es ungefähr, bis man
da so durchblickt und Programme, mit einigermaßen Anspruch schreiben
kann?
Hintergrund der Fragerei, ich habe bisher mit AVR alles erschlagen
bekommen, was so anfällt. Jetzt starten wir ein neues Projekt mit
Grafik-Display (eigentlich nur Text mit ein paar Symbolen), Bluetooth,
Audioausgabe, Infrarot, Funk. Diese Peripherie wird aber nie
gleichzeitig benutzt.
Tja, mit welchem µC komme ich am schnellsten ans Ziel?
Dicker AVR
Xmega
Arm7
Meine Kenntnisse beschränken sich im Moment auf AVR, C-Grundkenntnisse.
Danke schon mal!
Gästchen schrieb:> Frage an die Studenten (auch ehemalige), die im Studium mit Arm> Mikrocontroller zutun haben/hatten. Mit welcher Lektüre lernt Ihr,> welche Bücher, welche Controller?> Dann, na ja, eine Frage, die natürlich von vielen Faktoren abhängig ist,> aber ich stelle sie mal trotzdem. Wie lange braucht es ungefähr, bis man> da so durchblickt und Programme, mit einigermaßen Anspruch schreiben> kann?
Du wirst Deinen ARM in C programmieren. Deine Frage zerfällt also in
zwei Teile:
a) wie lange brauchst Du, bis Du vernünftig C kannst
b) wie lange brauchst Du, bis Du einen beliebigen Controller verstanden
hast.
c) wie lange brauchst Du, um eine neue Entwicklungsumgebung zu verstehen
(a) kann ich nicht beantworten.
(b) liegt irgendwo im Bereich von n Wochen
(c) liegt meist irgendwo im Bereich von n Tagen
> Tja, mit welchem µC komme ich am schnellsten ans Ziel?> Dicker AVR> Xmega> Arm7
Vordergründig mit dem, mit dem Du Dich am besten auskennst und der die
geforderte Leistung ohne große Bastelei liefert.
Eigentlich ist der CPU-Kern eher unwichtig. Auf die Peripherie kommt es
an, die macht nachher den Unterschied.
Und: Arm7 solltest Du nicht mehr nehmen. Der Cortex M3 ist schneller und
einfacher zu handhaben. Beim Arm7 brauchst Du immer noch zwingend
Assemblercode für Interrupt- und Startup-Routinen, beim Cortex nicht
mehr.
fchk
Du hast also deinen AVR mit c programmiert. Meiner Meinung nach solltest
du mit nem Arm dann auch keine zu Probleme bekommen.
Die Cortex M3 Dinger kenn ich jetzt nicht, aber den ASM Startup code
kannste dir recht problemlos aus zigtausend Beispielen im Internet
"klauen". Ich persönlich programmier halt mir Arm7s (genauer die LPC
Teile von NXP) und bin extrem zufrieden mit denen. Aber wahrscheinlich
ist das im Endeffekt Geschmackssache.
Ich würde auf jeden Fall drauf achten, dass du dir nicht schon am Anfang
nen Flaschenhals strickst. Also nen zu "kleinen" µC für dein Projekt
nimmst. Im Nachhinein ändern ist immer ziemlich doof...
Schnapp dir nen STM32.
Software gibtz von Keil uVision (verwende ich privat), als günstigeren
Debugger empfehle ich den JLink Edu für ca. 60,- von Segger, der läuft
in vielen IDEs (u.a. Keil uVision, IAR, auch gdb).
Demoversion von uVision sind für Cortex-M3 derivate dutzende Beispiele
dabei, läuft bis 32k Codesize, RTX RTOS ist ebenfalls mit drin.
Evaluation Boards gibtz auf keil.com zu kaufen, optional kann ein
ULINK-ME mitbestellt werden, der ist dann etwas günstiger.
Simulation Support mit Peripherals für u.a. STM32 (PLL, Timer, UART,
...).
Demoversion von IAR geht glaub ich auch bis 32k Code, Examples ebenfalls
dutzende dabei. Weiteres auf iar.com
Raisonance z.B. arbeitet intern mit gnu, verwendet aber einen eigenen
Debugger (bekannt von den Hitex-Sticks).
Gibt auch freie IDEs, welche debugger die unterstützen, weiss ich nicht.
Daher empfehle ich generell den JLink (für gnu mit gdb support), wenn
man sich zu Beginn nicht auf eine IDE festlegen möchte.
Achtung, meine Meinung:
Für mich war uVision tatsächlich die einzige out-of-the-box IDE, mit der
ich problemlos starten konnte (Beispiele, intuitive Bedienung, vom
Karton zum Blinky-compile/download in <5 minuten). Und ich habe von
gcc/makefiles angefangen doch schon ein paar Sachen durch im Bereich
AVR, M16C, ARM7/Cortex-M3.
> Meine Kenntnisse beschränken sich im Moment auf AVR, C-Grundkenntnisse.
Meine Diplomarbeit war 2k6 der Umstieg von AVR auf Cortex-M3 am Beispiel
Mega32 --> LM3S828. Hat man sich erst mal an die PLL und das Clock
Gating gewöhnt, programmiert sich der Cortex-M3 wie ein AVR :-)
Aus / seit dieser Zeit kenne ich auch das uVision.
VG,
/th.
Ich stimme bei der Wahl der Toolchain (Keil) und dem Core (CM3) zu.
Allerdings wird Gästchen mit dem LCP17xx mehr Freude haben als mit dem
STM32, da er schon LPC2000-Erfahrung hat.
Danke für die Tipps.
Matthias schrieb:> Freude haben als mit dem> STM32, da er schon LPC2000-Erfahrung hat.
Matthias, ich glaube du verwechselst mich, ich bin ein "neues" Gästchen
:-)
Ja, Tipps in Punkto µC-, und IDE-Wahl habe ich schonmal, aber mit was
habt Ihr angefangen zu lernen, Welche Bücher habt ihr gewälzt?
Die Basics, wo habt Ihr die her? Wo steht z.B. genau und ausführlich
beschrieben, was ein DMA-Controller ist, oder was man mit den Bootloader
alles machen kann, oder warum und wie man Codeteile remapt? So Sachen
habt ihr doch irgendwie, irgendwo gelernt? Datenblätter, klar, aber da
steht es halt ziehmlich komprimiert und nicht so gut verständlich. Und
da ist alles so verteilt, da gibt es keinen "roten Faden".
Wenn Ihr mir da noch Tipps geben könntet...
Moin,
Der "Insider's Guide to STM32" von Hitex ist - finde ich zumindest -
ganz nett: http://www.st.com/mcu/files/mcu/1221142709.pdf
MfG, Heiko
...der erstmal wieder Platinen ätzen muss, um das theoretische Wissen
auch praktisch auszuprobieren...
> aber mit was habt Ihr angefangen zu lernen, Welche Bücher habt ihr gewälzt?
Wenn du dich mit AVRs auskennst, und Datenblätter lesen kannst, brauchst
du keine Bücher zu wälzen im Falle von uVision und Cortex-M3, sondern
dir nur die mitgelieferten Beispiele anzusehen.
Alles, was du dann noch extra wissen musst ist:
- PLL config (oder nimm CMSIS: SystemInit() )
- bevor eine Peripherie (z.B. GPIO) verwendet werden kann, muss erst die
Clock dafür eingeschaltet werden,
- wenn Alternate Function verwendet wird (z.B. UART) muss die
entsprechende Clock Line für das verwendete GPIO (wo der UART Pin dran
hängt), die Alternate Function Clock und der UART Clock eingeschaltet
werden, bevor man was machen kann.
Danach gehts im Datenblatt im entsprechenden Peripheral Kapitel weiter.
Ansonsten verweise ich mal auf meinen Beitrag:
Beitrag "Re: STM32 alias cortex m3 brauchbar?"
VG,
/th.
Ok, Datenblätter, die Sachen von Hitex, das habe mir schon mal
angesehen. Einen schönen roten Faden finde ich da nicht so. Ich schau
mir das aber noch mal an.
Bisher hat niemand Bücher erwähnt! Habt ihr im Studium keine Bücher?
Servus,
wenn Englisch kein Thema ist: The Definitive Guide to the ARM Cortex M3
von Yui. Kostenpunkt ca. 40 €. Ich hab mir das für meine Masterarbeit
besorgt, das Buch hat mir gut gefallen.
Markus Müller schrieb:> Ich nutze das Große Buch Internet.
Haste's schon durch und alles kapiert? ;-)
@Tom
Ja, sowas meinte ich!
Tom schrieb:> Bei manchen Themen ist es für Anfänger einfach zu knapp gehalten.
Eben...!