Перейти к содержанию
    

STM32 bootloader и FreeRtos

Здравствуйте.

У меня evaluation kit с процессором STM32F103 с FreeRtos. Среда - IAR541.

FreeRtos устойчиво работает, если ее загрузить с адреса 0x8003000 и запустить. Если с адреса 0x8000000 загрузить лоудер, который ничего не делает кроме перехода на FreeRtos - FreeRtos доходит до vTaskStartScheduler(); и попадает в HardFaultException. Если вместо FreeRtos записать простую программу мигания светодиодом - все прекрасно работает.

Вот код функции перехода:

static bool jump_to( unsigned char* dest )
{
   void (*prog_start)(void);

   if (( *(unsigned long*)dest & 0x3FFF8000 ) == 0x20000000 )  // looks like a stack pointer?
   {
       __disable_interrupt();
	SysTick->CTRL &= 0;
	prog_start = (void(*)(void))*(unsigned long*)(dest + 4);      // load program start address
       __MSR_MSP( *(unsigned long*)dest );             // load user stack
       prog_start();                                   // now jump
   }
   return ( false );
}

 

Значение dest - 0x8003000.

 

Функцию я е написал на основе примера из библиотеки STM32.

Что я упустил?

Изменено пользователем Aleksandr Baranov

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Уже получилось. __disable_interrupt() не надо было делать.

Изменено пользователем IgorKossak
Бездумнейшее самоцитирование

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Уже получилось. __disable_interrupt() не надо было делать.

Да это не должно влиять вообще - у вас же происходит переход на адрес старта кода, в котором все собственно заново инициализируется.

 

У меня предположение, что не были переназначены местоположения векторов NVIC...

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...