Кто любит RISC в жизни, заходим, не стесняемся.
Ответить

STM32 bootloader

Пт май 05, 2017 13:03:07

Доброго всем дня! Написал свой бутлодырь под 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)
   {
   }

Re: STM32 bootloader

Пт май 05, 2017 13:42:23

jumpToApplication случайно не из прерывания вызывается ? :roll:

Re: STM32 bootloader

Пн май 08, 2017 12:12:43

Уже разобрался, с переносом векторов косяк был. А вот другой вопрос: как передать в МК бинарник с осн прогой? И как его кушать постранично по 2кб или налету писать? Чего посоветуете?

Re: STM32 bootloader

Пн май 08, 2017 12:35:43

Лично я бы советовал передавать по странице, или несколько старниц и обязательно опрашивать загрузчик на предмет "Готов к дальнейшему?".
Конечно, если у Вас на кристалле (RAM > ROM), то можно сразу всё целиком передать и пусть оно там себе занимается самопрограммированием. А в классических случаях (RAM <= ROM) - передают прошивку по частям.

UPD: Поправка. По "странице" не всегда срабатывает. Например, у меня есть чудо-юдо кристалл STM32F745, где 512kiB Flash, но только 6 секторов [32k,32k,32k,32k,128k,256k]. В более старшей модели есть и 8 секторов (+2 * 256k), так что писать лучше по нескольку килобайт. Я бы остановился на размере сегмента в 1kiB, либо даже размере классического сектора - 512B. И передать по сети можно одним пакетом (MTU помним?), и пишется шустро.

Re: STM32 bootloader

Пн май 08, 2017 23:30:44

Я передаю хекс, разбираю его пишу в память.

Re: STM32 bootloader

Ср май 10, 2017 08:11:43

Здравствуйте! Не кому не встречалось примеров загрузки прошивки через виртуальный диск?

Re: STM32 bootloader

Ср май 10, 2017 12:39:07

А пишете через терминалку? или какой то свой софт пишете для загрузки?

Re: STM32 bootloader

Ср май 10, 2017 19:18:51

А пишете через терминалку?
Не знаю кому вопрос? если мне, то даже не представляю как можно через терминалку прошить. Интересен вариант baghear сразу бросать hex файл, я пробовал bin через Mass Storage Device. Только чтобы не разбивать диск на два, надо создать виртуальный и записывать через него. Не имею представления как это делать.

Re: STM32 bootloader

Ср май 10, 2017 21:48:15

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

Re: STM32 bootloader

Ср май 10, 2017 22:21:34

http://www.avislab.com/blog/stm32-bootloader_ru/

Re: STM32 bootloader

Чт май 11, 2017 06:57:00

Именно по этой статье и пробовал.

Re: STM32 bootloader

Пт май 12, 2017 18:12:04

Вот еще статейка подоспела
https://hubstub.ru/stm32/159-pishim-svo ... stm32.html

Re: STM32 bootloader

Ср май 24, 2017 14:36:29

Вот и продолжение
https://hubstub.ru/stm32/160-pishem-svo ... henie.html
Ответить