Перейти к содержанию
    

STM32 CubeIDE Как обращаться нагенерированным кодом

Добрый день!

Хотелось бы узнать, как поступаете с кодом, который генерирует CubeIDE. Работаете в рамках, заданных генератором, сохраняете возможность перегенерировать? Генератор очень удобный для старта проекта, но у меня возникает желание создать чистый проект без зависимости от код-генератора и туда уже ручками всё переносить и допиливать.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

2 hours ago, Pjotar said:

Добрый день!

Хотелось бы узнать, как поступаете с кодом, который генерирует CubeIDE. Работаете в рамках, заданных генератором, сохраняете возможность перегенерировать? Генератор очень удобный для старта проекта, но у меня возникает желание создать чистый проект без зависимости от код-генератора и туда уже ручками всё переносить и допиливать.

Код генерируется, добавляю что мне нужно. Потом поправляю в кубе и по циклу.
/* USER CODE ...*/

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

3 часа назад, Pjotar сказал:

и туда уже ручками всё переносить и допиливать.

Допиливать Куб - дело муторное. Его можно либо принять таким как есть, либо послать на и в и написать своё, благо оно легко пишется.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

генерируется проект с необходимой основой. ставим синхронизацию какая нужна. назначаем ножки по максимуму. говорим что нужно пара таймеров и пара уартов. заходим в их конфигурации. обязательно говорим что нужно swd. смотрим и разрешаем прерывания таймеров и уартов . и все. хорошая основа. 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Возможно, топикстартера не устраивает стиль оформления текста, способ компоновки файлов. Например, меня тоже оное вообще не устраивает, поэтому я вообще не пользуюсь Кубом. Потому как начинал с STM еще задолго до того, как появился Куб вообще.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

1 hour ago, EdgeAligned said:

Возможно, топикстартера не устраивает стиль оформления текста, способ компоновки файлов. Например, меня тоже оное вообще не устраивает, поэтому я вообще не пользуюсь Кубом. Потому как начинал с STM еще задолго до того, как появился Куб вообще.

Шашечки, или ехать. Каждый решает сам.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Ну со стилем и структурой проекта можно потерпеть, а вот функционально что меня выбило сегодня из колеи - это нагенированный код инициализации, который в случае ошибки вызывает функцию HandleErorr() без аргументов. Вызывает из двадцати мест, без указания там кода ошибки. И я такой секундочку, я хочу передать в эту функию код ошибки и как-то там ножкой просигналить. Ну вот необходимость нагенерированный код переписать.

Ну я заподозрил, что генератор этот чисто как помошник, шпаргалка, генератор примеров, а потом из генератора ташится всё в проект.

Интересно ещё, как собираются проекты в энетрпрайзе? Там же должны быть билдсервера, автотестирование... Проект куба без IDE я так понимаю не очень собирается... там же IDE генерирует makefile вроде?

Just now, x893 said:

Код генерируется, добавляю что мне нужно. Потом поправляю в кубе и по циклу.
/* USER CODE ...*/

ну вот и мне снача хотелось оставить нагенерированный код как есть, вставить в него просто вызовы своих задач и не трогать больше. только засомневался, работает ли это так, или на практике всё ручками перелопачивать

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

У этого кодогенератора была хорошая и правильная задумка, да вот реализация подвела.

Странно, что вас смущает только вызов ф-ции ошибки. А переписывать кубовский код - себе дороже. Он очень сильно интегрирован, сильно связан разнообразными зависимостями.

Раньше, до 2019 года был отдельный кодогенератор CubeMX, который генерировал код для выбираемой в настройках IDE. Потом, когда ST купили Atollic, они его изгадили и впихнули в него свой кодогенератор, и впихнули так же криво и косо. И теперь сиё творение зовется CubeIDE. И поэтому начинка Куба очень сильно ввязана в проект.

Автотестирование? Ха. К сожалению, в CubeIDE (если не ошибаюсь) так и не удосужились внедрить инструментарий юнит-тестов.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

34 minutes ago, EdgeAligned said:

до 2019 года был отдельный кодогенератор CubeMX

Как был - так и остался.

34 minutes ago, EdgeAligned said:

К сожалению, в CubeIDE (если не ошибаюсь) так и не удосужились внедрить инструментарий юнит-тестов.

Это только продвинутым менеджерам нужно. Поэтому они и несчастливы.

41 minutes ago, Pjotar said:

который в случае ошибки вызывает функцию HandleErorr() без аргументов. Вызывает из двадцати мест, без указания там кода ошибки. И я такой секундочку, я хочу передать в эту функию код ошибки и как-то там ножкой просигналить. Ну вот необходимость нагенерированный код переписать.

Error_Handler. И можно сделать её как угодно. Всё в руках создателя.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

8 минут назад, x893 сказал:

только продвинутым менеджерам нужно. Поэтому они и несчастливы.

Да. Счастливые тестов не наблюдают (не делают).

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

21 hours ago, x893 said:

Error_Handler

И как в ней получить название вызвавшей функции или как-то ещё понять что за ошибка? Типа стектрейса что-то...

Если получится решить этот вопрос - останусь пока в рамках, установленных генератором

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Название (имя) функции - вообще никак. Имена функций, переменных и прочего не содержатся в прошивке. 

Хотя, чисто технически, при использовании механизмов assert, в код может внедряться информация об именах файлов и номерах строк, соотвествующих проверяемым условиям assert. Это доступно в режиме FULL_ASSERT.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

On 2/2/2024 at 9:24 PM, Pjotar said:

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

Напишите индусам о своих желаниях. Возможно, они снизойдут до их воплощения. Они уже много лет не исправляют ошибки в ХАЛе. Есть целые сайты с этим, поищите на досуге.

 

Всё, что можно сделать малой кровью, это извлечь из стэка адрес, с которого вызвали Error_Handler(), чтобы в дизассме посмотреть адрес. Ну и __LINE__, __FILE__ и __func__ в помощь.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

3 часа назад, tonyk_av сказал:

Всё, что можно сделать малой кровью, это извлечь из стэка адрес, с которого вызвали Error_Handler()

..."извлекать из стека" то, чего там может и не быть - так себе идея.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Написать свой кодогенератор, с блэкджеком и прочими аттрибутами.

Куб использует фреймворк FreeMaker (об этом написано в документации), вся информация в xml-ках.

Можно совместить "обманчивую красоту таких систем" и собственные представления о правильности вещей.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

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

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...