Я хотел бы иметь два приложения на моей флэш-памяти STM32, одно из которых в основном загрузочное, а другое «основное». Я выяснил, как загрузить каждую из них в разные области флэш-памяти, и после создания дампа памяти все выглядит так, как будто оно в нужном месте.
Так что, когда я делаю сброс, он загружает загрузку, все, что загружается в данный момент, - это переход в приложение. Отладка загрузки, все это, кажется, работает правильно. Однако проблема возникает после того, как я сделал переход к приложению, он просто выполняет одну инструкцию (сборку) и затем возвращается к загрузке. Он должен оставаться в приложении до бесконечности.
Тогда у меня вопрос: куда мне «прыгнуть» в приложении?
Кажется, что есть несколько потенциальных мест, таких как векторы прерываний, обработчик сброса, основная функция приложения. На самом деле я попробовал все те безуспешно.
Надеюсь, это имеет смысл, я обновлю вопрос, если нет.
спасибо за вашу помощь!
Ричард
Обновление:
- Я поэкспериментировал в отладчике и вручную изменил счетчик программы на основную часть приложения, и это хорошо сработало, поэтому я думаю, что с прыжком что-то не так, почему программа не работает Счетчик продолжать идти после прыжка?
- На самом деле, похоже, что это PSR, 'T' сбрасывается при прыжке, если я установлю его снова после прыжка, он продолжит работу с приложением, как я хочу
- Хорошо, найдено решение, кажется, вам нужно установить значение LSB для ПК на 1, когда вы выполняете ветвление, или оно попадает в режим «ARM» (32-битная инструкция вместо 16-битной инструкции, как в режиме «большого пальца»). Довольно маленькая проблема, спасибо, что позволили мне поделиться ею с вами!