Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: STM32F100 и BootLoader
Форум разработчиков электроники ELECTRONIX.ru > Микроконтроллеры (MCs) > ARM
morpheus
Всем здравствуйте
Я понимаю что тема уже поднималась на форуме, однако ясности в конкретной реализации НЕТ.
Задача следующая :
есть процессор 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);
}

заранее благодарен
KnightIgor
Цитата(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)); берет из невыровненного адреса...
ViKo
Насколько я понимаю, перемычки Boot дают возможность отображения Flash, System Memory, RAM на нулевые адреса.
Чтобы встроенный загрузчик работал и из своей System Memory, код должен быть перемещаемый. А он такой?
А что за всем известное видео?
Aleksandr Baranov
А такая ли уж "большая кровь" - свой загрузчик? Мне кажется, это неделя работы.
x893
Один день - с перерывами на обед, полдник и с 11 до 16 рабочий день.
morpheus
Цитата(x893 @ Dec 2 2015, 18:10) *
Один день - с перерывами на обед, полдник и с 11 до 16 рабочий день.

снимаю шляпу..... но увы я не столько крут
x893
Никакой крутизны нет - готовых на github тонна
morpheus
Цитата(x893 @ Dec 2 2015, 19:46) *
Никакой крутизны нет - готовых на github тонна

мне из тоны нужно 20 грамм ... есть чем конкретно помочь дай ссылку или конкретный код поймите что прежде чем спрашивать уже просмотрел и прописал.... дайте конкретики
x893
В списке гугла первая ссылка
http://www.feaser.com/en/openblt.php
Если еще пару минут поделать copy/paste - могут забанить модераторы
Aleksandr Baranov
Цитата(x893 @ Dec 2 2015, 09:10) *
Один день - с перерывами на обед, полдник и с 11 до 16 рабочий день.

Ну, от начала до конца, со всем возможным тестированием ( обрыв линии, сбой питания, проверка загруженного образа, обновление самого бутлоудера из приложения и др.).
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.