реклама на сайте
подробности

 
 
> Bootloader STM32L (переход на исполнение в RAM), Вопрос
Нортон
сообщение Feb 19 2013, 05:17
Сообщение #1


Участник
*

Группа: Участник
Сообщений: 41
Регистрация: 9-04-11
Пользователь №: 64 246



Здравствуйте.

Пишу Bootloader для stm32l.

Встроенный Bootloader так-же используется для первоначального программирования, но для дальнейшей удаленной перепрошивки необходим свой.

Принцип такой:
1. В основной программе, по приходу команды через USART о том, что появился запрос о перепрошивки, МК заканчивает все операции, отвечает по USART, что готов и начинает прием программы. Данную программу он записывает на микросхему Flash памяти.

2. После приема всей программы и проверки правильности приема - у меня есть функция которая стирает flash МК и перезаписывает из внешней flash новую программу, я расположил данную функцию по определенному адресу flash. Но естественно выполнять ее из flash не могу, она сотрет сама себя и МК повиснет. Для устранения этого я копирую, данную функцию в RAM(Я же знаю по какому адресу она находится). И пытаюсь перейти ассемблерной командой BX (BLX) на ее выполнение.

Вот в последнем действии у меня загвоздка. Во первых нашел интересный факт, что при команде BX и BLX, у адреса перехода первый бит всегда должен быть 1. Грубо говоря если вы хотите перейти по адресу 0x08000000, то команду - BX 0x08000000, давать нельзя, надо давать BX 0x08000001. (http://infocenter.arm.com/help/index.jsp?topic=/com.arm.doc.faqs/ka12545.html).

НО даже если в конце ставить эту 1, исполнение программы в RAM не хочет переходить, хотя по адресам FLASH все нормально переходит и выполняет команды.

ВОПРОС - почему не хочет переходить на выполнение в RAM? почему переходит только по адресам FLASH?
КАК мне тогда перейти на выполнение программы из RAM, по определенному адресу?

Заранее благодарен за все советы и ответы.
Go to the top of the page
 
+Quote Post



Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 30th July 2025 - 09:35
Рейтинг@Mail.ru


Страница сгенерированна за 0.0135 секунд с 7
ELECTRONIX ©2004-2016