За исключением исключительных обстоятельств (см. примечание), организация вашего кода не повлияет на конечный продукт. (содержимое кода, очевидно, другое дело)
Помня об этом, вы должны организовать свой код так же, как и любой другой проект.
При этом довольно типичными являются следующие:
Если это процессор, над которым вы работали раньше или над которым будете работать в будущем, вам, как правило, потребуется сохранить выделенный уровень аппаратной абстракции, который можно будет совместно использовать между проектами в будущем. Обычно этот модуль будет содержать такие элементы, как процедуры для управления любыми UART, таймерами и т. д.
Обычно разумно поддерживать набор специфичного для платформы кода для инициализации и настройки, который выполняет всю настройку и инициализацию до того момента, когда ваш руководитель берет на себя управление и запускает ваше приложение. Он также будет включать подпрограммы hal для конкретных платформ.
Исполнение/приложение, вероятно, поддерживается как отдельный модуль. Весь специфичный для оборудования код должен быть скрыт в hal (как упоминалось выше).
При таком разделении кода у вас также есть возможность скомпилировать и запустить приложение как симуляцию на совершенно другой платформе, просто заменив код, специфичный для аппаратного обеспечения, подпрограммами, имитирующими аппаратное обеспечение. Это может быть полезно для модульного тестирования и отладки, а также для алгоритмических проблем, которые могут у вас возникнуть.
Исключительные обстоятельства, которые могут быть вызваны необычными ограничениями компилятора. например. Я сталкивался с некоторыми компиляторами, которые ожидают, что все подпрограммы обслуживания прерываний будут скомпилированы в одном объектном файле.
person
Andrew Edgecombe
schedule
22.10.2008