LINUX.ORG.RU

Средства разработки, которые мы заслужили...

 , , ,


1

7

Привет, ЛОРчане!

А вам не кажется, что со средствами разработки в последнее время творится что-то странное или даже страшное?

В общем делюсь своей историей «успеха».

Не так давно создатели SDCC добавили новый стандарт вызова процедур, ломающий обратную совместимость со старым ассемблерным кодом. Причем добавили они его в версии SDCC 4.2.0, то есть сломали совместимость в минорщине…

И вот 29 декабря прошлого года я решил, что на текущих выходных не буду заниматься проприетарщиной на фрилансе, а внесу соответствующие изменения в порт BuguRTOS на stm8/sdcc. Сами ассемблерные вставки я поправил ещё 29-го перед корпоративом, а вчера решился внести изменения в код ОС, поднять всё, что нужно для разработки и тестирования имбедов на своём ноуте с debian bullseye (inb4 некрофилия), и протестировать BuguRTOS на реальном железе, ибо грядёт релиз.

В общем, включил ноут, запустил git-gui, чтобы склонировать репу с Гитхаба и…

Тут меня ждали первые грабли

Название ветки master по дефолту депрекейтед и вообще не политкорректно, меняй дефолтное название ветки, ибо белые цисгендерные гетеросексуальные шовинистические членомрази должны страдать!

Ладно, сделал git clone из консоли, начал ставить инструметы для разработки и тестить.

Под AVR все тесты удачно собрались штатными avr-gcc и avr-binutils, запустились на штатном simavr с отладкой через штатный avr-gdb, загрузились штатным avrdude и удачно отработали на старенькой Arduino(tm) nano.

Отладка работает быстро.

На Cortex-Mх меня ждали следующие грабли

Пакет stlink в debian oldstable оказался стабильно глючный: точки останова не ставятся, дисасм не работает и т.д.

Пол дня пытался подобрать команды gdb в попытках заставить отладку работать. В итоге скачал с GitHub васянскую сборку от создателей пакета, поставил, отладка заработала сразу же со старыми проверенными командами gdb!

Третьи грабли встретились мне на rp2040

Использую VSCodium вместо VSCode, дабы избежать «телеметрии». Установка cortex-debug и ms-vscode.cmake-tools прошла успешно, а вот комада:

codium --install-extension ms-vscode.cpptools

выдала

Installing extensions...
Extension 'ms-vscode.cpptools' not found.
Make sure you use the full extension ID, including the publisher, e.g.: ms-dotnettools.csharp
Failed Installing Extensions: ms-vscode.cpptools

и такая проблема не только у меня.

Ладно, на сборку и отладку это не повлияло, но осадочек остался.

Да, кстати

Отдадка на rp2040 через старую версию picoprobe под vscodium работает гораздо быстрее, чем на любом stm32 через stlink под Code::Blocks.

Четвёртые грабли ждали меня… правильно на stm8 и sdcc

В debian bullseye стоит SDCC-4.0.0 и нет пакета stm8flah.

В общем, stm8flash собрал из исходников, протестил ОС на старой версии компилятора.

Дальше скачал SDCC-4.3.0 и Code::Blocks под Офтопик, и перешёл в виртуалку с офтопиком 10, поставил тулчейн, IDE, st-toolset для прошивки, стал собирать и «заливать» тестовые проекты на Discovery…

И один из проектов не собирается ни в какую, т.е. на SDCC-4.0.0 в debian собирался, а тут sdccld посчитал, что мои статики не статики и ругается на множественные определения функций!

Все остальные тестовые проекты, отличающиеся только файлом main.с, собрались и успешно отработали, т.е. ассемблерные вставки были написаны без ошибок в слепую перед корпоративом.

Итого

Вместо того, чтобы поставить средства разработки и протестировать BuguRTOS за ПОЛ дня я протахался ДВА!!!

Из-за множественных ошибок в средствах разработки!

Кто из вас сталкивался с чем-то подобным?

Напишите в комментариях, что вы на этот счёт думаете, и поделитесь своими историями «успеха».

★★★★★

Последнее исправление: shkolnick-kun (всего исправлений: 1)

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

dimgel ★★★★★
()

ломающий обратную совместимость

Да так везде. Люди думают что проблемы обратной совместимости покрываются документацией. Мол «Ну и чё мол что сломали, вот же написано как по новому, всё можно учесть» типо это нормально. Потом эти же люди что-то говорят о легаси, потом другие лалки подзаборные легаси высмеивают.Те кто гонится за псевдочистотой кода, за совершенной рахитектурой вопреки всему и кричат что вокруг вонючее легаси от котрого надо избавляться и есть генераторы легаси кода.

Создать платформу XYZ, люди пишут мегатонны кода под неё, взять и сказать что

  • foo_xxx_bar() moved to foo_yyy_bar
  • FLAG_XXX_YYY removed use get_xxx_yyy() func instead

Привет мегатонны легаси кода, привет проекты типа XYZ_COMPAT привет, привет, привет.
А потом этих же разработчиков спрашивают, а зачем вы поменяли,удалили, изменили? А они
отвечают что вычищали код от легаси. Лооооооооооооооооооооооооооооооооооооол.

Ладно когда ты сам себе пишешь, можешь ломать как и что угодно. Но когда ты платформа, я хз.
Не надо быть ситхом и оставлять шаги для манёвров. Ибо как я уже сказал упрямая погоня за чистотой кода,
неизбежно рождает то самое «наследние» которого тем больше, чем больше стремление разработчика платформы делать свой код чистым. У себя убрался, а мусор соседу в окно высыпал.

Жоооооопа гариттт

LINUX-ORG-RU ★★★★★
()

Кто из вас сталкивался с чем-то подобным?

Я тут на днях узнал, что приняли новый стандарт – c++20. И там уже делать i++ для volatile-переменной - deprecated. Пришлось в куче мест вместо банального i++ писать i = i + 1;.

Ещё помню случай, когда размер time_t «подрос» при обновлении arm-none-eabi-gcc с 4 байтов до 8.

Короче, стараюсь пореже обновлять тулчейны.

Beewek ★★
()
Ответ на: комментарий от LINUX-ORG-RU

Ладно когда ты сам себе пишешь, можешь ломать как и что угодно. Но когда ты платформа, я хз.

Может это потому что все торопятся выкатить платформу в паблик, не удосужившись сначала хорошенько обкатать её приватненько. Хотя кого я обманываю: обкатывай-не обкатывай, что-нибудь да вылезет. UPD: Особенно в процессе дальнейшего навешивания фичей ака развития, которое, как известно, без рефакторингов не обходится.

Жоооооопа гариттт

И тебе два чая. Остывших. Ты знаешь что делать.

dimgel ★★★★★
()
Последнее исправление: dimgel (всего исправлений: 1)

<моё окружение разработки невоспроизводимо, зависимости не заморожены, и вообще оно состоит из двух дней установки чего попало куда попало из исходников. почему же так сложно его настроить заново?>

Кто бы знал, бро, кто бы знал.

Использую VSCodium вместо VSCode, дабы избежать «телеметрии». Установка cortex-debug и ms-vscode.cmake-tools

И как, греет душу открытость редактора при закрытых аддонах? Не дури, используй настоящий редактор.

t184256 ★★★★★
()
Ответ на: комментарий от t184256

И шо к виму можно прикрутить многооконность, если так можно выразится, дебагер, точки остановки, дополнения и прочие прелести ide?

А идея на эту тему ничего не производит интересного?

Ygor ★★★★★
()
Ответ на: комментарий от dimgel

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

Может это потому что все торопятся выкатить платформу в паблик

Не всегда, иногда просто ломают API потому что вот эта вот функция с другим названием выглядит лучше, или вызов функции перемещён в более подходящий модуль. Да никто не спорит что оно так действительно лучше, но блин :3

LINUX-ORG-RU ★★★★★
()
Последнее исправление: LINUX-ORG-RU (всего исправлений: 1)
Ответ на: комментарий от LINUX-ORG-RU

Дык надо конкретные версии name.so.N линковать, а не тупо name.so. Ну и разрабы не должны ломать API в минорах. А девушки, соответственно, должны пукать радугой и какать бабочками.

dimgel ★★★★★
()
Ответ на: комментарий от Ygor

И шо к виму можно прикрутить многооконность, если так можно выразится, дебагер, точки остановки, дополнения и прочие прелести ide?

можно, и даже работать будет, только через анус. Если погуглить, то вим обещает неверояные возможности, тут тебе и LSP, и линтеры и дебаггеры - все есть. Но как только попробуешь с этим работать - огонь из жопы гарантирован, это нищета и убогость. Возможности рефактроринга по сравнению с ИДЕшками смехотворны, интеграция с гитом в зачаточном состоянии, сматр-функции навроде автоимпорта стандартно не работают. То есть оно как бы должно работать согласно документации, но не работает. А почему? Да бог его знает, колупай конфиги пока голова не отвалится, а может это просто баг. Такого чтобы просто взять, поставить галочку и оно заработало в мире вима не бывает. Да имакс такое же гавно

FishHook
()
Ответ на: комментарий от naushniki

Это не он неправильно его использовал, а с++ стандартизаторы неправильно его понимают. Впрочем, плевать, с++ всё равно непригоден для низкоуровневого кода.

firkax ★★★★★
()
Ответ на: комментарий от FishHook

Нет.

  • Первая проблема связана с SJW и отменой слова master.
  • Вторая - упавшее примерно после введения системГ качество тестирования пакетов в debian.
  • Третья проблема в VSCode и его форках.
  • Четвёртая и нулевая проблемы в SDCC.

т.е. только одна проблема связана с debian.

shkolnick-kun ★★★★★
() автор топика
Ответ на: комментарий от shkolnick-kun

Первая проблема связана с SJW и отменой слова master.

это не проблема, это твои личные предпочтения, это никак не блокирует работу с инструментом

Третья проблема в VSCode и его форках.

который ты установил из репы дебиана

Вторая - упавшее примерно после введения системГ качество тестирования пакетов в debian.

«после» не значит «в следствие», но в любом случае, это же проблема Дебиана, правда?

Четвёртая и нулевая проблемы в SDCC.

И первой строкой описания проблемы ты написал

«В debian bullseye стоит SDCC-4.0.0 и нет пакета stm8flah.» - нифига ниразу не проблема Демьяна, правда?

FishHook
()
Ответ на: комментарий от Beewek

Это кстати один из поводов забить на ISO, ибо они неведомую фигню творят. Либо кодить на старых плюсах от ISO (98, 03, 11), либо какой-нибудь GNU C++.

Это уже ни в какие ворота не лезет.

zx_gamer ★★
()
Ответ на: комментарий от t184256

Нет.

  • Code::Blocks - из debian;
  • Тулчейн avr - из debian;
  • Тулчейн arm-none-eabi - из debian;
  • Тулчейн sdcc-4.0.0 - из debian;
  • stlink изначально был из debian, потом пришлось заменить на сборку от авторов, и вместо него можно поставить openocd из debian, но мне лень перенастраивать параметры отладки в Code::Blocks.

Всё остальное было поставлено либо не в debian (от этого не уйти, iar и raisonance не работают в GNU/Linux), либо в соответствии с документацией

И как, греет душу открытость редактора при закрытых аддонах?
  • оба поставленных расширения vscode с открытыми исходниками:
shkolnick-kun ★★★★★
() автор топика
Последнее исправление: shkolnick-kun (всего исправлений: 1)
Ответ на: комментарий от FishHook
это не проблема, это твои личные предпочтения, это никак не блокирует работу с инструментом

Это не проблема ровно до момента появления пикрил

который ты установил из репы дебиана

Можно без него. openocd и gdb-multiarch прекрасно работают из консоли.

Кстати, с vscodium проблем не было.

нифига ниразу не проблема Демьяна, правда?

А я и не говорил, что это проблема debian. Это проблема SDCC-4.3.0.

shkolnick-kun ★★★★★
() автор топика
Последнее исправление: shkolnick-kun (всего исправлений: 2)
Ответ на: комментарий от zx_gamer

Это кстати один из поводов забить на ISO, ибо они неведомую фигню творят.

В своих приложениях можно и забить, не страшно. А вот в случае, когда ты поддерживаешь библиотеку (такую, как встраиваемую ОСРВ), желательно всё-таки поддерживать максимально широкий набор тулчейнов. Вот и крутимся.

Beewek ★★
()
Ответ на: комментарий от Werenter

например не надо писать struct X name, достаточно просто X name

Это и в Си не надо. Только в Си, в отличие, это чётко регламентируется typedef-ом, вместо С++ каши.

Классами и RAII.

То есть кучей неявного кода, что для низкоуровневой разработки совершенно нежелательно.

firkax ★★★★★
()

Подожденный анус - типичное состояние при старте нового проекта. Это ты ещё с блевадой и микроблейзом не сталкивался.

SDCC вообще штука особенная. Он очень разный для разных платформ, под avr не использовал ни разу.

aiqu6Ait ★★★★
()
Последнее исправление: aiqu6Ait (всего исправлений: 1)
Ответ на: комментарий от aiqu6Ait

Да это понятно. Но если посмотреть на классические МК (без MMU и проч., на которых полноценную ОС типа Linux не завести), для них Линукс как хост систему не особо понятно, зачем использовать, когда есть все эти инструменты Keil, IAR, STM IDE и проч. в которых всё интегрировано и предусмотрено.

seiken ★★★★★
()
Ответ на: комментарий от Beewek

Пришлось в куче мест вместо банального i++ писать i = i + 1;.

Теперь можно тралить c++20цатников лувой :D

А если серьёзно, это выглядит странно. Но да ладно.

LINUX-ORG-RU ★★★★★
()
Последнее исправление: LINUX-ORG-RU (всего исправлений: 1)
Ответ на: комментарий от LINUX-ORG-RU

c++20цатников лувой :D

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

Ygor ★★★★★
()