ВходНаше всё Теги codebook 无线电组件 Поиск Опросы Закон Пятница
3 мая
920276 Топик полностью
Nikolay_Po (10.05.2019 12:06 - 12:09, просмотров: 318) ответил s_h_e на Вот у меня константы с явно заданным размещением линкер никогда не выкидывал. Если такое делает купленный компилятор - это повод, как минимум, для ругани с техподдержкой. Поэтому и просил примеры.
ПМСМ, кроме того, чтобы явно задать размещение константы, нужно объяснить компилятору, что она нужна тебе зачем-то ещё, чего компилятор не видит. Я за агрессивную оптимизацию. Пусть выкидывает. А если, как у ТС, константу необходимо использовать, то необходимо квалифицировать её как volatile. Например, я могу разместить константу в ПЗУ нарочно и только лишь потому, что знаю, что у меня ОЗУ маловато. А если компилятор придумает как её вообще выкинуть - пожалуйста, пусть выкидывает! А если будет нужно, чтобы использовал принудительно, у меня будет volatile const. И лишь если так всё равно выкидывает, то ругаться с техподдержкой. -=- Как я понимаю, ТС нужно всё-таки поругаться, проблема не в том, что компилятор что-то выкидывает, а в том, что вызывает исключение неверным обращением к памяти, не учитывая должным образом размещение константы в ПЗУ, из-за чего используется недействительный указатель. Правильно было бы назвать тему: "IAR версия такая-то, hardfault указателя на константу в ПЗУ". ТС сообщил, что у него "не работает", оказывается, hard fault, лишь здесь: http://caxapa.ru/919504.html, когда уже обсуждение разгорелось.