Я пытаюсь понять, как работает микроконтроллер. По крайней мере, с точки зрения разработчиков программного обеспечения. У меня есть некоторые базовые знания о «make-файлах» и процессе компиляции и компоновки, а также низкоуровневого программирования. Но я хочу научиться программированию еще ближе к аппаратному обеспечению.
Итак, я начал анализировать код HardwareSerial (HardwareSerial.c и HardwareSerial.h) для Arduino. И что я не мог понять, так это где UBRRH (или UBRR0H) определены, что означает, что у нас есть serial0 (единственный для Arduino-Uno). Я думаю, что производитель платы должен как-то это предоставить. Я думал, что в зависимости от целевой платы, которую я использую, компилируется другой код. Так что, если я скомпилирую код для Arduino-Uno, скомпилированный файл будет как-то включать определение, например, UBRRH. Тогда как Arduino IDE узнает, какую плату я собираю?
Моя цель - со временем написать свой собственный последовательный протокол. И, может быть, даже спроектировать мою собственную доску ... Хотя единственная «доска», которую я создал, это H-мост, но эй, цель высокая ...