Ich werde Ihnen zunächst sagen, was ich weiß. Dann werde ich Ihnen sagen, dass ich in dieses magische Land gelangen möchte, in dem ich alles über die Entwicklung eingebetteter Systeme weiß. Dann werde ich Sie fragen, was meine nächsten Schritte sein sollten, um dorthin zu gelangen. Diese Antwort ist ziemlich informativ, aber ich versuche, etwas detaillierter zu werden:
Was ich weiß
Mal sehen, ich bin fair mit C und C ++. Natürlich möchte ich mit diesen Sprachen besser werden, aber ich denke, an diesem Punkt ist der beste Weg für mich, mich zu verbessern, sie einfach weiter zu verwenden und ständig zu versuchen, meinen Code zu verbessern, während ich ihn schreibe. Ich denke nicht, dass es sehr vorteilhaft wäre, irgendwelche Lernübungen nur noch dem Lernen von C zu widmen.
Ich bin ziemlich zufrieden mit dem Entwerfen einfacher Schaltungen. Ich sehe einen Chip mit einem Open-Collector-Ausgang und weiß, dass ich einen Pull-up usw. brauche. Ich bin ziemlich sicher, dass ich mit einem IC und seinem Datenblatt entweder herausfinden kann, wie ich mit ihm umgehen soll, oder zumindest die richtigen Fragen dazu stellen kann Finden Sie heraus, wie Sie es verbinden.
Ich bin sehr gut in Mathe und logischem Denken. Es gibt nur wenige Algorithmen / Designkonzepte, die mich für eine Schleife werfen. Dies ist definitiv mein stärkster Bereich.
Was ich getan habe
Bisher habe ich alle Erfahrungen mit 8-Bit-Mikrocontrollern gesammelt. In meinem College-Kurs wurden ein Motorola HC08, ein Intel 8051 und ein Zilog EZ8 verwendet. Mein Professor hatte für alle drei ein kleines Entwicklungsboard mit einem 7-Seg-Display und einigen anderen Dingen gebaut. Wir haben sie in der Montage programmiert, damit ich mit der Montage vertraut bin, und ich habe einen grundlegenden Kurs zur Computerarchitektur absolviert, damit ich eine gute Vorstellung von der Hardware habe. Wir haben jedoch an einer Windows-Umgebung gearbeitet und alle 3 MCUs hatten bereits eine eigene IDE und Toolkette eingerichtet, sodass ich nie wirklich erfahren habe, wie mein Code von der Assembly zur Ausführung auf der MCU überging.
Mein nächster Schritt war, alleine zu lernen. Ich habe mich sehr gut mit der Arduino-Umgebung vertraut gemacht, indem ich mit Sensoren / Speichern / Anzeigen verbunden war, die beide vorab geschriebene Bibliotheken hatten, und einige, die dies nicht taten. Als nächstes baute ich mein eigenes Arduino-Board mit einem ICSP und Verbindungen zu einer anderen MCU, damit ich den Bootloader auf nackte ATmega328s flashen konnte. Wiederum waren die IDE und die Toolkette bereits eingerichtet und ich habe nie verstanden, wie ich von C / Arduino zu Code übergegangen bin, der tatsächlich auf der MCU ausgeführt wird.
Was ich wissen will
Aus der zuvor verknüpften Antwort denke ich, dass das Interessanteste / Nützlichste für mich das Erlernen der Tools (Compiler und Linker) und das Erlernen verschiedener Stile der Softwarearchitektur (von Interrupt-basierten Regelkreisen zu Schedulern und RTOSs) wäre. . Das ist meine Meinung zu dem, was am nützlichsten wäre ... aber da ich es noch nicht weiß, ist es schwer zu sagen, ob das richtig ist oder nicht, also zögern Sie nicht, andere Stichpunkte aus dieser Antwort vorzuschlagen, wenn Sie denken, dass sie besser wären und Bitte erklären Sie, warum Sie das denken.
Ausgehend von meinem aktuellen Wissen und der obigen Beschreibung dessen, was ich als Ziel wissen möchte, suche ich nach sehr konkreten Vorschlägen, wohin ich als nächstes gehen soll. Ich suche nach genauen Projektvorschlägen, Websites / Blogeinträgen zum Lesen, Kapiteln in Büchern usw.
Gibt es noch andere Lücken in meiner Wissensdatenbank, die ich Ihrer Meinung nach füllen sollte, bevor ich zu den oben genannten Themen übergehe?
Vielen Dank
quelle
Antworten:
Das Portieren eines kleinen Betriebssystems auf ein neues Gerät kann Ihnen helfen, Scheduler und RTOSs zu verstehen. FreeRTOS ist beliebt und gut dokumentiert. eCos ist eine andere.
Das Schreiben eines Bootloaders ist eine gute Möglichkeit, einen Linker in den Griff zu bekommen, da Sie den Speicher aufteilen und in Regionen flashen möchten.
Ein weiterer Tipp ist, eine völlig neue Architektur oder einen neuen Chip auszuwählen und sich ein Entwicklungsboard zu bauen. Es ist eine gute Möglichkeit, sich zu zwingen, von vorne zu beginnen und alles im Datenblatt nachzuschlagen.
Entdecken Sie Protothreads . Versuchen Sie, dieselben Programme sowohl im Thread- als auch im State-Machine-Stil zu schreiben. Wenn Sie mit Protothreads fertig sind, schreiben Sie einen echten Thread-Scheduler.
quelle
Das MicroC OS II-Buch ist wahrscheinlich etwas, in das Sie investieren sollten. Sie sollten auch Projekte erstellen, um die verschiedenen Schnittstellen i2c, spi, mdio usw. zu lernen. Insbesondere, wie man jedes einzelne Bit knallt. Von Zeit zu Zeit unterstützt die Hardware den Bus (dies muss von Anbieter zu Anbieter gelernt werden), aber häufig können Sie aus verschiedenen Gründen keine i2c / spi-Hardware verwenden und müssen ein bisschen knallen.
Das avr / arduino ist in Ordnung, Sie sollten ARM, Daumen und Daumen2 und das msp430 und einige ältere (Nicht-Mips) Bilder lernen. Schauen Sie sich den Bootloader-Code für das Arduino an und finden Sie heraus, wie Sie ein Loader-Programm erstellen, den Flash darauf löschen und das Board / den Chip übernehmen. Holen Sie sich ein lpc-basiertes Armmikro. Schauen Sie sich auch das Programmierprotokoll für die serielle Schnittstelle an. Holen Sie sich ein Sam7s oder etwas mit einem Arm7, der einen traditionellen Jtag hat, einen Olimex-Wiggler oder einen Jtag-Winzling (ich empfehle letzteres). Machen Sie sich mit openocd vertraut. ARMs swd ist schmerzhafter als normales jtag, wird sich aber in diesem Markt durchsetzen (für Produkte auf Cortex-m-Basis). Kurz gesagt, lernen Sie die verschiedenen Möglichkeiten kennen, die Anbieter bei der Schaltungsprogrammierung bieten. Sie werden von Zeit zu Zeit Bretter ziegeln und möchten sich mit dem Lösen von Brettern wohlfühlen. Schreiben Sie in diesem Sinne Code, um Intel hex, srec, zu analysieren.
Sie haben Werkzeuge erwähnt. Sie können nichts falsch machen, wenn Sie gcc und binutils lernen und lernen, wie man zumindest für die unterstützten Plattformen kompiliert (normalerweise beinhaltet dies --target = msp430 --prefix = / etwas zum Beispiel). Unterstützte Plattformen für die Hauptlinie gcc und binutils sind ein sich bewegendes Ziel, sodass avrgcc und mspgcc und dergleichen grundsätzlich für Sie erledigt werden. Sie müssen lernen, Linker-Skripte zu schreiben und Ihren C-Code so zu schreiben, dass beispielsweise feste Tabellen im ROM und nicht im RAM angezeigt werden. Wenn Sie auch ein Gefühl für das Zerlegen der Binärdateien bekommen möchten, müssen Sie sicherstellen, dass sich die Tabellen an der richtigen Stelle befinden. Stellen Sie sicher, dass sich der Code dort befindet, wo Sie denken, dass die Vektortabellen und der Start- / Startcode dort sind, wo der Prozessor ihn benötigt Stiefel. Es tut auch nicht weh herauszufinden, was die Compiler-Optimierungen bewirken und wie C-Code aussieht, wenn er zu Assembler- / Maschinencode kompiliert wird. Wenn möglich, beschränken Sie sich nicht auf gcc / gnu. llvm ist ein starker Spieler, es hat das Potenzial, gcc als besseres Werkzeug zu überholen. Möglicherweise haben Sie sdcc bereits verwendet. Probieren Sie die eval-Versionen von kiel, iar usw. aus. Sie werden schnell feststellen, dass die C / C ++ - Standards viele Grauzonen enthalten und jeder Compiler diese unterschiedlich interpretiert, auch dramatische Unterschiede in der Qualität des Codes, der aus demselben Hoch erzeugt wird Level-Quelle. Wenn Sie bei diesem Beruf bleiben, wird es Zeiten geben, in denen Sie gezwungen sind, einen nicht so großartigen Compiler zu verwenden und seine Warzen und Schwächen zu umgehen. Im Desktop-Geschäft kann es häufig vorkommen, dass Sie sich weigern, nicht standardkonforme Tools zu verwenden. In der Welt der Mikrocontroller bekommt man manchmal das, was man bekommt, und das ist es. Manchmal gibt es Anbieter, die die C-Sprache ändern / verbessern, um ihre Hardwarefunktionen zu erfüllen, oder angeblich Ihr Leben erleichtern (Kaninchen-Semi und XMOS kommen in den Sinn). (xmos ist aus vielen Gründen eine sehr attraktive Plattform, ich halte sie für fortgeschritten, aber nach den Geräuschen Ihrer Erfahrung sind Sie wahrscheinlich bereit, die Tools sind ein kostenloser Download, ein wirklich guter Simulator, wichtig, um zu lernen, wie man .vcd / Wellenformen von Ihnen studiert Code wird ausgeführt).
Chibios ist eine andere zu sehen.
Das Erstellen erfolgreicher Bootloader ist eine wichtige Fähigkeit. Der Bootloader oder zumindest der Anfang von will absolut solide sein, Sie möchten kein Produkt liefern, das leicht gemauert werden kann. Ein einfacher Start mit einer Möglichkeit, den Anwendungsteil des Flashs neu zu laden, ohne den Einstiegsteil des Bootloaders zu beeinträchtigen, ist der Schlüssel.
Die stellaris eval-Boards sind mit Peripheriegeräten ausgestattet, obwohl sie Bibliotheken bieten, die es wert sind, gelernt zu werden, zumal sich die Art und Weise, wie sie Ihnen sagen, dass sie funktionieren und wie sie tatsächlich funktionieren, unterscheidet und Sie ihren Code und andere Ressourcen untersuchen müssen, um dies herauszufinden.
Als AVR-Fan empfehle ich einen AVR-Schmetterling, wenn er noch da draußen ist. Lernen Sie ein wenig serielle Programmierung, löten Sie einen Stecker an und programmieren Sie ihn neu. Ein paar Peripheriegeräte dort, um das Programmieren zu lernen.
Vielleicht bekommen Sie ein früher Dallas Semi, jetzt Maxime, denke ich, ein Drahtgerät. Wie ihre Temperatursensoren. Noch schmerzhafter als i2c und mdio mit ihrem bidirektionalen Datenbus ist dieses Ein-Draht-Ding ein Draht (und Masse). Power, Master to Slave und Slave to Master alles auf einem Draht.
Als ich dort war, wo Sie jetzt sind, fand ich das Dekodieren von Infrarot-Fernbedienungsprotokollen lustig. Die ir-Empfängermodule sind leicht zu bekommen, Radio Shack hatte tatsächlich ein gutes. Grundsätzlich ist das Gegenteil von Bit-Banging der Fall. Sie möchten die Zeit zwischen Statusänderungen messen, indem Sie das Timing verwenden, um das Protokoll zu erkennen und / oder zu dekodieren. Ein Universalempfänger ist nicht erforderlich, ein Protokoll zu einem Zeitpunkt ist in Ordnung. Ebenso können Sie dann Bitbang-Befehle an eine ir-LED senden, insbesondere wenn Sie die Trägerfrequenz bitbangen.
Es ist wahrscheinlich auch eine gute Idee, über SPI mit einer SD-Karte zu sprechen. Auf jeden Fall lernen Sie, wie man i2c- und / oder spi-Flash-Teile löscht und programmiert. Sie werden häufig auf Seriennummern, Mac-Adressen und dergleichen stoßen.
Ich empfehle, auch die grundlegenden Ethernet-Protokolle zu lernen. Sie können arp- und udp-Pakete (von Grund auf neu) (und auch icmp / ping) analysieren und erstellen. Es ist ziemlich einfach, einen UDP-Stack zu erstellen, wenn Sie ein wenig schummeln und nicht den tatsächlichen Arp-Regeln folgen. Wenn Ihnen jemand etwas sendet, senden Sie die Antwort zurück an den sendenden Mac / die sendende IP. Oder gehen Sie so weit, dass Sie die Arp-Pakete für andere Leute kaufen und die Mac / IP-Adressen um Sie herum verfolgen. tcp erfordert viel mehr Arbeit, ist machbar, aber es ist besser, zuerst darüber zu lesen, als zu versuchen, es zu implementieren.
Viel Glück und vor allem viel Spaß.
quelle
Das ist eine große Frage. Leider gibt es keine Möglichkeit, die Entwicklung eingebetteter Mikrocontroller zu erlernen, genau wie beim Erlernen fast aller anderen Dinge. Ich gehe davon aus, dass Sie, da Sie hier fragen, nicht nur ein bestimmtes Projekt fertigstellen möchten, sondern wirklich verstehen möchten, was vor sich geht, damit Sie jedes Projekt später selbst erledigen können. Das ist ein guter Anfang.
Es gibt keinen Ersatz dafür, ein paar Projekte in Assembler durchzuführen, um die Dinge wirklich zu verstehen. Ein Teil der Aufgabe von Hochsprachen besteht darin, einen Teil der Komplexität zu verbergen, aber das verdeckt auch Dinge, die Sie verstehen möchten. Arduino ist eine weitere Schicht davon. Es mag für jemanden in Ordnung sein, der nicht wissen möchte, wie die Dinge funktionieren, um etwas zu erledigen, aber es ist wirklich schlecht, wenn das Ziel darin besteht, die Details zu lernen. Lassen Sie also das Arduino hinter sich, vergessen Sie, dass Sie einen Compiler haben, rollen Sie Ihre Sleaves zusammen und machen Sie sich bereit, um wirklich einzutauchen.
Der erste Ausgangspunkt für einen Mikrocontroller ist das Datenblatt. Die verschiedenen Mikrocontroller-Linien haben unterschiedliche Details, aber die Konzepte sind die gleichen. Wählen Sie eine aus und bleiben Sie dabei, bis Sie ein paar Projekte abgeschlossen haben und sich damit wohl fühlen. Die PICs TI MSP430, Atmel und Microchip sind alle gängige Mikrocontroller-Linien. Ich bin ein PIC-Typ, also werde ich darüber sprechen. Es ist nicht falsch, mit einem der anderen zu gehen, aber ich denke, es gibt eine besser zugängliche Community-Unterstützung für PICs, und die PIC-Linie ist sehr breit, so dass es einfacher ist, von Anfang an zu größeren und kleineren Mikros zu wechseln.
Wenn Sie mit der PIC-Linie beginnen, empfehle ich den 18F2520. Es ist ein ziemlich leistungsfähiger Mikrocontroller, wird in einem einfach zu verschraubenden 28-Pin-Gehäuse geliefert, verfügt über eine ordentliche Menge an Programmspeicher und RAM sowie einen ordentlichen Satz gemeinsamer Peripheriegeräte. Holen Sie sich eine kleine Handvoll und verwenden Sie sie zunächst auch für kleine Projekte, die mit etwas weniger hätten durchgeführt werden können. Es geht darum, es gut kennenzulernen. Schließlich möchten Sie etwas tun, das mehr erfordert, als dieser PIC kann. Hoffentlich sind Sie zu diesem Zeitpunkt ziemlich gut in den grundlegenden Dingen und können leicht ein anderes Modell ersetzen. Tatsächlich sind alle 18F-PICs bis auf die Anzahl der Pins, den Programmspeicher, den RAM und den Peripheriemix gleich. Nach einigen Projekten mit dem 18F2520 haben Sie kein Problem damit, direkt in einen PIC 18 zu springen.
Wenn Sie dies professionell tun, werden Sie schließlich auf Anforderungen stoßen, die etwas Kleineres oder Billigeres vorschreiben. Dann sehen Sie sich die 16F- oder möglicherweise sogar 12F- oder 10F-Familien an. Die Dinge werden weitgehend vertraut aussehen, aber einige Dinge werden etwas schwieriger sein. Dies sollte kein Problem sein, wenn Sie mit einem soliden Verständnis eines 18F beginnen. Heutzutage sind die 16F- und unteren Familien wirklich nur für die Serienproduktion oder vielleicht dann gedacht, wenn physischer Raum und manchmal Leistung sehr wichtig sind. Sie haben wenig Vorteil gegenüber einem 18F für einen Bastler.
Wenn Sie nach oben gehen, können Sie sich die 24, 30 und 33 Familien ansehen. Diese sind im Grunde alle gleich, bis auf einige kleinere Falten wie die Spannung, mit der sie laufen, die Höchstgeschwindigkeit und ob sie die DSP-Mathematik-ALU haben oder nicht. Sie sind komplizierter in Assembler zu programmieren, aber auch seltsamerweise einfacher. Es gibt mehr Anweisungen zu beachten, aber es ist daher auch einfacher, viele Dinge zu tun. Dies ist auch ein guter Punkt, um zu C zurückzukehren, wenn Sie dorthin möchten. Der C-Compiler für diese Teile ist im Gegensatz zu den C-Compilern für PIC 18 und niedriger eigentlich ziemlich gut. Es ist auch einfacher, C und Baugruppe im selben Projekt für diese Teile zu mischen. Vergessen Sie jedoch nicht den Assembler. Es ist immer noch nützlich zu wissen, wann Sie einen Bootloader schreiben müssen, sich mit Multitasking zu befassen, das unnatürliche Aktionen auf dem Stapel ausführt.
Eine schöne Sache an der Microchip-Linie ist, dass ein einzelner Programmierer / Debugger über die gesamte Menge arbeitet. Wenn Sie es ernst meinen, dies professionell zu tun, holen Sie sich das Real Ice. Um ein wenig Geld zu sparen, können Sie den ICD3 kaufen, der nur ein wenig abgespecktes Real Ice ist. Das einzige, was es nicht ist, ist ein ICE (wieder dummes Marketing schlägt zu), aber es ist ein guter In-Circuit-Debugger. MPLAB, ihr IDE-Debugger und Simulator, funktioniert auch in der gesamten Produktlinie.
Für Profis oder diejenigen, die Profis werden möchten, besuchen Sie die jährliche Microchip Masters-Konferenz. Ja, es ist im Sommer in Arizona, aber Sie sind da, um etwas zu lernen. Vergessen Sie also die 115 ° F im Schatten. (Eigentlich mag ich es, Arizona im Sommer zu erkunden, also gehe ich eine Woche früher mit meinem kleinen Zelt aus und stoße durch das Hinterland. Es ist erstaunlich, wie wenige Menschen in den riesigen Nationalwäldern, nicht weit von Phoenix entfernt, draußen sind.) Masters ist es auch Ein guter Ort, um Entwicklungswerkzeuge zu erwerben. Sie verkaufen sie normalerweise für etwa 45% Rabatt bei Masters. (Ich bin ein Microchip-Designpartner auf Platin-Niveau, daher bekomme ich die ganze Zeit 45% Rabatt, weshalb ich nicht über den genauen Masters-Rabatt informiert bin.)
Wenn Sie anfangen, Mikrocontroller mithilfe von PIC-Projekten zu erkunden, besuchen Sie meine Website, auf der ich weitere Informationen zur Strukturierung von PIC-Projekten erhalte und Ihnen eine Reihe kostenloser Tools zur Verfügung stelle, mit denen Sie einige ausgefallene Dinge erledigen können. Wenn Sie gutes Software-Design und Sauberkeit verstehen, werden Sie bei MPASM verärgert sein. Machen Sie ein oder zwei Projekte, um zu verstehen, was es tut und was nicht, und schauen Sie sich dann meine Wrapper und andere Tools an, mit denen Sie viel mehr tun können, während Sie sich an gute Software-Design-Praktiken halten. Assembler muss kein Chaos sein, nur weil das meiste davon ist. Wenn Sie sich wirklich dafür interessieren, können Sie in der Klasse vorbeischauen, die ich diesen Sommer bei Masters zu diesem Thema unterrichte.
quelle
Hier ist eine andere Idee. Implementieren Sie Ihr eigenes Hintergrund-Tasking-System, mit dem Sie sowohl zeitgesteuerte Aufgaben erstellen als auch Aufgaben anfordern können, die nur ausgeführt werden, wenn zeitgesteuerte Aufgaben nicht ausgeführt werden. Es ist kein echtes RTOS, sondern verhält sich eher wie ein kooperativer Scheduler. Konvertieren Sie ein vorheriges Projekt, um das neue Tasking-System zu verwenden.
Diese Art von System funktionierte sehr gut bei Produkten, die wir auf einem 8051 verwendet haben. Es wurde ursprünglich in Assembly geschrieben, aber später haben wir es in C konvertiert, um es auf andere Architekturen zu portieren. Es war wirklich glatt, wo der Herzschlag dieses Systems auf einem 5-ms-Tick lag und die zeitgesteuerten Aufgaben in 5-ms-Schritten ausgeführt wurden. Wir hatten eine Datei, in der wir alle unsere Aufgaben (Funktionszeiger) mit ihren Zeitwerten und denen, die auf Anfrage waren, benannten. Diese Datei wurde dann entweder in Assembly oder C konvertiert, je nachdem, wie wir sie implementiert und in den Code kompiliert haben.
Wenn es ziemlich gut funktioniert, können Sie Ihr eigenes einfaches RTOS für etwas Stärkeres schreiben.
quelle
Um Ihre Frage "Was ich wissen möchte" direkt zu beantworten:
Ich habe festgestellt, dass es für mich äußerst hilfreich war, den Compiler direkt über die Befehlszeile aufzurufen, sich mit seinen Optionen vertraut zu machen und dann eigene Makefiles zu schreiben, um alle Ihre Builds auszuführen - was sich nach etwas anhört, das Sie möchten lernen. Dies trennt im Grunde die Werkzeugkette von der IDE und ermöglicht es Ihnen, die Werkzeugkette mehr als die IDE zu lernen. Dies ist eine fortlaufende Sache, die ich ebenfalls verbessern möchte.
Mir ist aufgefallen, dass Sie in der Vergangenheit Arduino verwendet haben, was großartig ist, da ich jetzt empfehlen kann, von nun an avr-gcc als Compiler zu verwenden. Probieren Sie es aus, es ist auf allen Plattformen verfügbar (Linux, WinAVR für Windows, Mac) und die Dokumentation zur avr-gcc-Toolkette und zu avrdude (Programmierer) ist großartig, und es sollte viele Beispiel-Makefiles für Sie geben lernen von. Ein angemessener Teil dieser Informationen kann auch auf andere Hardware übertragen werden, z. B. arm-gcc.
quelle
Eine Sache, die Sie nicht erwähnt haben, ist die Kommunikation.
Es scheint , dass ein Loch Sie könnten stecken die verschiedene Standard - Kommunikationsprotokolle in der Industrie zu lernen wäre - Dinge wie:
usw.
quelle
Die Frage lautet also: "Wie lernt man, wenn jede Toolchain eine Blackbox ist?"
Ich schlage vor, einen sehr alten Experimentator von der Stange zu finden, der das Board mit jeder gängigen CPU debuggt. So etwas wie eine 2 Fuß breite Vorrichtung mit CPU, LEDs, Schaltern und der Schaltfläche "Einen Schritt ausführen". Erstellen Sie manuell ein Langschleifenprogramm mit 5 bis 10 Anweisungen unter Verwendung von Maschinencode-Binäranweisungen aus dem Datenblatt. Legen Sie es auf einen steckbaren riesigen ROM-Chip. Legen Sie das ROM ein, klicken Sie auf Power On / Reset und debuggen Sie es Schritt für Schritt.
quelle
Wie gut verstehen Sie Register, Betrieb und dergleichen auf einem 8-Bit-Mikro? Es könnte eine gute Idee sein, eine kleine Montage durchzuführen. Dies hat den Vorteil, dass Sie genau lernen, was los ist. Dies kann helfen, seltsame Fehler mit höheren Sprachen zu lösen.
AVRs haben einen schönen einfachen Assembler und Register. Es ist eine gute Plattform, um Ihr Futter nass zu machen. Es gibt auch einige gute Tutorials für diese Plattform.
Dies gibt Ihnen den Überblick darüber, was das Mikro tut. Dann ist der nächste Schritt, wie der Compiler und der Linker C / Arduino zum Maschinencode bringen, leichter zu verstehen.
quelle
Realtime Mantra enthält mehrere Artikel zur Entwicklung eingebetteter Software.
quelle