ВходНаше всё Теги codebook 无线电组件 Поиск Опросы Закон Суббота
18 мая
1335194 Топик полностью
il-2 (30.07.2023 10:34, просмотров: 153) ответил IBAH на В этом то и вопрос, почему в кейле работает? Где-то что-то нужно дополнительно указать.
Нет такого вопроса, это у тебя в голове какой-то пробел. HardFault вызывает какая-то АССЕМБЛЕРНАЯ инструкция, выполняемая в нетипичных условиях с нетипичными значениями. Никто не обещает, что разные компиляторы Кейл и ЙАР должны генерить одинаковый код. А источник проблемы все равно - в исходнике на Си. Самый распространенный случай - невыровненный доступ к памяти, который возникает из-за преобразования типов указателя. У Cortex-M3 есть инструкции, которые могут выполняться 

при невыровненном доступе (за счет дополнительных накладок), а есть инструкции которые впадают при этом в HardFault. Какую инструкцию поставит компилятор - его дело. Ты ему разрешил.

И еще - в системных регистрах Cortex-M3 есть бит (не помню названия), который по умолчанию позволяет невыровненный доступ. Но его можно выключить, и тогда невыровненный доступ будет приводить к HardFault всегда. Ищите и обрящете.