Добрый день уже, долго время мучаюсь с организацией инициализации проекта. Дело в том что я хочу что бы, проект можно было ЛЕГКО переключать на разныех платах, т.е есть 2 платы с разным подключением периферии, но и есть общая часть которая работает по верх этой периферии и ей все равно как, как там периферия подключена, и даже все равно какой процессор стоит.
Текущая организация, проекта у меня состоит из .c .h модулей, где инициализация модуля(если требуется) находится в нем же.
В качестве упрошенного примера могу привести, подключение командной строки по USART, есть общий модуль, разбора команд(shell) совместно с инициализация USART и выводов. Что бы подключить его на другой плате теоретически надо только поменять выводы USART (Процессоры из одной серии).
Так вот хочу что бы было примерно так, есть один репозиторий проекта, 1 раз спортировал его на обе платы, а потом добавил пару команд в shell на одной плате закомител, переключился на другую плату, и там уже все изменения модуля Shell уже присутствуют, тоже изменил модуль shell, переключился опять на первую плату, и так далее постоянно, туда суда переключатся что бы можно было.
Пути решения, и что получилось: 1) Сделал 2 ветки для разных плат, но при изменении нескольких файлов не удобно применять. 2) При портировании, проекта оказалось не все так просто как изменить пару выводов, если смотреть на STM, то USART может сидеть на разных шинах, что тоже надо учитывать, ну и так же не много поплыли другие модули, типа изменился размер странице flash, из за разного объема flash, платах. В общем получилось что портирование, содержит в себе мелкие изменения, но во множестве файлов и как легко его переключать, пока не знаю. 3) В git нашёл команду submodules, ещё не особо разобрался что к чему, но по плану хотелось бы все общие модули, разделить на разные репозитория, и выкачивать, его при изменении, но тут возникает вопрос куда девать инициализацию, если все же она требуется модулю, и присутствует в нем.
Уже подумываю, о том что сделать отдельный файл инициализация проекта где будет настраиваться вся периферия, тем самым, что бы спортировать его на другое устройство(плату), надо всего 1 файл поменять, но он будет здоровый сильно, и там черт ногу сломит, вот хотел бы спросить если ли ещё какие нибудь пути решения проблемы?
|