cancel
Showing results for 
Search instead for 
Did you mean: 

Jump application bootloader 0x8003000 interrupt not working

TPham.10
Associate II

hi guys!

Can you help me solve that problem:

I had write bootloader for stm32F300rct6, program have jump to main application success but interrupt not working. I don't know what is missing? 

In main application i edit #define FLASH_BASE ((uint32_t)0x08000000) to ((uint32_t)0x08003000). i had wirte on stm32f1 and F3 it's working and F1 & F3 have NVIC_SetVector but F0 don't have.

Thanks!

4 REPLIES 4

For the CM0 parts you have to copy the vector table into the from of the SRAM, and then remap the SRAM to Zero.

For the CM0+ based parts there is a SCB->VTOR so you can point to a new table.

Look for some IAP examples in the HAL trees.

Tips, buy me a coffee, or three.. PayPal Venmo Up vote any posts that you find helpful, it shows what's working..
TPham.10
Associate II

Hi, STM32F0 don't have SCB->VTOR

TPham.10
Associate II

I use function remap table:

void Remap_Table(void)

{

  // Copy interrupt vector table to the RAM.

  volatile uint32_t *VectorTable = (volatile uint32_t *)0x20000000;

  uint32_t ui32_VectorIndex = 0;

  for(ui32_VectorIndex = 0; ui32_VectorIndex < 48; ui32_VectorIndex++)

  {

    VectorTable[ui32_VectorIndex] = *(__IO uint32_t*)((uint32_t)FLASH_BASE + (ui32_VectorIndex << 2));

  }

  // Enable SYSCFG peripheral clock

RCC_APB2PeriphClockCmd(RCC_APB2Periph_SYSCFG, ENABLE) ;

  // Remap RAM into 0x0000 0000

  SYSCFG_MemoryRemapConfig(SYSCFG_MemoryRemap_SRAM);

}

and Set IROM1:start 0x8003000(application address) IRAM1:Start 0x200000C0 it's working but i don't kown why i'm set IRAM1:Start 0x20000000 then It's not working.

Well you advance the IRAM1 base to 0x200000C0 to carve out space for the table, and the linker doesn't put other things there.

Other things to consider are if you disable interrupts from the boot loader side, or if you call from an IRQ Handler (or callback)

Tips, buy me a coffee, or three.. PayPal Venmo Up vote any posts that you find helpful, it shows what's working..