Страница 1 из 1

STM32 bootloader

Добавлено: Пт май 05, 2017 13:03:07
serb-radio
Доброго всем дня! Написал свой бутлодырь под 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
Myp3ik
jumpToApplication случайно не из прерывания вызывается ? :roll:

Re: STM32 bootloader

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

Re: STM32 bootloader

Добавлено: Пн май 08, 2017 12:35:43
AlanDrakes
Лично я бы советовал передавать по странице, или несколько старниц и обязательно опрашивать загрузчик на предмет "Готов к дальнейшему?".
Конечно, если у Вас на кристалле (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
baghear
Я передаю хекс, разбираю его пишу в память.

Re: STM32 bootloader

Добавлено: Ср май 10, 2017 08:11:43
amv2000
Здравствуйте! Не кому не встречалось примеров загрузки прошивки через виртуальный диск?

Re: STM32 bootloader

Добавлено: Ср май 10, 2017 12:39:07
serb-radio
А пишете через терминалку? или какой то свой софт пишете для загрузки?

Re: STM32 bootloader

Добавлено: Ср май 10, 2017 19:18:51
amv2000
[uquote="serb-radio",url="/forum/viewtopic.php?p=3101784#p3101784"]А пишете через терминалку?[/uquote]Не знаю кому вопрос? если мне, то даже не представляю как можно через терминалку прошить. Интересен вариант baghear сразу бросать hex файл, я пробовал bin через Mass Storage Device. Только чтобы не разбивать диск на два, надо создать виртуальный и записывать через него. Не имею представления как это делать.

Re: STM32 bootloader

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

Re: STM32 bootloader

Добавлено: Ср май 10, 2017 22:21:34
Мурик

Re: STM32 bootloader

Добавлено: Чт май 11, 2017 06:57:00
amv2000
Именно по этой статье и пробовал.

Re: STM32 bootloader

Добавлено: Пт май 12, 2017 18:12:04
baghear
Вот еще статейка подоспела
https://hubstub.ru/stm32/159-pishim-svo ... stm32.html

Re: STM32 bootloader

Добавлено: Ср май 24, 2017 14:36:29
baghear