|
q0296
|
||||||||||||||||
Bootloader STM32F03005.05.2017, 13:40. Показов 6961. Ответов 6
Метки нет (Все метки)
Есть бутлоадер, но он не работает и меня попросили найти ошибку. Я первый раз вижу микроконтроллеры и программы написанные под них, но выбора не было. На данный момент не очень хорошо, но примерно разобрался что и как работает. В интернете почти везде один и тот же пример бутлоадера и у меня почти такой же. Исключение составляет то, что на моем контроллере таблицу векторов можно размещать только в двух местах 1) по адресу 0x08000000, но тут хранятся вектора моего бутлоадера 2) в оперативной памяти, у меня в примере по адресу 0x20000000 3) как я понял есть 3 место, но в нем хранится заводской бутлоадер (т.е. туда лезть не надо) Тестовая программа заливается на контроллер (сравнил бинарники заливаемого файла и снятого с контроллера, все сходится). Вручную переношу вектора прерывания и в регистре указываю, что они будут в оперативной памяти. Ошибка может быть в том, что вектора повторяются т.е. они будут и по адресу 0х20000000 и по 0x08001400. (Сомневаюсь что ошибка тут) Вектора занимают 0xC0 места, значит мне нужно задать, что начало программы будет по адресу 0x080014С0 не уверен что у меня это указано. Как указывать начало программы в Keil uVision не совсем понял. Переход советуют делать на вектор ресета, если он сбрасывает оперативную память, тогда нужно вектора переносить уже в теле тестовой прошивки(так уже пробовал делать). Либо вообще не переходить на вектор Riseta и в ручную сбрасывать настройки на стандартные и потом переходить на начало программы. Все что написано выше это только мои фантазии о том как работает микроконтроллер. Код перехода из бутлоадера на программу:
https://dryve.google.com/open?... 0FNLUxoMzQ Попробовал абстрагироваться от переноса векторов и задание начала программы и сделал такую прошивку: https://dryve.google.com/open?... WNGZ2JJZlU Смысл ее в том, чтобы вывести что-то на экран и потом как и бутлоадере перейти с помощью функции по заданному адресу, но тут уже переход совершает на себя же (Получается что-то типа цикла). Но прошивка тоже не работает
|
||||||||||||||||
| 05.05.2017, 13:40 | |
|
Ответы с готовыми решениями:
6
STM32F030 bootloader и основное приложение Программирование STM32F030 с помощью встроенного bootloader STM32F030 CRC |
|
0 / 0 / 0
Регистрация: 06.12.2016
Сообщений: 1,183
|
|
| 05.05.2017, 17:26 | |
|
Ну прям зачастили, последняя тема 2 недели назад. Я там даже скрины давал как настраивать в кейле.
0
|
|
|
q0296
|
|||||||||||
| 06.05.2017, 09:46 | |||||||||||
|
Код бутлоадера
Код заливаемой программы
Вроде все сделал как в том посте, но после "перехода" выводит сообщение бутлоадера т.е. не переходит на основную программу. Может с настройками бутлоадера не так что-то? |
|||||||||||
|
0 / 0 / 0
Регистрация: 06.12.2016
Сообщений: 1,183
|
|
| 06.05.2017, 11:31 | |
|
MAIN_PROGROM_START_ADDRESS где определен в основной программе?
И что там за Init() Как она у вас вообще собралась?
0
|
|
|
q0296
|
||||||||||||||||
| 06.05.2017, 14:14 | ||||||||||||||||
|
Думал ничего интересного в ней нет.
В Init() происходит настройка портов, периферии и т.п.
Вот часть макросов из заголовка (остальные не используются):
|
||||||||||||||||
|
0 / 0 / 0
Регистрация: 06.12.2016
Сообщений: 1,183
|
|
| 06.05.2017, 14:24 | |
|
У вас инит одинаковый для бутлоадера и для основной программы?
Вы уже один раз инициализировали периферию в бутлоадере. В основной программе нужно сбросить ее и заново все инициализировать. Таблица векторов поменялась для прерываний. Но для начала уберите инит вообще, просто помигайте светодиодом в основной программе в цикле. И еще, вы когда в Кейле шьете флеш у вас там случайно не стоит "стирать всю память"?
0
|
|
|
0 / 0 / 0
Регистрация: 06.12.2016
Сообщений: 886
|
|
| 06.05.2017, 15:55 | |
|
Кроме метода пристального вглядывания, есть метод отладки при помощи отладчика.
Пройдите по шагам и увидите где ошибка в буквах и настройках.
0
|
|
| 06.05.2017, 15:55 | |
|
Помогаю со студенческими работами здесь
7
STM32F030 + АЦП stm32f030 UID Перезагрузка tim17 на stm32f030 Инициализация периферии STM32F030 STM32F030 2 прерывания в 1 таймере Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
Модульный подход на примере F#
DevAlt 06.03.2026
В блоге дяди Боба наткнулся на такое определение:
В этой книге («Подход, основанный на вариантах использования») Ивар утверждает,
что архитектура программного обеспечения — это
структуры,. . .
|
Управление камерой с помощью скрипта OrbitControls.js на Three.js: Вращение, зум и панорамирование
8Observer8 05.03.2026
Содержание блога
Финальная демка в браузере работает на Desktop и мобильных браузерах. Итоговый код: orbit-controls-threejs-js. zip. Сканируйте QR-код на мобильном. Вращайте камеру одним пальцем,. . .
|
SDL3 для Web (WebAssembly): Синхронизация спрайтов SDL3 и тел Box2D
8Observer8 04.03.2026
Содержание блога
Финальная демка в браузере. Итоговый код: finish-sync-physics-sprites-sdl3-c. zip
На первой гифке отладочные линии отключены, а на второй включены:. . .
|
SDL3 для Web (WebAssembly): Идентификация объектов на Box2D v3 - использование userData и событий коллизий
8Observer8 02.03.2026
Содержание блога
Финальная демка в браузере. Итоговый код: finish-collision-events-sdl3-c. zip Сканируйте QR-код на мобильном и вы увидите, что появится джойстик для управления главным героем.
. . .
|
|
Реалии
Hrethgir 01.03.2026
Нет, я не закончил до сих пор симулятор. Эта задача сложнее. Не получилось уйти в плавсостав, но оно и к лучшему, возможно. Точнее получалось - но сварщиком в палубную команду, а это значит, в моём. . .
|
Ритм жизни
kumehtar 27.02.2026
Иногда приходится жить в ритме, где дел становится всё больше, а вовлечения в происходящее — всё меньше. Плотный график не даёт вниманию закрепиться ни на одном событии. Утро начинается с быстрых,. . .
|
SDL3 для Web (WebAssembly): Сборка библиотек: SDL3, Box2D, FreeType, SDL3_ttf, SDL3_mixer и SDL3_image из исходников с помощью CMake и Emscripten
8Observer8 27.02.2026
Недавно вышла версия 3. 4. 2 библиотеки SDL3. На странице официальной релиза доступны исходники, готовые DLL (для x86, x64, arm64), а также библиотеки для разработки под Android, MinGW и Visual Studio. . . .
|
SDL3 для Web (WebAssembly): Реализация движения на Box2D v3 - трение и коллизии с повёрнутыми стенами
8Observer8 20.02.2026
Содержание блога
Box2D позволяет легко создать главного героя, который не проходит сквозь стены и перемещается с заданным трением о препятствия, которые можно располагать под углом, как верхнее. . .
|