Gute Zeit umzuziehen; die 8-Bits sterben schnell ab; Wenn Sie ein 5-Dollar-Board mit (zum Beispiel) einem STM32F103 kaufen können, der ein ziemlich leistungsfähiger 32-Bit-ARM-Mikrocontroller ist (sogar mit USB!), haben sich die Zeiten zweifellos geändert.
Sie hatten bereits einige ausgezeichnete Antworten, aber in erster Linie würde ich sagen "Assembly vergessen" und fast "vergessen, sich darum zu kümmern, wie die CPU auf einer niedrigen Ebene funktioniert" - eines Tages wird es einen Eckfall geben, in dem Sie sich damit befassen müssen (eine spezielle Optimierung oder zum Debuggen), aber auf ARM-Kernen läuft C-Code außergewöhnlich gut (vom Design her), und Sie müssen sich selten tief in die Eingeweide wagen.
Dies bedeutet, dass Sie eine gewisse Zeit damit verbringen werden, sich mit Problemen zu beschäftigen, bei denen Compiler (und insbesondere Linker und Makefiles) obskure Fehler an Ihnen ausschließen, aber sie sind alle überwindbar.
Der Mut zur Funktionsweise der ARMs (dh der ARM-CPU-Bücher) ist bis zu dem Tag, an dem Sie tatsächlich optimieren müssen (und Sie werden erstaunt sein, wie selten dies geschieht, wenn Sie 32-Bit-Register und Ihre PLL haben), dicht und wenig interessant. d Der CPU-Takt liegt im Bereich von 100 MHz.
Der ARM-Befehlssatz "old skool" ist beim Zerlegen viel einfacher zu lesen als der viel neuere "Thumb2" - den Sie auf den meisten modernen Mikrocontroller-ARMs (Cortex) finden -, aber auch die Innereien der Anweisungen in Assemblersprache meist in den Hintergrund treten; Wenn Sie das richtige Toolset haben (insbesondere einen anständigen Debugger auf Source-Ebene mit Haltepunkten / Einzelschritten usw.), ist es Ihnen einfach egal, ob es überhaupt ARM ist.
Wenn Sie erst einmal in der Welt der 32-Bit-Register und 32-Bit-Datenbusbreiten sind und alles, was Sie sich jemals gewünscht haben, auf dem Chip verfügbar gemacht haben, möchten Sie nie wieder auf eine 8-Bit-CPU zurückgreifen. Im Grunde gibt es oft keine Strafe dafür, dass "es leicht nimmt" und das Schreiben von Code mehr als effizient lesbar ist.
Aber ... Peripheriegeräte ... ja, und da ist der Haken.
Auf modernen MCUs kann man sicher jede Menge Sachen spielen, und viele davon sind ziemlich ausgefallene Sachen. Sie finden oft eine Welt der Raffinesse, die weit über die On-Chip-Peripheriegeräte AVR, PIC und 8051 hinausgeht.
Ein programmierbarer Timer? Nein, hab acht! DMA? Wie wäre es mit 12 Kanälen mit programmierbarer Priorität und Burst-Modus und verkettetem Modus und Auto-Reload und .. und .. und ...
I2C? I2S? Dutzende Pin-Muxing-Optionen? Fünfzehn verschiedene Möglichkeiten, den On-Chip-Flash neu zu programmieren? Sicher!
Es fühlt sich oft so an, als wären Sie von einer Hungersnot zur nächsten übergegangen, und es kommt häufig vor, dass Sie ganze Stücke eines Chips bewundern, aber kaum verwenden (daher: Clock Gating).
Die Menge an On-Chip-Hardware (und Variationen davon in nur einer Chipserie eines Anbieters) ist heutzutage ziemlich umwerfend. Ein Chiplieferant wird IP-Blöcke natürlich häufig wiederverwenden. Wenn Sie sich also mit einer bestimmten Marke vertraut gemacht haben, wird es einfacher, aber "Scheiße ist heutzutage verrückt geworden".
Wenn überhaupt, sind die Peripheriegeräte und ihre Interaktionen (und DMA und Interrupts und die Buszuweisung und und und ...) SO komplex (und gelegentlich nicht genau so, wie in den Datenblättern beschrieben), dass Ingenieure häufig eine bevorzugte Auswahl an ARM-MCUs und haben Ich tendiere dazu, einfach deshalb dabei zu bleiben, weil ich mit den Peripheriegeräten und Entwicklungstools vertraut bin.
Gute Bibliotheken und Entwicklungstools (z. B. schnelles Kompilieren und Debuggen mit einem geeigneten Debugger) und eine Vielzahl funktionierender Beispielcode-Projekte sind heutzutage für Ihre Entscheidung für eine ARM-MCU von entscheidender Bedeutung. Es scheint, dass die meisten Anbieter jetzt äußerst billige Evaluierungsboards haben (
Wie Sie sicherlich bemerkt haben, ändern sich die Regeln vollständig, sobald Sie die Mikrocontroller-Ebene mit ARMs und die SOC-Ebene (z. B. SOCs im Raspberry Pi / etc-Stil) überschritten haben und es dreht sich alles darum, welche Art von Linux Sie verwenden zu rennen, weil Sie - mit verschwindend wenigen Ausnahmen - wahnsinnig bellen würden, etwas anderes zu versuchen.
Grundsätzlich gilt; Kaufen Sie sich unabhängig von der CPU, die (möglicherweise) für Sie bei diesem Auftritt vorgewählt wurde, eine Handvoll supergünstiger Cortex-basierter Evaluierungsboards von verschiedenen Anbietern (TI, STM, Freescale usw.) und Machen Sie sich mit dem bereitgestellten Beispielcode vertraut.
Letzter Ratschlag; Sobald Sie im Datenblatt die Seite-oder-drei gefunden haben, die die Pin-Muxing-Optionen für den genauen Teilenummern- Chip beschreibt, mit dem Sie arbeiten, möchten Sie ihn möglicherweise ausdrucken und an die Wand kleben. Spät in einem Projekt herauszufinden, dass eine bestimmte Kombination von Peripheriegeräten aufgrund von Pin-Muxing nicht möglich ist, macht keinen Spaß, und manchmal sind diese Informationen so versteckt, dass Sie schwören würden, dass sie versuchen, sie zu verbergen :-)