#maven #embedded #directory #embedded-linux
#maven #встроенный #каталог #встроенный-linux
Вопрос:
Я начинаю большой проект для запуска на PIC32, и, как и в любом большом проекте, организация кода очень важна. Аналогично, структура папок тоже.
При разработке программного обеспечения для настольных компьютеров я использую свою собственную структуру папок (очень похожую на Maven), но, как и во всех приложениях, которые мы создаем, настольные и встроенные реализации будут иметь различия.
Итак, какова ваша структура папок в вашем проекте embedded systems? Существует ли какой-либо «maven подобный стандарт» для встроенных систем?
Комментарии:
1. Для тех из нас, кто ничего не знает о Maven, может кто-нибудь объяснить в нескольких предложениях, что делает проект Maven — в частности, что может быть особенным?
Ответ №1:
Это всего лишь «моя структура папок» и ни в коем случае не окончательная, но проекту уже несколько лет, продукт уже развернут, а обновления все еще активно разрабатываются — и я нашел структуру довольно удобной в использовании.
как отдельные проекты:
- Прошивка (основное монолитное приложение для выполнения этой задачи)
- WWW (контроль над HTTP)
- разные инструменты
- Lang (переводы всех строк)
- Общий (набор структур, определений и тому подобного, включенных и общих для всех).
Затем, в пределах встроенного ПО:
- cpp (исходные тексты)
- Appmanager (центральная точка, связывающая их все)
- События (перекачка событий, перекачка задач, также потоковая обработка)
- gfx (встроенный экранный графический интерфейс)
- Сеть (связь на основе TCP / IP)
- Интерфейс (все остальные операции ввода-вывода — rs232, CAN, сенсорный экран, ЖК-экран, SPI и т.д.)
- Журнал
- Утилиты (служебные классы)
- подкаталоги для всех основных модулей алгоритма. Доступ к файлам конфигурации, обработка входных данных, вычисления, надзиратель, сторожевой таймер,
- данные (конфигурационные файлы)
- [корневой каталог] (короткий, тривиальный
main.cpp
иglobal_include.h
, который включается из каждого файла — определяет основная конфигурация #.)
Комментарии:
1. Похоже, что вы не разделяете исходные файлы по уровням (приложение, транспортный уровень, аппаратная абстракция), это правильно? Мне всегда бывает трудно, я хочу разделяться по модулям, как вы, но я также хочу разделяться по слоям. Я не могу найти практичный способ сделать и то, и другое, что меня беспокоит.
2. @Gauthier: вы можете нарезать по горизонтали и связать семь несвязанных элементов «верхнего уровня» отдельно от другого набора несвязанных элементов «нижнего уровня» (который выглядит аккуратно, но на самом деле не помогает) или нарезать по вертикали и объединить, скажем, gfx-hardware interface, процедуры рисования gfx, gfx UI engine и определения экранов пользовательского интерфейса, что позволяет вам легко создать новый класс виджетов, если это необходимо для экрана, отрисовать виджет в соответствии с новой парадигмой на уровне рисования и иметь драйвер raw под рукой, если для процедур рисования требуются специальные приемы . Слои: вложенные папки / файлы, тема: основные каталоги.