Структура папок разработки встроенных систем

#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 под рукой, если для процедур рисования требуются специальные приемы . Слои: вложенные папки / файлы, тема: основные каталоги.