-
- Вот тут обсуждают что-то похожее. Инлайн асм конфликтует с
компилятором. И предлагаются способы, как всё это примирить
>>> SciFi(1 знак., 20.05.2023 12:46, ссылка)
- Да, надо с индайн ассемблером рещать GenasSPB(8 знак., 22.05.2023 23:23, , ссылка)
- Находил. Проблема в том, что не могу увидеть, найти файл с кодом, где ошибка. - Nikolay_Po(20.05.2023 13:39)
- на электрониксе похожее обсуждали m16(1 знак., 20.05.2023 12:37, ссылка)
- Спасибо, этой ссылки не видал. Но -save-temps не помогло мне
обнаружить файлы с именами, указанные в сообщении об ошибке. - Nikolay_Po(20.05.2023 13:45)
- Теоретически можно процесс сборки сделать через генерацию asm в
явном виде. Так-то gcc делает это сам и подчищает за собой. - SciFi(20.05.2023 15:55)
- А не проще вообще убрать все ассемблерные файлы? Все равно они не
нужны. Если какую-то операцию нельзя сделать без асма (те же NOP,
WFI и т.п.), можно обойтись дефайнами с асмовыми вставками (но оно
и так есть в CMSIS). - Eddy_Em(20.05.2023 16:07)
- Как я понял, достаточно в ассемблерных вставках заменить "LDR Rn,
=CONST" на MOVW/MOVT. - SciFi(20.05.2023 16:39)
- Хорошо. Вроде продвинулся. Поискал среди файлов - в проекте нет ни
одного чисто ассемблерного файла *.s. Но нашёл ассемблерные вставки
в exception-handlers.c, что-то вроде такого: Nikolay_Po(1014 знак., 20.05.2023 18:18)
- Я бы переписал это безобразие на Си (с интринсиками CMSIS) и не
парился. Вообще асм для кортексов - пОшло. LightElf(66 знак., 20.05.2023 23:43)
- Вариант скиньте, интересно. Насчёт ассемблерных вставок - это было
сделано Liviu Ionescu и сподвижниками для µOS++, только что
поискал, оно по ссылке и, вроде развивается тем же человеком. Nikolay_Po(399 знак., 21.05.2023 01:54, ссылка)
- Ну вот как-то так. Оно под иар, но интринсики в CMSIS одинаковые. LightElf(777 знак., 22.05.2023 17:30)
- Спасибо. Самая большая проблема - я не знаю подробностей работы
GCC, make, линкера и прочих программ инструментария. И не знаю
подробностей работы с отладкой, от чего она зависит и как потом
выпилить в редизе. Nikolay_Po(189 знак., 22.05.2023 20:59)
- Обычно для выпиливания в релизе принято обкладывать макросами LightElf(40 знак., 22.05.2023 21:27)
- Спасибо. Самая большая проблема - я не знаю подробностей работы
GCC, make, линкера и прочих программ инструментария. И не знаю
подробностей работы с отладкой, от чего она зависит и как потом
выпилить в редизе. Nikolay_Po(189 знак., 22.05.2023 20:59)
- Предложу посмотреть --> Vit(2 знак., 21.05.2023 06:51, ссылка, ссылка)
- Спасибо. Занятно. Релиз этой ОСРВ вышел 5 часов назад. Касательно
моего случая - не подходит. У них другая среда разработки, а терять
пару дней на то, чтобы понять, как заставить это взлететь в Eclipse
CDT у меня нет возможности. Но за ссылку спасибо. В текущей части
проекта, многозадачность обеспечивается довольно гибким
контроллером прерываний. Но для следующей части уже присматриваю
ОСРВ. - Nikolay_Po(21.05.2023 09:03)
- Я вообще-то о коде без асма:) Хотя переключалка сама по себе
занятная. - Vit(21.05.2023 10:08)
- Нет, там как у всех. Стартап есть, он в папке third_party.
Например: 3rd_party/nucleo-c031c6/arm/startup_stm32c031xx.s Nikolay_Po(23 знак., 21.05.2023 11:16)
- стартапы си-шные прямо в CMSIS-5 лежат Vit(166 знак., 21.05.2023 11:42, ссылка)
- Спасибо. Посмотрю. Просто в шаблоне проекта, который я использовал, предусмотрены "хардфолты" и "ассерт". Обработчики аппаратных ошибок, я, обычно на последних этапах проекта сам прописываю, ещё не дошёл. А ассерт не использую - у меня структуры данных и проверки при изменении значений, надеюсь, исключают ошибки. Так что, скорее всего, можно создать проект с нуля, со свежим CMSIS и просто перекидать в него мои исходники. Посмотрим, пока не критично, работает и так. - Nikolay_Po(21.05.2023 21:38)
- стартапы си-шные прямо в CMSIS-5 лежат Vit(166 знак., 21.05.2023 11:42, ссылка)
- Нет, там как у всех. Стартап есть, он в папке third_party.
Например: 3rd_party/nucleo-c031c6/arm/startup_stm32c031xx.s Nikolay_Po(23 знак., 21.05.2023 11:16)
- Я вообще-то о коде без асма:) Хотя переключалка сама по себе
занятная. - Vit(21.05.2023 10:08)
- Спасибо. Занятно. Релиз этой ОСРВ вышел 5 часов назад. Касательно
моего случая - не подходит. У них другая среда разработки, а терять
пару дней на то, чтобы понять, как заставить это взлететь в Eclipse
CDT у меня нет возможности. Но за ссылку спасибо. В текущей части
проекта, многозадачность обеспечивается довольно гибким
контроллером прерываний. Но для следующей части уже присматриваю
ОСРВ. - Nikolay_Po(21.05.2023 09:03)
- Ну вот как-то так. Оно под иар, но интринсики в CMSIS одинаковые. LightElf(777 знак., 22.05.2023 17:30)
- Вариант скиньте, интересно. Насчёт ассемблерных вставок - это было
сделано Liviu Ionescu и сподвижниками для µOS++, только что
поискал, оно по ссылке и, вроде развивается тем же человеком. Nikolay_Po(399 знак., 21.05.2023 01:54, ссылка)
- Кстати, если LTO используется только для тестирования, можно включить -mslow-flash-data. Компилятор перестанет использовать LDR для констант (заменит их на MOVW/MOVT) и, будем надеяться, перестанет конфликтовать с ассемблерными вставками. - SciFi(20.05.2023 18:59)
- Предлагаю попробовать вариант, взятый из статьи по ссылке: SciFi(120 знак., 20.05.2023 18:46, ссылка)
- Спасибо! Даже Спасибище! За ссылку на фантастически релевантную и
достоверную информацию от первоисточника. Вручную прошёлся по файлу
со вставками. В четырёх местах заменил. Сработало! Сборка успешна,
правда, проверить в действии смогу только на работе, в понедельник. Nikolay_Po(236 знак., 20.05.2023 20:50)
- И как? Фурычит? - SciFi(22.05.2023 21:01)
- Фурычит, без вопросов. LTO работает, код жмётся и ускоряется,
нареканий к работе кода нет. - Nikolay_Po(30.05.2023 10:31)
- Ура! - SciFi(30.05.2023 10:32)
- Та, забыл что у нас с начала недели пусконаладка на выезде, в офисе
бываю лишь инструмент захватить. Даст Бог до конца недели проверю. - Nikolay_Po(24.05.2023 15:45)
- Коньяк можно проставить непосредственно в пустыню. - Kpoк(30.05.2023 11:44)
- Фурычит, без вопросов. LTO работает, код жмётся и ускоряется,
нареканий к работе кода нет. - Nikolay_Po(30.05.2023 10:31)
- И как? Фурычит? - SciFi(22.05.2023 21:01)
- Спасибо! Даже Спасибище! За ссылку на фантастически релевантную и
достоверную информацию от первоисточника. Вручную прошёлся по файлу
со вставками. В четырёх местах заменил. Сработало! Сборка успешна,
правда, проверить в действии смогу только на работе, в понедельник. Nikolay_Po(236 знак., 20.05.2023 20:50)
- Я бы переписал это безобразие на Си (с интринсиками CMSIS) и не
парился. Вообще асм для кортексов - пОшло. LightElf(66 знак., 20.05.2023 23:43)
- Хорошо. Вроде продвинулся. Поискал среди файлов - в проекте нет ни
одного чисто ассемблерного файла *.s. Но нашёл ассемблерные вставки
в exception-handlers.c, что-то вроде такого: Nikolay_Po(1014 знак., 20.05.2023 18:18)
- Как я понял, достаточно в ассемблерных вставках заменить "LDR Rn,
=CONST" на MOVW/MOVT. - SciFi(20.05.2023 16:39)
- А не проще вообще убрать все ассемблерные файлы? Все равно они не
нужны. Если какую-то операцию нельзя сделать без асма (те же NOP,
WFI и т.п.), можно обойтись дефайнами с асмовыми вставками (но оно
и так есть в CMSIS). - Eddy_Em(20.05.2023 16:07)
- Возможно еще -S надо добавить - AlexBi(20.05.2023 15:15)
- На каком этапе добавить -S? Какому приложению? - Nikolay_Po(20.05.2023 17:51)
- Теоретически можно процесс сборки сделать через генерацию asm в
явном виде. Так-то gcc делает это сам и подчищает за собой. - SciFi(20.05.2023 15:55)
- Спасибо, этой ссылки не видал. Но -save-temps не помогло мне
обнаружить файлы с именами, указанные в сообщении об ошибке. - Nikolay_Po(20.05.2023 13:45)
- Вот тут обсуждают что-то похожее. Инлайн асм конфликтует с
компилятором. И предлагаются способы, как всё это примирить
>>> SciFi(1 знак., 20.05.2023 12:46, ссылка)