1. Общий репозиторий проектов и библилиотек.
2. В прикладном ПО - обращение к аппаратуре только через функции соответствующих файлов исходного кода верхнего уровня - типа отправить кадр, выполнить транзакцию - подобие HAL.
3. Если функционала того или иного файла (набора функций) не хватает - доработка HAL по заявке. Заявку может делать любой заинтересованный. Внедрение делает один ответственный. Схема хорошо ложиться на git.
3. Каждый проект имеет либо встроенные в ПО тесты, либо отдельный набор тестов, покрывающий все используемые функции HAL. После любого изменения - все актуальные проекты проходят тестирование. Для снижения трудоемкости тестирования, часть проектов переводится в архивные, с заморозкой версий функций HAL. Тестируются только актуальные.
4. HAL уже зависит от архитектуры. Поэтому ветвление по архитектурам, разрешить уже в HAL. Решение о поддержании общей версии для всех архитектур или индивидуальных, принимает "держатель функции" - ответственный. Тот самый, который удовлетворяет заявки на изменения в HAL.
5. Если принято решение, тот или иной функционал HAL, держать универсальным для всех архитектур, то для такого случая, поддерживать и развивать свой LL. Делаем то же самое, начиная с п. 1 выше, только на уровень ниже.
6. Если компетенции ответственного за блок HAL, не хватает для той или иной архитектуры, производится выделение проблемного функционала в LL с передачей задачи компетентному ответственному.
7. Любые изменения, вносимые в библиотеки, должны иметь развёрнутое описание, какая проблема решается и каким способом делается и почему сделано именно так, с перечислением плюсов и минусов.
При этом один и тот же человек, может быть держателем нескольких функций и в HAL, и в LL.
Сам мечтаю внедрить такое, но всё откладываю: "До следующего проекта"...
P.S. HAL и LL - полностью свои. Можно копировать готовое, но хранить и развивать - своё. Пробовал пользовать готовое - всё равно дорабатывал и оно тянется не из чужих пакетов ПО, а лежит у меня локально.
P.P.S. репозиторий регулярно архивировать. Желательно продумать разграничение доступа для подрядчиков. Как-то, мой коллега, по молодости, подрядился делать работу с чужим репозиторием удалённо. Начал. И дров наломал. К счастью, заказчик всё оперативно восстановил.