Bonjour Giktayms! Avec cette demi-chaise, Master Gambes ... Avec ce billet, nous, le projet Samsung IoT Academy et Unwired Devices, lançons une série de publications basées sur le nouveau cours pratique de programmation de microcontrôleurs basé sur le noyau Cortex-M3, qui sera enseigné à l'
Institut des technologies de l'information de l'Université technologique de Moscou à partir de demain (également connu sous le nom de MIREA).
L'objectif du cours est de présenter aux étudiants les microcontrôleurs modernes basés sur le noyau Cortex-M3 et de leur donner des compétences de programmation de base pour eux en langage C sous le système d'exploitation. Exigences pour les étudiants - familiarité avec le langage C (pas nécessairement sur les microcontrôleurs) et une compréhension de base de l'électronique (au niveau de la capacité de connecter une LED).

Initialement, le programme IoT Academy était conçu comme un niveau assez élevé - les étudiants devraient travailler avec des modules de transfert de données prêts à l'emploi pour les réseaux LoRa et 6LoWPAN, dans lesquels un micrologiciel prenant en charge les capteurs nécessaires et la logique nécessaire pour travailler avec eux étaient déjà chargés. En fait, le cours consiste à configurer ces modules et à écrire des logiciels de haut niveau pour le traitement des données entrantes sur la plateforme Samsung Artik + Tizen.
Cependant, comme la pratique l'a montré, de nombreux étudiants souhaitent approfondir ce qui se passe à l'intérieur des microcontrôleurs. En même temps, pour le moment, avec des cours de formation sur les contrôleurs Cortex-M couplés à des systèmes d'exploitation, tout est assez mauvais: en fait, neuf cours sur dix sont consacrés à l'écriture d'une application simple en utilisant StdPeriphLib et / ou CubeMX, avec la moitié du texte sur les problèmes d'initialisation contrôleur et sa périphérie.
La réalité moderne, cependant, semble différente - dans la plupart des projets commerciaux (nous parlerons de ces statistiques dans le prochain article, elles ne sont pas prises du plafond), les RTOS sont déjà utilisés, qui apportent l'abstraction matérielle du matériel, la virtualisation des ressources matérielles, le multitâche et bien d'autres choses utiles.
Ce qui est particulièrement intéressant, l'utilisation de RTOS peut réduire considérablement le seuil d'entrée - et c'est précisément en cela que réside souvent le problème principal. Le principe principal des programmes éducatifs est le développement du simple au complexe - lors de l'étude des microcontrôleurs modernes dans la première leçon, il se décompose en schéma d'horloge STM32 (page A4 dans son intégralité avec une police pas trop grande) et la nécessité d'écrire une demi-page de code uniquement pour que le microcontrôleur démarre. Oui, vous pouvez faire une série de conférences, en commençant par l'assembleur, les registres et les modèles d'horloge - mais soyons honnêtes: les étudiants qui n'étaient pas sérieusement intéressés à étudier ce sujet dès le début ne finiront que sous la menace de réussir un examen.
Oui, les générateurs de code résolvent le problème du seuil d'entrée, mais ils nous conduisent également à travailler avec la boîte noire, nous privant de notre compréhension de la structure interne du système. Mais les RTOS modernes distribués dans les codes sources, d'une part, vous permettent de commencer rapidement avec des choses assez simples, et d'autre part, vous pouvez creuser profondément dans la structure interne du système tout en étudiant diverses nuances.
En décembre de l'année dernière, nous avons déjà organisé une leçon d'essai -
elle est enregistrée sur YouTube - expliquant un peu aux élèves ce que sont les microcontrôleurs modernes, ainsi que la façon de faire clignoter une LED dessus. Je dois dire que le succès a été impressionnant: nous avons commencé à dix heures et demie du matin, alors qu'il n'y avait pas une seule personne dans le public ayant une expérience en programmation avec STM32 et seulement quelques-uns avec une expérience avec Arduino, mais nous avons fini à cinq heures du soir au laboratoire de l'IoT Academy, où certains des étudiants ont déjà commencé à écrire des jouets avec des boutons et des règles RVB sur STM32.
En conséquence, nous - Unwired Devices, Samsung IoT Academy et MIREA IT Institute - sommes arrivés à la conclusion qu'il était temps de suivre une formation pratique à part entière pour travailler avec des microcontrôleurs modernes. Et ils l'ont fait.
Le cours commencera à être enseigné aux étudiants de l'Institut informatique MIREA demain, le 3 mars, et sera un cycle de 6 conférences et 5 cours pratiques avec un approfondissement progressif des sujets liés aux contrôleurs.
De plus, l'institut enregistrera toutes les conférences et enregistrera sélectivement les leçons pratiques; sur le blog IoT de la Samsung Academy, des notes de conférence seront publiées adaptées à l'utilisation des cartes ST Nucleo-L152, disponibles pour tout le monde à un prix de 1200-1400 roubles, et en Les référentiels github des périphériques sans fil afficheront le code utilisé dans la salle de classe.
Dans tous les exercices pratiques, nous n'utiliserons que le code du système d'exploitation de base. Ainsi, bien qu'une pile à part entière pour les réseaux LoRa soit disponible pour les étudiants, dans la dernière leçon, la tâche ne sera pas de l'utiliser, mais d'écrire votre propre protocole de transfert de données et d'assurer sa protection contre les attaques majeures.
Nous n'utiliserons pas StdPeriphLib, CubeMX et même LL - si nous devons parler du fonctionnement du microcontrôleur, nous parlerons des registres et du CMSIS. Le code OS HAL n'utilise également que CMSIS.
Alors, qu'est-ce qui sera inclus dans le cours?
0. Conférence introductive. Microcontrôleurs modernes, outils de programmation, systèmes d'exploitation en temps réel. Famille de contrôleurs STM32.
1. Multitâche dans les systèmes d'exploitation intégrés. Systèmes multitâche préemptifs et non préemptifs multitâche. Fils, minuteries, interruptions.
Pratique: écrire une application simple qui fonctionne avec des boutons et des LED en envoyant des messages d'interruptions à un flux séparé.
2. Ports d'E / S et interfaces SPI, I2C, UART. Horloge, interfaces synchrones et asynchrones, implémentation matérielle et logicielle.
Exercice: pilote de capteur de lumière TI OPT3001 (I2C) et utilisation avec celui-ci à partir d'une application utilisateur. Ajout au conducteur de la fonction de génération d'une interruption à un seuil fixé par l'utilisateur.
3. Travaillez avec des signaux analogiques et quasi-analogiques. PWM, ADC, DAC. Méthodes de génération d'un signal analogique. Numérisation du signal, taux d'échantillonnage et théorème de Kotelnikov.
Pratique: ajustez la luminosité de la lampe à l'aide de PWM en fonction de la valeur du signal analogique entrant. Numérisation d'un signal analogique variant dans le temps et téléchargement des valeurs reçues vers UART.
4. Économie d'énergie. Modes de fonctionnement du cœur du processeur - RUN, SLEEP, STOP, STANDBY. Réveil de sources externes et internes. Sauvegarde de l'état RAM du contrôleur, registres de sauvegarde RTC. Fonctionne avec des modes basse consommation dans le système d'exploitation.
Pratique: application «endormie» d'un compteur d'impulsions avec interrogation périodique de l'état d'un GPIO donné et accumulation de valeurs. Sauvegarde de la valeur accumulée dans l'EEPROM et les registres de sauvegarde.
5. Réseaux de données sans fil. Travaillez avec la chaîne radio LoRa. Protection des données transmises contre les attaques typiques.
Pratique: messagerie entre deux microcontrôleurs à l'aide du pilote d'émetteur-récepteur SX1276 LoRa. Cryptage des messages, protection contre la falsification des messages, protection contre les attaques répétées.
6. Leçon pratique supplémentaire sous forme gratuite. Questions-réponses, consultations sur les projets des étudiants.Pensez-vous que quelque chose d'important et de nécessaire a été perdu? Écrivez à ce sujet dans les commentaires.
