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

 
 
 
Reply to this topicStart new topic
> STM32F100 и BootLoader
morpheus
сообщение Dec 2 2015, 12:28
Сообщение #1


Участник
*

Группа: Участник
Сообщений: 21
Регистрация: 7-09-06
Пользователь №: 20 173



Всем здравствуйте
Я понимаю что тема уже поднималась на форуме, однако ясности в конкретной реализации НЕТ.
Задача следующая :
есть процессор STM32F100RBT6 язык С компилятор Keil
контроллер связан с компом по RS-232 на плате стоит преобразователь MAX232 все чудненько работает
необходимо обновлять прошивку но переставлять перемычки Boot0 / Boot1 не очень хочется
необходимо программно перевести процессор в режим встроенного bootlader получить прошиву и ресетнуться
я и всем известное видео смотрел и форумы читал....все вроде крутится вокруг одного и тогоже но неработает

так вот это вообще возможно...и если можно конкретный кусочек кода глянуть....
я конечно понимаю свой загрузчик это круто....но хотелось бы все это реализовать малой кровью...
к тому же стандартный со своей задачей (ну если камень туда загнать апаратно)...справляется
пока не получается загнать даже в загрузчик.....я делаю это ТАК:

Код
static void BootLoader()
{
void (*SysBootLoaderJmp)(void)=(void (*)(void))(*((uint32_t *)0x1ffff004));
__set_PRIMASK(1);
RCC_DeInit();
SysTick->CTRL=0;
SysTick->LOAD=0;
SysTick->VAL=0;
__set_PRIMASK(1);
__set_MSP(*((uint32_t *) 0x20000001));
SysBootLoaderJmp();
while(1);
}

заранее благодарен

Сообщение отредактировал IgorKossak - Dec 2 2015, 15:38
Причина редактирования: [codebox] для длинного кода, [code] - для короткого!
Go to the top of the page
 
+Quote Post
KnightIgor
сообщение Dec 2 2015, 12:40
Сообщение #2


Знающий
****

Группа: Участник
Сообщений: 643
Регистрация: 29-05-09
Из: Германия
Пользователь №: 49 725



Цитата(morpheus @ Dec 2 2015, 13:28) *
static void BootLoader()
{
void (*SysBootLoaderJmp)(void)=(void (*)(void))(*((uint32_t *)0x1ffff004));
__set_PRIMASK(1);
...
__set_PRIMASK(1);
...
}

Не вдаваясь в тонкости, чисто формально: два раза __set_PRIMASK(1); с параметром 1?
P.S. и __set_MSP(*((uint32_t *) 0x20000001)); берет из невыровненного адреса...

Сообщение отредактировал KnightIgor - Dec 2 2015, 12:43
Go to the top of the page
 
+Quote Post
ViKo
сообщение Dec 2 2015, 13:17
Сообщение #3


Универсальный солдатик
******

Группа: Модераторы
Сообщений: 8 634
Регистрация: 1-11-05
Из: Минск
Пользователь №: 10 362



Насколько я понимаю, перемычки Boot дают возможность отображения Flash, System Memory, RAM на нулевые адреса.
Чтобы встроенный загрузчик работал и из своей System Memory, код должен быть перемещаемый. А он такой?
А что за всем известное видео?
Go to the top of the page
 
+Quote Post
Aleksandr Barano...
сообщение Dec 2 2015, 13:35
Сообщение #4


Частый гость
**

Группа: Участник
Сообщений: 169
Регистрация: 31-08-05
Из: New York
Пользователь №: 8 118



А такая ли уж "большая кровь" - свой загрузчик? Мне кажется, это неделя работы.


--------------------
ASB
Go to the top of the page
 
+Quote Post
x893
сообщение Dec 2 2015, 14:10
Сообщение #5


Профессионал
*****

Группа: Свой
Сообщений: 1 333
Регистрация: 27-10-08
Из: Планета Земля
Пользователь №: 41 226



Один день - с перерывами на обед, полдник и с 11 до 16 рабочий день.
Go to the top of the page
 
+Quote Post
morpheus
сообщение Dec 2 2015, 15:03
Сообщение #6


Участник
*

Группа: Участник
Сообщений: 21
Регистрация: 7-09-06
Пользователь №: 20 173



Цитата(x893 @ Dec 2 2015, 18:10) *
Один день - с перерывами на обед, полдник и с 11 до 16 рабочий день.

снимаю шляпу..... но увы я не столько крут
Go to the top of the page
 
+Quote Post
x893
сообщение Dec 2 2015, 15:46
Сообщение #7


Профессионал
*****

Группа: Свой
Сообщений: 1 333
Регистрация: 27-10-08
Из: Планета Земля
Пользователь №: 41 226



Никакой крутизны нет - готовых на github тонна
Go to the top of the page
 
+Quote Post
morpheus
сообщение Dec 2 2015, 15:55
Сообщение #8


Участник
*

Группа: Участник
Сообщений: 21
Регистрация: 7-09-06
Пользователь №: 20 173



Цитата(x893 @ Dec 2 2015, 19:46) *
Никакой крутизны нет - готовых на github тонна

мне из тоны нужно 20 грамм ... есть чем конкретно помочь дай ссылку или конкретный код поймите что прежде чем спрашивать уже просмотрел и прописал.... дайте конкретики
Go to the top of the page
 
+Quote Post
x893
сообщение Dec 2 2015, 16:41
Сообщение #9


Профессионал
*****

Группа: Свой
Сообщений: 1 333
Регистрация: 27-10-08
Из: Планета Земля
Пользователь №: 41 226



В списке гугла первая ссылка
http://www.feaser.com/en/openblt.php
Если еще пару минут поделать copy/paste - могут забанить модераторы
Go to the top of the page
 
+Quote Post
Aleksandr Barano...
сообщение Dec 2 2015, 18:16
Сообщение #10


Частый гость
**

Группа: Участник
Сообщений: 169
Регистрация: 31-08-05
Из: New York
Пользователь №: 8 118



Цитата(x893 @ Dec 2 2015, 09:10) *
Один день - с перерывами на обед, полдник и с 11 до 16 рабочий день.

Ну, от начала до конца, со всем возможным тестированием ( обрыв линии, сбой питания, проверка загруженного образа, обновление самого бутлоудера из приложения и др.).


--------------------
ASB
Go to the top of the page
 
+Quote Post

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

 


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


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