- 
	- Решение тут (опять нарвался, пришлось искать на Сахаре свою же тему): Nikolay_Po(1 знак., 15.09.2023 16:44, ссылка)
- Никогда такого не было, и вот опять! Error: lto-wrapper failed.
Offset out of range. Теперь уже со свежим "Arm GNU Toolchain
12.2.Rel1 (Build arm-12.24)) version 12.2.1 20221205
(arm-none-eabi)".  Nikolay_Po(2729 знак., 20.05.2023 11:48)
			- Вот тут обсуждают что-то похожее. Инлайн асм конфликтует с
компилятором. И предлагаются способы, как всё это примирить
>>>  SciFi(1 знак., 20.05.2023 12:46, ссылка)
					- Да, надо с индайн ассемблером рещать  GenasSPB(8 знак., 22.05.2023 23:23,  , ссылка) , ссылка)
- Находил. Проблема в том, что не могу увидеть, найти файл с кодом, где ошибка. - Nikolay_Po(20.05.2023 13:39)
 
- Да, надо с индайн ассемблером рещать  GenasSPB(8 знак., 22.05.2023 23:23, 
- на электрониксе похожее обсуждали  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, ссылка)
					
- Подниму старую тему: ради интереса включил LTO и то же получил Error: offset out of range Компилятор gcc-arm-none-eabi-9-2019-q4-major-win32 с сайта АРМ. Есть ли в природе сборка arm-gcc-9 или 10, которая
"могёт"?  - Cидopгeк(01.04.2020 15:52)
			- Во-первых, не факт, что это бага. А во-вторых, нет ли по ссылке
решения? >>> - SciFi(01.04.2020 15:56, ссылка)
					- Спасибо! Таки, да, виноват не компилер. Инлайн-ассемблерный код в
ядре FreeRTOS (port.c) транслируется в короткие джампы, которые "не
достают" до места назначения, если включена LTO. И, да, по ссылке
есть решение (по крайней мере, проект транслируется).  - Cидopгeк(01.04.2020 16:16 - 16:25)
							- Как в анекдоте про две новости, хорошую и плохую: хорошая -
бинарник с 213 уменьшился до 181 килобайта. Плохая - будучи залита
в железо, программа падает в WWDG_IRQHandler, хотя вотчдог не
использую. Пойду гуглить ... - Cидopгeк(01.04.2020 16:23)
									- Если там 200 КБ реального кода, LTO может поднять из глубин тонны
навоза :-) - SciFi(01.04.2020 16:26)
											- Кода там килобайт 100, остальное JQuery.js. Насчет тонн навоза,
согласен. Вопрос, как его отлаживать?  - Cидopгeк(01.04.2020 16:39)
													- Хороший вопрос... Ответ: долго и мучительно. Или забить на LTO. - SciFi(01.04.2020 16:39)
															- Если б то был мой код, чес.слово, полез бы искать. Но там в
основном FreeRTOS + LwIP с альтернативным WEB-сервером, так что
наверное забью. - Cидopгeк(01.04.2020 16:44)
																	- Ставь только -Os и всё, больше никаких параметров не передавай. Компилятор сам решит чем там лучше оптимизировать, т,к. ряд флагов противоречивы или даже не совместимы. Для "релиза" вполне себе компактно и работоспособно. - POV(20.05.2023 17:54)
- Кстати, есть у меня прошивки с LTO, там же lwip, но нету freertos. Кода из исходников где-то на 80 КБ вместе с lwip. Так что можно считать, что lwip держится молодцом, наверное. - SciFi(01.04.2020 16:52)
 
 
- Если б то был мой код, чес.слово, полез бы искать. Но там в
основном FreeRTOS + LwIP с альтернативным WEB-сервером, так что
наверное забью. - Cидopгeк(01.04.2020 16:44)
																	
 
- Хороший вопрос... Ответ: долго и мучительно. Или забить на LTO. - SciFi(01.04.2020 16:39)
															
 
- Кода там килобайт 100, остальное JQuery.js. Насчет тонн навоза,
согласен. Вопрос, как его отлаживать?  - Cидopгeк(01.04.2020 16:39)
													
 
- Если там 200 КБ реального кода, LTO может поднять из глубин тонны
навоза :-) - SciFi(01.04.2020 16:26)
											
 
- Как в анекдоте про две новости, хорошую и плохую: хорошая -
бинарник с 213 уменьшился до 181 килобайта. Плохая - будучи залита
в железо, программа падает в WWDG_IRQHandler, хотя вотчдог не
использую. Пойду гуглить ... - Cидopгeк(01.04.2020 16:23)
									
 
- Спасибо! Таки, да, виноват не компилер. Инлайн-ассемблерный код в
ядре FreeRTOS (port.c) транслируется в короткие джампы, которые "не
достают" до места назначения, если включена LTO. И, да, по ссылке
есть решение (по крайней мере, проект транслируется).  - Cидopгeк(01.04.2020 16:16 - 16:25)
							
 
- Во-первых, не факт, что это бага. А во-вторых, нет ли по ссылке
решения? >>> - SciFi(01.04.2020 15:56, ссылка)
					
- И что бы вы думали? С тщательно пропатченным gcc-8.2.1-1.7-20190524 от Liviu Ionescu всё работает!  Nikolay_Po(533 знак., 14.02.2020 11:37)
			- не устану цитировать светоча "ты некомпетентен, обвиняешь святой gcc в своей тупости, вон из профессии" (с) fk0 - POV_(14.02.2020 12:54,  ) )
- А без LTO какой размер? Может просто его выключить? - Andreas(14.02.2020 11:50)
					- Так и поступал. Хватало, но объём обработки большой и с LTO запасов по-больше, поспокойнее. Например, O2 без LTO уже недостаточно (или пришлось бы ухудшать ТТХ прибора). - Nikolay_Po(14.02.2020 11:58)
							- А в грамммах сколько c Os ? - Andreas(14.02.2020 11:59)
									- Что вы хотите узнать? У меня данные с АЦП нужно забирать быстро, они постоянно затираются следующими через DMA. И без оптимизации (правда, безотносительно LTO), происходят накладки.  Nikolay_Po(820 знак., 14.02.2020 12:28)
											- Спасибо, это и интересовало. Выходит около 1% экономии, но при этом потенциальные проблемы с LTO. И эти проблемы были давно и возникают вновь. Может это и говорит о неполноценности gcc, но вариантов особо нет, да и когда-то в иаре у меня были Andreas(144 знак., 14.02.2020 12:37)
- Обычно разгонять надо в одном-двух местах. Делаю в этих местах "#pragma GCC optimize("O2")" и "#pragma GCC reset_options". Потому что -O2 на весь проект обычно сильно раздувает код, и хочется -Os. - SciFi(14.02.2020 12:32)
													- А почему не везде Os ? - Andreas(14.02.2020 12:39)
															- Разгон же. АЦП, ПДП. Измерения показали, что без разгона в нужных местах не успевает. Такое редко бывает. Сам склонен всех ругать за преждевременную оптимизацию. - SciFi(14.02.2020 12:48)
																	- А почему тогда не Ofast ? Я обычно скоростные дела в отдельные файлы выношу и с fast компилю. Но мысль насчет прагмы только на отдельные функции тоже ничего, но у меня что-то не вышло так, уже не помню почему. - Andreas(14.02.2020 13:49)
- На самом деле у меня было так, что всё успевало. Но я решил попробовать увеличить передискретизацию ещё в два раза. И получилось, но лишь на оптимизациях. Пока держу темп. - Nikolay_Po(14.02.2020 13:13)
 
 
- Разгон же. АЦП, ПДП. Измерения показали, что без разгона в нужных местах не успевает. Такое редко бывает. Сам склонен всех ругать за преждевременную оптимизацию. - SciFi(14.02.2020 12:48)
																	
 
- А почему не везде Os ? - Andreas(14.02.2020 12:39)
															
 
 
- Что вы хотите узнать? У меня данные с АЦП нужно забирать быстро, они постоянно затираются следующими через DMA. И без оптимизации (правда, безотносительно LTO), происходят накладки.  Nikolay_Po(820 знак., 14.02.2020 12:28)
											
 
- А в грамммах сколько c Os ? - Andreas(14.02.2020 11:59)
									
 
- Так и поступал. Хватало, но объём обработки большой и с LTO запасов по-больше, поспокойнее. Например, O2 без LTO уже недостаточно (или пришлось бы ухудшать ТТХ прибора). - Nikolay_Po(14.02.2020 11:58)
							
- Разница между gcc 8 и 9 будет в 100500 раз больше, чем любые тшательные патчи. Ну и для пользы человечества можно было бы направить жалобу куда надо. Правда, велика вероятность, что в gcc 10 уже пофиксили. Но это не точно. - SciFi(14.02.2020 11:42)
					- Возможно, что-то похожее на, см. ссылки  Nikolay_Po(290 знак., 14.02.2020 12:03)
							- А корявый тулчейн откуда взят? - evgeniy1294(14.02.2020 13:51)
									- У самого АРМ. - Nikolay_Po(14.02.2020 13:56, ссылка)
											- На всякий случай скачал заново, распаковал (прежнюю папку переименовал) и указал в пути тулчейна. Результат с LTO:  Nikolay_Po(1957 знак., 14.02.2020 14:04)
													- Я использую gcc-9.2 из community-репозитория арча, проблемы такой в нем нет (возможно, нужно проверить тщательнее, но багрепортов не видел). Мейнтейнеры собирают его из апстрима gcc.  evgeniy1294(94 знак., 14.02.2020 14:46 - 14:48)
															- В ЛС скинул ссылку на архив проекта. - Nikolay_Po(14.02.2020 15:59)
																	- Вот это вот мне выплюнул мой тулчейн.  evgeniy1294(14.02.2020 16:19)
																			- Ну вот же оно, тот же результат:  Nikolay_Po(1776 знак., 14.02.2020 16:21)
																					- Сейчас потыкаю другие тулчейны - evgeniy1294(14.02.2020 16:27)
																							- Этот у меня собирает:   Nikolay_Po(183 знак., 14.02.2020 17:35)
																									- arm-kgp-eabi от 12 января проект собрал. Ещё я нашел багу)): файл dsp.h, строка 95 - добавить extern.  evgeniy1294(14.02.2020 19:20 - 19:23)
																											- Ох нихрена себе его раздуло!  Nikolay_Po(434 знак., 14.02.2020 19:28)
																													- Пинай Клёна, ему может быть интересна эта лабораторная мышка. - evgeniy1294(14.02.2020 20:14)
 
 
- Ох нихрена себе его раздуло!  Nikolay_Po(434 знак., 14.02.2020 19:28)
																													
- Я не успел остальные проверить, вызвали на совещание). Мне кажется, Klen может сказать, в чем проблема. - evgeniy1294(14.02.2020 17:47)
 
- arm-kgp-eabi от 12 января проект собрал. Ещё я нашел багу)): файл dsp.h, строка 95 - добавить extern.  evgeniy1294(14.02.2020 19:20 - 19:23)
																											
 
- Этот у меня собирает:   Nikolay_Po(183 знак., 14.02.2020 17:35)
																									
 
- Сейчас потыкаю другие тулчейны - evgeniy1294(14.02.2020 16:27)
																							
 
- Ну вот же оно, тот же результат:  Nikolay_Po(1776 знак., 14.02.2020 16:21)
																					
 
- Вот это вот мне выплюнул мой тулчейн.  evgeniy1294(14.02.2020 16:19)
																			
 
- В ЛС скинул ссылку на архив проекта. - Nikolay_Po(14.02.2020 15:59)
																	
 
- Я использую gcc-9.2 из community-репозитория арча, проблемы такой в нем нет (возможно, нужно проверить тщательнее, но багрепортов не видел). Мейнтейнеры собирают его из апстрима gcc.  evgeniy1294(94 знак., 14.02.2020 14:46 - 14:48)
															
 
- На всякий случай скачал заново, распаковал (прежнюю папку переименовал) и указал в пути тулчейна. Результат с LTO:  Nikolay_Po(1957 знак., 14.02.2020 14:04)
													
 
- У самого АРМ. - Nikolay_Po(14.02.2020 13:56, ссылка)
											
 
- А корявый тулчейн откуда взят? - evgeniy1294(14.02.2020 13:51)
									
 
- Возможно, что-то похожее на, см. ссылки  Nikolay_Po(290 знак., 14.02.2020 12:03)
							
 
- не устану цитировать светоча "ты некомпетентен, обвиняешь святой gcc в своей тупости, вон из профессии" (с) fk0 - POV_(14.02.2020 12:54,