Я тут в очередной раз пытаюсь освоить программирование микроконтролеров. Захотелось написать такой полу-ЖЖ, полу-туториал (как говорится - хочешь разобраться в чём-то, объясни это другим). Может кто почерпнёт или подскажет чего полезного.
Если интерес будет, буду продолжать.
Итак осваиваем STM32 не как нормальные люди.
Примерный план:
-
Подключить его к компьютеру и убедиться, что там что-то происходит. Использовать будем st-util и gdb.
-
Написать простейшую программу на ассемблере, которая в цикле прибавляет регистр, скомпилировать из неё прошивку, залить на плату и пронаблюдать её работу. Использовать будем binutils и st-flash.
-
Поморгать диодом (на ассемблере же).
-
Переписать осмысленный код на С (дальше всё на С).
-
Переписать моргание с использованием таймера, чтобы внести свой вклад в борьбу с глобальным потеплением.
-
Сказать внешнему миру «Hello world» через UART.
-
Переписать «Hello world» с помощью CMSIS, уже с пониманием того, что там происходит.
На этом этапе начальное освоение микроконтроллеров можно считать завершённым. Дальше, видимо, сотни страниц датащитов по записи нужных битов в нужные места, или использование готовых библиотек. В любом случае навыки из списка выше полезны при использовании любых библиотек, т.к. всё растёт из этой базы.
Сразу скажу, что в процессе будет использовано достаточно много инструментов вроде make, ld, gdb, as, gcc и тд, по каждому из них можно книги писать (и пишут). Поэтому, конечно, углубляться в них я не буду, а напротив буду использовать в максимально примитивном виде.
Ниже ссылки на мануалы, где можно подробней раскрыть тему. Ожидается, что читатель будет активно ими пользоваться.
- STM32F103xx Reference Manual. Тут вся справочная информация по всем битам и байтам конкретного микроконтроллера.
- STM32F10xxx Programming manual. Тут справочная информация по ARM: все инструкции, описание работы процессора.
- GNU debugger GDB. Это отладчик.
- GNU make
- GNU linker ld
- GNU assembler as