Programação de microcontroladores modernos - um novo curso do MIREA, Samsung e Unwired Devices

Olá Giktayms! Com esta meia-cadeira, a Master Gambes ... Com este post, nós, o projeto Samsung IoT Academy e Unwired Devices, lançaremos uma série de publicações baseadas no novo curso prático sobre microcontroladores de programação baseado no núcleo Cortex-M3, que será ministrado no Instituto de Tecnologias de Informação da Universidade Tecnológica de Moscou a partir de amanhã (também conhecido como MIREA).

O objetivo do curso é apresentar aos alunos microcontroladores modernos baseados no núcleo Cortex-M3 e fornecer habilidades básicas de programação para eles na linguagem C, no sistema operacional. Requisitos para os alunos - familiaridade com a linguagem C (não necessariamente em microcontroladores) e um entendimento básico de eletrônica (no nível da capacidade de conectar um LED).

imagem

Inicialmente, o programa da IoT Academy foi concebido como de alto nível - os alunos devem trabalhar com módulos de transferência de dados prontos para redes LoRa e 6LoWPAN, nas quais o firmware já foi carregado com suporte para os sensores necessários e a lógica necessária para trabalhar com eles. De fato, o curso é configurar esses módulos e escrever um software de alto nível para o processamento de dados recebidos na plataforma Samsung Artik + Tizen.

No entanto, como a prática demonstrou, muitos estudantes estão interessados ​​em investigar mais seriamente o que está acontecendo dentro dos microcontroladores. Ao mesmo tempo, no momento, com cursos de treinamento em controladores Cortex-M emparelhados com sistemas operacionais, tudo é muito ruim: de fato, nove em cada dez desses cursos são dedicados a escrever um aplicativo simples usando StdPeriphLib e / ou CubeMX, com metade do texto sobre problemas de inicialização controlador e sua periferia.

A realidade moderna, no entanto, parece diferente - na maioria dos projetos comerciais (falaremos sobre essas estatísticas no próximo artigo, elas não são retiradas do teto), os RTOS já são usados, o que traz abstração de hardware, virtualização de recursos de hardware, multitarefa e muitas outras coisas úteis.

O que é especialmente interessante, o uso do RTOS pode reduzir significativamente o limiar de entrada - e é precisamente nele que reside o principal problema. O principal princípio dos programas educacionais é o desenvolvimento do simples ao complexo - ao estudar os microcontroladores modernos na primeira lição, ele se divide no esquema de clock do STM32 (página A4 na sua totalidade com uma fonte não muito grande) e na necessidade de escrever meia página de código apenas para que o microcontrolador inicie. Sim, você pode fazer uma série de palestras, começando com assembler, registros e padrões de relógio - mas vamos ser honestos: os alunos que não estavam seriamente interessados ​​em estudar esse tópico desde o início só chegarão ao fim sob a ameaça de passar em um exame.

Sim, os geradores de código resolvem o problema do limite de entrada, mas também nos levam a trabalhar com a caixa preta, privando-nos de nossa compreensão da estrutura interna do sistema. Mas os RTOS modernos distribuídos em códigos-fonte, por um lado, permitem iniciar rapidamente com coisas bastante simples e, por outro lado, você pode se aprofundar na estrutura interna do sistema enquanto estuda várias nuances.

Em dezembro do ano passado, já realizamos uma aula experimental - que está gravada no YouTube - informando aos alunos um pouco sobre o que são os microcontroladores modernos e sobre como piscar um LED neles. Devo dizer que o sucesso foi impressionante: começamos às dez e meia da manhã, enquanto não havia uma única pessoa na platéia com experiência em programação com o STM32 e apenas algumas com experiência com o Arduino, mas terminamos às cinco da noite no laboratório da IoT Academy, onde alguns dos alunos já começaram a escrever brinquedos com botões e réguas RGB no STM32.

Como resultado, nós - Unwired Devices, Samsung IoT Academy e MIREA IT Institute - chegamos à conclusão de que é hora de fazer um curso completo de introdução prática ao trabalho com microcontroladores modernos. E eles fizeram.

O curso começa a ser ministrado aos alunos do MIREA IT Institute amanhã, 3 de março, e será um ciclo de 6 aulas e 5 aulas práticas com um aprofundamento gradual em tópicos relacionados aos controladores.

Além disso, o instituto gravará todas as palestras e seletivamente as lições práticas; no blog da IoT da Samsung Academy, serão publicadas notas de aula adaptadas ao uso dos painéis ST Nucleo-L152, disponíveis para todos por um preço de 1200 a 1400 rublos, e em Os repositórios do github de Dispositivos não conectados mostrarão o código usado na sala de aula.

Em todos os exercícios práticos, usaremos apenas o código do SO básico. Portanto, embora uma pilha completa para redes LoRa esteja disponível para os alunos, na última lição, a tarefa não será usá-la, mas escrever seu próprio protocolo de transferência de dados e garantir sua proteção contra grandes ataques.

Não usaremos StdPeriphLib, CubeMX e até LL - se precisarmos falar sobre a operação do microcontrolador, falaremos sobre registradores e CMSIS. O código OS HAL também usa nada além de CMSIS.

Então, o que será incluído no curso?

0. Palestra introdutória. Microcontroladores modernos, ferramentas de programação, sistemas operacionais em tempo real. Família de controladores STM32.

1. Multitarefa em sistemas operacionais incorporados. Sistemas tickless multitarefa preemptivos e não preemptivos. Threads, temporizadores, interrupções.

Prática: escrever um aplicativo simples que funcione com botões e LEDs enviando mensagens de interrupções para um fluxo separado.

2. Portas de E / S e interfaces SPI, I2C, UART. Clocking, interfaces síncronas e assíncronas, implementação de hardware e software.

Prática: o dispositivo driver do sensor de luz TI OPT3001 (I2C) e trabalhe com ele a partir de um aplicativo do usuário. Adicionando ao driver a função de gerar uma interrupção em um limite definido pelo usuário.

3. Trabalhe com sinais analógicos e quase-analógicos. PWM, ADC, DAC. Métodos para gerar um sinal analógico. Digitalização de sinal, taxa de amostragem e teorema de Kotelnikov.

Prática: ajuste o brilho da lâmpada usando PWM de acordo com o valor do sinal analógico recebido. Digitalização de um sinal analógico variável no tempo e upload dos valores recebidos para o UART.

4. Economia de energia. Modos de operação do núcleo do processador - EXECUTAR, DORMIR, PARAR, ESPERA. Despertar de fontes externas e internas. Salvando o status de RAM do controlador, o backup do RTC é registrado. Trabalhe com modos de baixo consumo de energia no sistema operacional.

Prática: aplicação “adormecida” de um contador de pulsos com pesquisa periódica do estado de um determinado GPIO e acumulação de valores. Salvando o valor acumulado na EEPROM e nos registros de backup.

5. Redes de dados sem fio. Trabalhe com o canal de rádio LoRa. Proteção de dados transmitidos contra ataques típicos.

Prática: troca de mensagens entre dois microcontroladores usando o driver do transceptor SX1276 LoRa. Criptografia de mensagens, proteção contra falsificação de mensagens, proteção contra ataques repetidos.

6. Lição prática adicional de forma livre. Pergunta-resposta, consultas sobre os projetos dos próprios alunos.

Você acha que algo importante e necessário foi perdido? Escreva sobre isso nos comentários.

Source: https://habr.com/ru/post/pt410765/


All Articles