-
- Вот такой код у меня работает на целой кучке M3/M4 LightElf(405 знак., 28.04.2025 16:17 - 01.05.2025 21:13)
- VTOR обычно основная программа инициализирует. Незачем его здесь
прописывать. - Ale3000(29.04.2025 06:53)
- Я бы поспорил насчёт обычности, но лень. - LightElf(01.05.2025 21:14)
- Или вот: SciFi(172 знак., 28.04.2025 20:33)
- Спасибо, испробую. С виду - шаманство. Так скоро и до машинных
кодов. - vesago(28.04.2025 21:07)
- Всему своё время и место. В том числе машинным кодам. - SciFi(28.04.2025 21:09)
- На самом деле круто. Спасибо. - vesago(28.04.2025 21:10)
- Всему своё время и место. В том числе машинным кодам. - SciFi(28.04.2025 21:09)
- Спасибо, испробую. С виду - шаманство. Так скоро и до машинных
кодов. - vesago(28.04.2025 21:07)
- Спасибо, большое!!! Ваш код работает четко без всяких оптимизаций! - vesago(28.04.2025 20:07)
- Давно живу :-) - __LightElf(29.04.2025 03:01,
)
- Давно живу :-) - __LightElf(29.04.2025 03:01,
- VTOR обычно основная программа инициализирует. Незачем его здесь
прописывать. - Ale3000(29.04.2025 06:53)
- Спасибо, друзья! Буду разбираться. - vesago(28.04.2025 16:39)
- У меня от изучения вопроса переключения контекста в Cortex отложилось в голове, что просто так поменять указатель стека - недостаточно. Нужно еще какие-то телодвижения. то-ли барьерную инструкцию, то-ли проверять/устанавливать что-то еще в системных регистрах Cortex - il-2(28.04.2025 15:31)
- Отлаживать не пробовали? При помощи внутрисхемного отладчика. - SciFi(28.04.2025 14:40)
- Без него я ни как. Ну доходит до application(); и следующий шаг в
хардфаулте. Эх не шуруплю я в ассемблере. Видно придется. Ну еще
мысль, что не плохо все прерывания поотключать перед переходом. - vesago(28.04.2025 14:44)
- Отключать нужно не только прерывания, а вообще всю периферию: все
таймеры, уарты, усб и т.д. Нужно привести контроллер в такое же
состояние, как он был после сброса, только SP и PC другие
прописать. - Ale3000(29.04.2025 04:31)
- 1) Зачем ее включать? LightElf(57 знак., 29.04.2025 14:08)
- Надо вообще прыгать на апликейшн первым делом после сброса, пока
ничто не инициализировалось. - SciFi(29.04.2025 08:09)
- В смысле, из бутлоадера никуда не переходить, а делать reset? - Nikolay_Po(29.04.2025 09:27)
- Загрузчик для перехода в приложение создаёт условие для перехода,
которое сохраняется при сбросе. Скажем, у меня это просто
статическая переменная, в которую записывается определённое
значение. Далее софтовый сброс. На старте загрузчик первым делом
проверятся условие: признак софтового сброса (есть такой регистр у
stm32) и значение этой переменной. - SciFi(29.04.2025 09:38)
- Логично. У меня так и сделано, с ключом в секцией noinit. Есть ключ
- переходим в режим бутлоадера. Нет ключа - обычный запуск
приложения. Но первым всегда стартует нестираемый бутлоадер - чтобы
можно было восстановить или заменить повреждённое или неподходящее
приложение, даже если оно не функционирует. - Nikolay_Po(29.04.2025 09:55)
- noinit не нужен, потому что проверку этого условия по хорошему надо
делать перед любым инитом. - SciFi(29.04.2025 09:58)
- Ну, это нужно статап у бутлоадера вообще исключить. А я делал на
Си. Но в общем согласен - чтобы бутлоадер был компактным и
независимым от приложения и чтобы у приложения был свой стартап,
стоит делать загрузчик самодостаточным без стартапа. - Nikolay_Po(29.04.2025 10:05)
- У меня стартап всегда свой. Там всего несколько строчек. Привык так делать. SciFi(274 знак., 29.04.2025 10:07)
- Ну, это нужно статап у бутлоадера вообще исключить. А я делал на
Си. Но в общем согласен - чтобы бутлоадер был компактным и
независимым от приложения и чтобы у приложения был свой стартап,
стоит делать загрузчик самодостаточным без стартапа. - Nikolay_Po(29.04.2025 10:05)
- noinit не нужен, потому что проверку этого условия по хорошему надо
делать перед любым инитом. - SciFi(29.04.2025 09:58)
- Логично. У меня так и сделано, с ключом в секцией noinit. Есть ключ
- переходим в режим бутлоадера. Нет ключа - обычный запуск
приложения. Но первым всегда стартует нестираемый бутлоадер - чтобы
можно было восстановить или заменить повреждённое или неподходящее
приложение, даже если оно не функционирует. - Nikolay_Po(29.04.2025 09:55)
- Загрузчик для перехода в приложение создаёт условие для перехода,
которое сохраняется при сбросе. Скажем, у меня это просто
статическая переменная, в которую записывается определённое
значение. Далее софтовый сброс. На старте загрузчик первым делом
проверятся условие: признак софтового сброса (есть такой регистр у
stm32) и значение этой переменной. - SciFi(29.04.2025 09:38)
- В смысле, из бутлоадера никуда не переходить, а делать reset? - Nikolay_Po(29.04.2025 09:27)
- Да особо шурупить не нужно, ты же не собираешься писать код на ассемблере. Michael75(273 знак., 28.04.2025 16:29)
- А пробовали включить шагание по инструкциям? Нужно посмотреть, на какой падает. Станет понятнее, надеюсь. - Nikolay_Po(28.04.2025 16:08)
- Отключать нужно не только прерывания, а вообще всю периферию: все
таймеры, уарты, усб и т.д. Нужно привести контроллер в такое же
состояние, как он был после сброса, только SP и PC другие
прописать. - Ale3000(29.04.2025 04:31)
- Без него я ни как. Ну доходит до application(); и следующий шаг в
хардфаулте. Эх не шуруплю я в ассемблере. Видно придется. Ну еще
мысль, что не плохо все прерывания поотключать перед переходом. - vesago(28.04.2025 14:44)
- Вот такой код у меня работает на целой кучке M3/M4 LightElf(405 знак., 28.04.2025 16:17 - 01.05.2025 21:13)