Jump to content

    
Fox_Sanchez

CubeIDE, разделить проект на два

Recommended Posts

Добрый день!

Пилю первый "большой" проект на STM32. Большой он в смысле что логику софта будет делать отдельный программист, а периферия контроллера и драйвера всего железа на мне. Раньше все делал сам и таких вопросов не возникало.

Собственно вопрос - как бы сделать это дело двумя отдельными проектами, собираемыми вместе при компиляции?

Проект пилится на FreeRTOS и программисту нужны именно файлы с задачами, он их будет отлаживать на компьютере (там много сложной логики, интерфейса, протоколов и прочего независимого от железа фарша). И если Keil мог линковать файлы из любой папки, но этот долбаный Эклипс не желает знать ничего выше корня проекта.

Вариант с перетаскиванием и копированием файлов вручную точно не годится, в нем я сам потеряюсь, а вдвоем мы вообще потонем моментально. Хочется как у взрослых программистов - с контролем версий, портируемостью и прочими цацками. :) Короче чтоб было два отдельных проекта в воркплейсе и общие файлы могли собираться в каждом из них.

В общем подскажите кто как делит сферы влияния?

Share this post


Link to post
Share on other sites

У меня вот так (если интересно):

в воркспейсе несколько проектов такого типа: 5 генерирующих на выходе библиотечные файлы (lib*.a), а один бинарный для контроллера. Последний проект имеет в своих "Свойствах" ссылки ("References") на все другие;

Вы можете сделать 2 различных проекта:

один свой "низкоуровневый" с ОС внутри и с генерацией исполняемого файла (бинарника для контроллера) где Вы будете его отлаживать и т.п.;

а второй проект, тоже генерирующий исполняемый файл, для программиста, должен ссылаться на первый (в "Свойствах") и не содержать в себе файлы ОС, а инклюдить ее с первого. Также объявлять заранее все функции-задачи из первого проекта какие нужны.

Насчет "с контролем версий, портируемостью и прочими цацками" (если вообще тут нужно) это уже нужно соотв. плагин выбрать из "MarketPlace" и загрузить наверно.

Вообще, с таким подходом к среде ("долбаный Эклипс" и т.п.) - ничего путного не получится. Нужно успокоиться/использовать др. вариант/или же написать свою среду для работы тут.

И еще (опять насчет того как у меня) - я еще, тут (в STM32CubeIDE), наладил/сделал себе возможность прямо в среде писать программы и для ПК (например утилитка загрузки/замены "основной" прошивки через заранее загруженный загрузчик в МК у меня также тут в этой среде написана/отлаживается и пр.). Это я к тому, что может Ваш программист "будет отлаживать на компьютере" как Вы писали и может пригодится эта информация.

Share this post


Link to post
Share on other sites

Пофиг какая IDE. Сейчас все поддерживают git.

Делаете два репозитария. В каждом права на запись только для одного работника умственного труда, а второму (и остальным) на чтение.

Затем каждый работник с своем репозитарии делает .gitmodules на остальные репозитарии.

И начинаете пальцами собирать из букв слова, а из слов - программу.

Каждый в своем репо.

github для примера.

Share this post


Link to post
Share on other sites

Да, в вашем случае, естественный выбор - это субмодули Git (как x893 и порекомендовал выше). Ваш репозиторий с драйверами и прочим низкоуровневым добром должен стать субмодулем (суб-репо) в составе дерева папок в другом репозитории - для исходников уровня приложения и FreeRTOS. Каждый может до поры, до времени работать независимо.

Share this post


Link to post
Share on other sites
On 7/19/2020 at 12:38 AM, Fox_Sanchez said:

И если Keil мог линковать файлы из любой папки, но этот долбаный Эклипс не желает знать ничего выше корня проекта.

Не правда. Вы просто что-то делаете не так. Надо разобраться. В Eclipse можно подключать как исходники так и библиотеки из любой папки.

Share this post


Link to post
Share on other sites

Из любой папки получалось только по абсолютному пути. Относительные не понимает.

В общем пока решили все скинуть в один репозиторий, а дальше посмотрим. Будет надобность - будем делить на модули.

Share this post


Link to post
Share on other sites
3 hours ago, Fox_Sanchez said:

Из любой папки получалось только по абсолютному пути. Относительные не понимает.

В общем пока решили все скинуть в один репозиторий, а дальше посмотрим. Будет надобность - будем делить на модули.

Нужно заставить себя 30 минут прочитать руководство по git. Всё делается с полпинка.

Share this post


Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.