-
- В первую очередь отключите lto. Эта фигня очень сложная и иногда
дает непредсказуемые результаты. Серия NUC97x в комплекте с
китайским линуксом никаких нареканий по части надежности не вызвала
вплоть до снятия изделий с производства. У вас похоже bare metal,
так это ССЗБ при использовании китайчины. С китайскими изделиями
любой даже самый минимальный шаг в сторону - это песец, опыт работы
с западными чипами тут надо забыть. - 3m(25.01.2024 14:09)
- Эхх... А я, наоборот, включаю эту фигню, -flto=auto (авто - чтобы
оптимизатор сориентировался по количетсву доступных ядер ЦП хоста
при компиляции), чтобы повысить качество кода. Писал уже не раз,
что LTO позволяет быстрее находить ошибки, по крайней мере на свежих GCC, начиная с 10 и
выше. На 9й версии с CortexM3 было чуть неоднозначно. Nikolay_Po(127 знак., 25.01.2024 15:56)
- Пофиксить в чужом коде - это исправить чужой код? Там работы ... - AlexBi(25.01.2024 17:07)
- Ну, я для прикола, скомпилировал OpenOCD с -O3 -flto.
Предупреждений штук 50 пришлось поправить. Часто встречалось, что,
размер буфера был определён меньше, чем возможный размер вносимых в
буфер данных. Собственно, предпосылки к глюкам. - Nikolay_Po(26.01.2024 14:16)
- Это у вас какие-то умные предупреждения. Я, после включения всех
предупреждений, чаще вижу "сравнение знакового и беззнакового",
"запись в переменную меньшего размера", "использование
зарезервированных имен", "функция без прототипа", "структуры с
дырками", "свич без дефаулта или не все енумы" и т.д. Исправлять
все это рука не поднимается, боюсь увязнуть и что-то случайно
испортить. - AlexBi(26.01.2024 17:13)
- Ну, значит код самого OpenOCD был достаточно чистым. Править приходилось, в основном, подклюаемые библиотеки от неособо щепитильных разработчиков. Если не исправлять - есть риск оставить глюки при исользовании полной оптимизации. LTO вместе с O3 используют любые послабления. И если что-то может пойти не так и окажется выгодно для оптимизации - то пойдёт не так. - Nikolay_Po(26.01.2024 18:15)
- Это у вас какие-то умные предупреждения. Я, после включения всех
предупреждений, чаще вижу "сравнение знакового и беззнакового",
"запись в переменную меньшего размера", "использование
зарезервированных имен", "функция без прототипа", "структуры с
дырками", "свич без дефаулта или не все енумы" и т.д. Исправлять
все это рука не поднимается, боюсь увязнуть и что-то случайно
испортить. - AlexBi(26.01.2024 17:13)
- Ну, я для прикола, скомпилировал OpenOCD с -O3 -flto.
Предупреждений штук 50 пришлось поправить. Часто встречалось, что,
размер буфера был определён меньше, чем возможный размер вносимых в
буфер данных. Собственно, предпосылки к глюкам. - Nikolay_Po(26.01.2024 14:16)
- Пофиксить в чужом коде - это исправить чужой код? Там работы ... - AlexBi(25.01.2024 17:07)
- Эхх... А я, наоборот, включаю эту фигню, -flto=auto (авто - чтобы
оптимизатор сориентировался по количетсву доступных ядер ЦП хоста
при компиляции), чтобы повысить качество кода. Писал уже не раз,
что LTO позволяет быстрее находить ошибки, по крайней мере на свежих GCC, начиная с 10 и
выше. На 9й версии с CortexM3 было чуть неоднозначно. Nikolay_Po(127 знак., 25.01.2024 15:56)
- если вещь ответственная - то без WatchDog никак... всё остальное - всё равно не доказывает что сбой устранен - может просто его вероятность понижена в разы-десятки раз - sav6622(25.01.2024 10:13)
- В первую очередь отключите lto. Эта фигня очень сложная и иногда
дает непредсказуемые результаты. Серия NUC97x в комплекте с
китайским линуксом никаких нареканий по части надежности не вызвала
вплоть до снятия изделий с производства. У вас похоже bare metal,
так это ССЗБ при использовании китайчины. С китайскими изделиями
любой даже самый минимальный шаг в сторону - это песец, опыт работы
с западными чипами тут надо забыть. - 3m(25.01.2024 14:09)