Hallo Giktayms! Mit diesem halben Lehrstuhl, Master Gambes ... Mit diesem Beitrag starten wir, das Samsung IoT Academy-Projekt und Unwired Devices, eine Reihe von Veröffentlichungen, die auf dem neuen praktischen Kurs zur Programmierung von Mikrocontrollern auf Basis des Cortex-M3-Kerns basieren und ab morgen am
Institut für Informationstechnologien der Technischen Universität Moskau unterrichtet werden bekannt als MIREA).
Ziel des Kurses ist es, die Schüler mit modernen Mikrocontrollern vertraut zu machen, die auf dem Cortex-M3-Kern basieren, und ihnen grundlegende Programmierkenntnisse in C-Sprache unter dem Betriebssystem zu vermitteln. Anforderungen an die Schüler - Vertrautheit mit der C-Sprache (nicht unbedingt auf Mikrocontrollern) und ein grundlegendes Verständnis der Elektronik (auf der Ebene der Fähigkeit, eine LED anzuschließen).

Ursprünglich war das IoT Academy-Programm auf hohem Niveau konzipiert - die Schüler sollten mit vorgefertigten Datenübertragungsmodulen für LoRa- und 6LoWPAN-Netzwerke arbeiten, in die bereits Firmware mit Unterstützung für die erforderlichen Sensoren und die für die Arbeit erforderliche Logik geladen wurde. Tatsächlich besteht der Kurs darin, diese Module zu konfigurieren und Software auf hoher Ebene für die Verarbeitung eingehender Daten auf der Samsung Artik + Tizen-Plattform zu schreiben.
Wie die Praxis gezeigt hat, sind viele Schüler jedoch daran interessiert, sich eingehender mit den Vorgängen in den Mikrocontrollern zu befassen. Gleichzeitig ist im Moment mit Schulungen zu Cortex-M-Controllern in Verbindung mit Betriebssystemen alles ziemlich schlecht: Tatsächlich widmen sich neun von zehn solchen Kursen dem Schreiben einer einfachen Anwendung mit StdPeriphLib und / oder CubeMX, wobei der halbe Text zu Initialisierungsproblemen vorliegt Controller und seine Peripherie.
Die moderne Realität sieht jedoch anders aus - in den meisten kommerziellen Projekten (wir werden im nächsten Artikel über diese Statistiken sprechen, sie werden nicht von der Decke genommen) werden bereits RTOS verwendet, die Hardware-Abstraktion von Hardware, Virtualisierung von Hardwareressourcen und Multitasking ermöglichen und viele andere nützliche Dinge.
Besonders interessant ist, dass durch den Einsatz von RTOS die Eintrittsschwelle deutlich gesenkt werden kann - und genau darin liegt häufig das Hauptproblem. Das Hauptprinzip von Bildungsprogrammen ist die Entwicklung von einfach zu komplex - beim Studium moderner Mikrocontroller in der ersten Lektion zerfällt es in das STM32-Taktschema (Seite A4 in seiner Gesamtheit mit einer nicht zu großen Schriftart) und die Notwendigkeit, nur eine halbe Seite Code zu schreiben, damit der Mikrocontroller startet. Ja, Sie können eine Reihe von Vorlesungen halten, beginnend mit Assembler, Registern und Uhrenmustern - aber seien wir ehrlich: Studenten, die von Anfang an nicht ernsthaft daran interessiert waren, dieses Thema zu studieren, werden nur unter dem drohenden Bestehen einer Prüfung zum Ende kommen.
Ja, Codegeneratoren lösen das Problem der Eingabeschwelle, aber sie führen uns auch dazu, mit der Black Box zu arbeiten, was uns das Verständnis der internen Struktur des Systems entzieht. Moderne RTOS, die in Quellcodes verteilt sind, ermöglichen es Ihnen einerseits, schnell mit ziemlich einfachen Dingen zu beginnen, und andererseits können Sie tief in die interne Struktur des Systems eintauchen, während Sie verschiedene Nuancen studieren.
Im Dezember letzten Jahres haben wir bereits eine Probestunde durchgeführt
, die auf YouTube aufgezeichnet wurde und den Schülern ein wenig darüber erzählt, was moderne Mikrocontroller sind und wie man eine LED auf ihnen blinkt. Ich muss sagen, dass der Erfolg beeindruckend war: Wir begannen um halb elf Uhr morgens, während es im Publikum keine einzige Person mit Programmiererfahrung mit STM32 und nur wenige mit Erfahrung mit Arduino gab, aber wir beendeten um fünf Uhr abends im Labor der IoT Academy, wo einige der Studenten waren haben bereits begonnen, Spielzeug mit Knöpfen und RGB-Linealen auf STM32 zu schreiben.
Infolgedessen kamen wir - Unwired Devices, Samsung IoT Academy und MIREA IT Institute - zu dem Schluss, dass es an der Zeit ist, einen umfassenden Kurs zur praktischen Einführung in die Arbeit mit modernen Mikrocontrollern zu absolvieren. Und sie taten es.
Der Kurs wird ab morgen, dem 3. März, für Studenten des MIREA IT Institute unterrichtet und besteht aus 6 Vorlesungen und 5 praktischen Klassen mit einer schrittweisen Vertiefung der Themen im Zusammenhang mit Controllern.
Darüber hinaus wird das Institut alle Vorlesungen aufzeichnen und die praktischen Lektionen selektiv aufzeichnen. Auf dem IoT-Blog der Samsung Academy werden Vorlesungsunterlagen veröffentlicht, die an die Verwendung von ST Nucleo-L152-Boards angepasst sind und für jedermann zu einem Preis von 1200 bis 1400 Rubel erhältlich sind Github-Repositorys für nicht verdrahtete Geräte zeigen den im Klassenzimmer verwendeten Code an.
In allen praktischen Übungen verwenden wir nur den Basis-OS-Code. Obwohl den Schülern ein vollständiger Stapel für LoRa-Netzwerke zur Verfügung steht, besteht die Aufgabe in der letzten Lektion nicht darin, ihn zu verwenden, sondern ein eigenes Datenübertragungsprotokoll zu schreiben und dessen Schutz vor größeren Angriffen sicherzustellen.
Wir werden StdPeriphLib, CubeMX und nicht einmal LL verwenden - wenn wir über den Betrieb des Mikrocontrollers sprechen müssen, werden wir über Register und CMSIS sprechen. Der OS HAL-Code verwendet auch nur CMSIS.
Was wird in dem Kurs enthalten sein?
0. Einführungsvorlesung. Moderne Mikrocontroller, Programmiertools, Echtzeitbetriebssysteme. STM32-Controller-Familie.
1. Multitasking in eingebetteten Betriebssystemen. Präventive und nicht präemptive ticklose Multitasking-Systeme. Threads, Timer, Interrupts.
Übung: Schreiben einer einfachen Anwendung, die mit Schaltflächen und LEDs arbeitet, indem Nachrichten von Interrupts an einen separaten Stream gesendet werden.
2. E / A-Ports und Schnittstellen SPI, I2C, UART. Taktung, synchrone und asynchrone Schnittstellen, Hardware- und Software-Implementierung.
Übung: TI OPT3001 (I2C) Lichtsensor-Treibergerät und arbeiten Sie damit von einer Benutzeranwendung aus. Hinzufügen der Funktion zum Erzeugen eines Interrupts bei einem vom Benutzer festgelegten Schwellenwert zum Treiber.
3. Arbeiten Sie mit analogen und quasi-analogen Signalen. PWM, ADC, DAC. Methoden zur Erzeugung eines analogen Signals. Signaldigitalisierung, Abtastrate und Kotelnikovs Theorem.
Übung: Stellen Sie die Helligkeit der Lampe mit PWM entsprechend dem Wert des eingehenden analogen Signals ein. Digitalisierung eines zeitlich variierenden analogen Signals und Hochladen der empfangenen Werte zu UART.
4. Energieeinsparung. Betriebsarten des Prozessorkerns - RUN, SLEEP, STOP, STANDBY. Erwachen aus externen und internen Quellen. Speichern des RAM-Status des Controllers, RTC-Backup-Register. Arbeiten Sie im Betriebssystem mit Energiesparmodi.
Übung: "Schlafen" -Anwendung eines Impulszählers mit periodischer Abfrage des Zustands eines bestimmten GPIO und Akkumulation von Werten. Speichern des akkumulierten Werts in EEPROM- und Sicherungsregistern.
5. Drahtlose Datennetze. Arbeiten Sie mit dem LoRa-Funkkanal. Schutz der übertragenen Daten vor typischen Angriffen.
Übung: Nachrichtenübermittlung zwischen zwei Mikrocontrollern mit dem LoRa-Transceiver-Treiber SX1276. Nachrichtenverschlüsselung, Schutz vor Nachrichtenfälschung, Schutz vor wiederholten Angriffen.
6. Zusätzliche praktische Lektion in freier Form. Frage-Antwort, Konsultationen zu eigenen Projekten der Studierenden.Denken Sie, dass etwas Wichtiges und Notwendiges verloren gegangen ist? Schreiben Sie dazu in den Kommentaren.
