Форум РадиоКот https://radiokot.ru/forum/ |
|
STM32 bootloader https://radiokot.ru/forum/viewtopic.php?f=59&t=144899 |
Страница 1 из 1 |
Автор: | serb-radio [ Пт май 05, 2017 13:03:07 ] |
Заголовок сообщения: | STM32 bootloader |
Доброго всем дня! Написал свой бутлодырь под STM32f103. Делал это впервые, так что не пинайте. Вопрос такой: прошиваю сначала основную прогу например с адреса 0x800A000, с корректировкой размера (в options for target в Кейле), затем прошиваю бут с опцией прошивальщика erase sectors. Сначала стартует бут, потом переходи в основную прогу, все норм. Но вот если питание после перепрошивки выключить и включить снова, стартует бут и не переходит в основную прогу. В чем может быть проблема? Функция перехода к осн приложению Код: void jumpToApplication(uint32_t addr) { typedef void (*pFunction)(void); pFunction Jump_To_Application; uint32_t JumpAddress; JumpAddress = *(uint32_t*) (addr + 4); Jump_To_Application = (pFunction) JumpAddress; // Initialize user application's Stack Pointer __set_MSP (*(vu32*) addr); Jump_To_Application(); } Перенос векторов в основном приложении Код: __set_PRIMASK(1);
// NVIC_SetVectorTable(NVIC_VectTab_FLASH, 0x0800A000); NVIC_SetVectorTable(NVIC_VectTab_FLASH, 0xa000); __set_PRIMASK(0); pll_init (); pio_config (); // ðàçáëîêèðîâàíèå ôëýøà FLASH_Unlock(); // èíèò ôëýøà EE_Init(); //__disable_irq(); for(i_tmp=0;i_tmp<12;i_tmp++){set_sns_lines(i_tmp);} USART1_Init(2); //9600 RTC_conf (); while(1) { } |
Автор: | Myp3ik [ Пт май 05, 2017 13:42:23 ] |
Заголовок сообщения: | Re: STM32 bootloader |
jumpToApplication случайно не из прерывания вызывается ? ![]() |
Автор: | serb-radio [ Пн май 08, 2017 12:12:43 ] |
Заголовок сообщения: | Re: STM32 bootloader |
Уже разобрался, с переносом векторов косяк был. А вот другой вопрос: как передать в МК бинарник с осн прогой? И как его кушать постранично по 2кб или налету писать? Чего посоветуете? |
Автор: | AlanDrakes [ Пн май 08, 2017 12:35:43 ] |
Заголовок сообщения: | Re: STM32 bootloader |
Лично я бы советовал передавать по странице, или несколько старниц и обязательно опрашивать загрузчик на предмет "Готов к дальнейшему?". Конечно, если у Вас на кристалле (RAM > ROM), то можно сразу всё целиком передать и пусть оно там себе занимается самопрограммированием. А в классических случаях (RAM <= ROM) - передают прошивку по частям. UPD: Поправка. По "странице" не всегда срабатывает. Например, у меня есть чудо-юдо кристалл STM32F745, где 512kiB Flash, но только 6 секторов [32k,32k,32k,32k,128k,256k]. В более старшей модели есть и 8 секторов (+2 * 256k), так что писать лучше по нескольку килобайт. Я бы остановился на размере сегмента в 1kiB, либо даже размере классического сектора - 512B. И передать по сети можно одним пакетом (MTU помним?), и пишется шустро. |
Автор: | baghear [ Пн май 08, 2017 23:30:44 ] |
Заголовок сообщения: | Re: STM32 bootloader |
Я передаю хекс, разбираю его пишу в память. |
Автор: | amv2000 [ Ср май 10, 2017 08:11:43 ] |
Заголовок сообщения: | Re: STM32 bootloader |
Здравствуйте! Не кому не встречалось примеров загрузки прошивки через виртуальный диск? |
Автор: | serb-radio [ Ср май 10, 2017 12:39:07 ] |
Заголовок сообщения: | Re: STM32 bootloader |
А пишете через терминалку? или какой то свой софт пишете для загрузки? |
Автор: | amv2000 [ Ср май 10, 2017 19:18:51 ] |
Заголовок сообщения: | Re: STM32 bootloader |
А пишете через терминалку? Не знаю кому вопрос? если мне, то даже не представляю как можно через терминалку прошить. Интересен вариант baghear сразу бросать hex файл, я пробовал bin через Mass Storage Device. Только чтобы не разбивать диск на два, надо создать виртуальный и записывать через него. Не имею представления как это делать.
|
Автор: | baghear [ Ср май 10, 2017 21:48:15 ] |
Заголовок сообщения: | Re: STM32 bootloader |
Как оказалось этот вариант самый простой, на самом деле в хексе всего три типа пакетов, для каждого пишется обработчик и вуаля. Сначала пробовал конвертировать хекс в бинарник потом заливать, но это лишние тело движение. В хексе указывается размер пакета, тип пакета и если надо адрес, то есть все что надо. |
Автор: | Мурик [ Ср май 10, 2017 22:21:34 ] |
Заголовок сообщения: | Re: STM32 bootloader |
http://www.avislab.com/blog/stm32-bootloader_ru/ |
Автор: | amv2000 [ Чт май 11, 2017 06:57:00 ] |
Заголовок сообщения: | Re: STM32 bootloader |
Именно по этой статье и пробовал. |
Автор: | baghear [ Пт май 12, 2017 18:12:04 ] |
Заголовок сообщения: | Re: STM32 bootloader |
Вот еще статейка подоспела https://hubstub.ru/stm32/159-pishim-svo ... stm32.html |
Автор: | baghear [ Ср май 24, 2017 14:36:29 ] |
Заголовок сообщения: | Re: STM32 bootloader |
Вот и продолжение https://hubstub.ru/stm32/160-pishem-svo ... henie.html |
Страница 1 из 1 | Часовой пояс: UTC + 3 часа |
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group http://www.phpbb.com/ |