Я уже собирал печатные платы для встраиваемых систем с использованием микроконтроллеров, таких как stm32, stm32l, nRF51822, efm32g, большинство из которых использует arm cortex m3. И программировать каждый из них обычно по-разному, т. е. линия прерывания, используемая в одном микроконтроллере для gpio, не такая же, как и в другом, регистры для настройки одного не совпадают с другим, поэтому код, который я сделал для один несовместим с другим, потому что каждый микроконтроллер по-разному связывает свои периферийные устройства с процессором.
Я полагаю, что эквивалентом микроконтроллера в архитектуре ПК является материнская плата, верно? Но как код, созданный для материнской платы (например, с использованием x86), совместим с другими материнскими платами? Есть ли стандарт? Все ли линии прерывания (связанные аппаратно) одинаковы для всех материнских плат, предназначенных для работы под управлением Windows или Linux? И порты ввода-вывода одинаковые? Интерфейс для смены часов такой же?
Обычно, когда я иду программировать голый металл (без ОС) для микроконтроллера, я получаю его таблицы данных, чтобы узнать, как я могу взаимодействовать с периферийными устройствами, есть ли унифицированное справочное руководство для всех материнских плат?
Я был бы признателен, если бы кто-нибудь мог указать мне некоторые ссылки на эту тему. Когда я ищу книги по компьютерной архитектуре, либо они сосредоточены на конструкции процессора ASIC (набор инструкций, конвейеры, кэши и т. д., которые я уже знаю), либо они действительно являются базовыми вещами (например, что такое жесткий драйвер).