IRBaboon 0 19 марта, 2021 Опубликовано 19 марта, 2021 · Жалоба Уважаемые коллеги! Столкнулся с проблемой, которую не могу решить: Я собрал проект в КУБе, запустил в Кейле. В качестве источника тактирования применяю внутренний HSI. Отладчик - китайский стлинк. После сборки и запуска дебага - выпадаю в хардфолт сразу после систем инита. Совершенно не понимаю, с чем это связано - пытался использовать разные делители, разные источники тактирования, даже проверял что происходит с ногой резет :) Сталкивался ли кто либо с подобной проблемой? Подскажите пожалуйста - в чём может быть загвоздка. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Arlleex 131 19 марта, 2021 Опубликовано 19 марта, 2021 · Жалоба Т.е. в main() даже не заходит? В самой SystemInit() FPU-сопроцессор включается? В настройках проекта галка генерирования FPU-инструкций стоит? Насколько я знаю, __main() использует FPU в своих целях для ускорения запуска. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
MrBearManul 0 19 марта, 2021 Опубликовано 19 марта, 2021 · Жалоба 3 часа назад, IRBaboon сказал: Совершенно не понимаю, с чем это связано А расшифровать пробовали по содержимому регистров? 3 часа назад, IRBaboon сказал: После сборки и запуска дебага - выпадаю в хардфолт сразу после систем инита. Хотя бы в окне дизассемблера найдите инструкцию, на которой процессор вылетает в исключение. Можно сюда скрин сбросить. В общем, чем больше информации предоставите, тем проще будет найти причину. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
GenaSPB 11 20 марта, 2021 Опубликовано 20 марта, 2021 · Жалоба Уж для того чтобы в hard fault вылететь, процессору нужно начать выполнять инструкции... так что генератор точно не виноват. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
x893 35 20 марта, 2021 Опубликовано 20 марта, 2021 · Жалоба On 3/19/2021 at 2:09 PM, IRBaboon said: выпадаю в хардфолт сразу после систем инита Уберите систем инит и проверьте. Хотя это очевидно для гуру программирования. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Darth Vader 0 20 марта, 2021 Опубликовано 20 марта, 2021 · Жалоба 19.03.2021 в 14:09, IRBaboon сказал: выпадаю в хардфолт сразу после систем инита. После или внутри? После обычно идет переход в __main(), а уже оттуда в main(). Где именно вы вываливаетесь в хард фолт: - в ресет хендлере; - в систем ините; - в __main() - в main() Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Priest_89 4 20 марта, 2021 Опубликовано 20 марта, 2021 · Жалоба Пройдитесь по "внутренностям" функции инициализации и вызываемых в ней функций (Step Into в режиме отладки). Уже будет яснее, откуда сваливается в hardfault. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
IRBaboon 0 22 марта, 2021 Опубликовано 22 марта, 2021 (изменено) · Жалоба On 3/20/2021 at 6:12 PM, Priest_89 said: Пройдитесь по "внутренностям" функции инициализации и вызываемых в ней функций (Step Into в режиме отладки). Уже будет яснее, откуда сваливается в hardfault. Совершенно точно вываливаюсь при выполнении инструкции LDR R0, =SystemInit On 3/19/2021 at 5:13 PM, MrBearManul said: А расшифровать пробовали по содержимому регистров? Хотя бы в окне дизассемблера найдите инструкцию, на которой процессор вылетает в исключение. Можно сюда скрин сбросить. В общем, чем больше информации предоставите, тем проще будет найти причину. Боюсь что это происходит в самом начале - приложил скрин. Как только я вхожу в дебаг, и исполняю первую инструкцию он валиться сразу. On 3/20/2021 at 6:08 PM, Darth Vader said: После или внутри? После обычно идет переход в __main(), а уже оттуда в main(). Где именно вы вываливаетесь в хард фолт: - в ресет хендлере; - в систем ините; - в __main() - в main() Я сейчас заново запустил дебаг, и пошагово, как рекомендовали выше, начал искать, где - в итоге я вываливаюсь в момент запуска систем инита, выше приложил скрин Изменено 22 марта, 2021 пользователем IRBaboon Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
MrBearManul 0 22 марта, 2021 Опубликовано 22 марта, 2021 · Жалоба 15 минут назад, IRBaboon сказал: Боюсь что это происходит в самом начале - приложил скрин. Что значит "вначале"? Процессор просто обязан выполнить инструкцию, чтобы попасть в "хардфолт". На вашем скрине курсор не находится на инструкции. Перейдите в окно дизассемблера и прошагайте пошагово код. Или он у вас каким-то чудесным образом выполняет константу 0xFFFFFFFF как инструкцию? Тогда да, прямой путь в хардфолт. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
IRBaboon 0 22 марта, 2021 Опубликовано 22 марта, 2021 · Жалоба Vbat висел в воздухе - никогда не понимал, что с ним конкретно делать. Подпаял к питанию, ничего не поменялось. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
jcxz 187 22 марта, 2021 Опубликовано 22 марта, 2021 · Жалоба Как видно про приложенным скринам - у ТСа флешь не прошилась программным кодом и содержит стёртое значение 0xFFFFFFFF. Непонятно - что он вообще пытается выполнять, если прямо перед ним эти 0xFFFFFFFF. Только слепой не заметит...... Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
IRBaboon 0 22 марта, 2021 Опубликовано 22 марта, 2021 · Жалоба 15 minutes ago, jcxz said: Как видно про приложенным скринам - у ТСа флешь не прошилась программным кодом и содержит стёртое значение 0xFFFFFFFF. Непонятно - что он вообще пытается выполнять, если прямо перед ним эти 0xFFFFFFFF. Только слепой не заметит...... Ну, я не слепой, просто для меня дизассембли это тёмный лес. Как же такое может быть, что во флеш ничего не записалось - битый программатор? Мне не до конца ясно почему в аутпуте мне пишут что No Algorithm Found, но я так понимаю, что это вообще для другого банка и меня не касается. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
jcxz 187 22 марта, 2021 Опубликовано 22 марта, 2021 · Жалоба 13 минут назад, IRBaboon сказал: Как же такое может быть, что во флеш ничего не записалось - битый программатор? Причин может быть множество: кривой отладчик, кривое подключение отладчика (провода или настройки), неправильный тип МК выбранный в проекте, флешь МК защищена от записи и т.д. Совет: устанавливать опцию "Verify" для прошиваемой firmware в настройках отладчика, чтобы был контроль правильности прошивания. Не знаю где она в вашей IDE, но думаю должна где-то быть. PS: В эмбеддинге без знания ассемблера делать нечего. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
IRBaboon 0 22 марта, 2021 Опубликовано 22 марта, 2021 · Жалоба 40 minutes ago, jcxz said: Причин может быть множество: кривой отладчик, кривое подключение отладчика (провода или настройки), неправильный тип МК выбранный в проекте, флешь МК защищена от записи и т.д. Совет: устанавливать опцию "Verify" для прошиваемой firmware в настройках отладчика, чтобы был контроль правильности прошивания. Не знаю где она в вашей IDE, но думаю должна где-то быть. PS: В эмбеддинге без знания ассемблера делать нечего. Я понимаю - опцию Verify я всегда вообщем-то включаю. Наверное для начала попробую использовать другой программатор. " В эмбеддинге без знания ассемблера делать нечего." - ну, с одной стороны да, с другой из всех проектов которые я запускал такое первый раз - раньше хардфолт если и был, то решался либо внешним источником питания, либо кривым источником тактирования. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
MrBearManul 0 22 марта, 2021 Опубликовано 22 марта, 2021 · Жалоба 6 минут назад, IRBaboon сказал: раньше хардфолт если и был, то решался либо внешним источником питания, либо кривым источником тактирования. Т.е. наугад, методом тыка. А когда этот метод перестал работать, отсутствие опыта не позволило вам найти истинную причину. Изучайте сечас, у вас есть прекрасная возможность. Сможете расшифровать реальный настоящий "хардфолт". И рекомендую разобраться с настройками проекта. Я не знаком с кейлом, т.к. использую другой компилятор и среду разработки, но первое, на что следует обратить внимание, так это на настройки линковщика и программатора. Почитать документацию при необходимости. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться