This discussion has been locked.
You can no longer post new replies to this discussion. If you have a question you can start a new discussion

STM32F429 DISC Board - FW_Upgrade and .bin

I have the cool STM32F429 discovery board and am using MDK-ARM Lite for evaluation.

I am wanting to use the FW_Upgrade project as a test system for my own product release but I am having a problem getting started. The FW_upgrade project comes with the software download from ST for the STM32F429 discovery board.

I compile/link the MDK-ARM FW_Upgrade project and get a .hex output which I use to program the board. I then load on a USB key one of the two binaries (.bin) which come with the project in the binary folder, either SysTick or LTDC_ColorKeying, and rename to image.bin. And as documented, the image.bin gets downloaded from the USB key and runs.

So far so good.

My next step is to see if I can generate Systick and LTDC_ColorKeying .bin by recompile and link the projects for MDK-ARM.

On the software download from ST are a number of peripheral projects, one of which is SysTick. I go in there, compile/link this project with MDK-ARM and get a .hex output. For a test, I program the board with the .hex directly and it works. So I know I can compile/link the .hex file correctly. I then convert the .hex to .bin (and try to give it a starting address of 0x802000), rename it image.bin and put on USB key. After I program the board with the FW_Upgrade.hex, and insert the USB key, I get a green light, but then nothing. I am guessing that it gets downloaded, but then jumps to neverland, which makes me think that I am not converting the .hex to .bin correctly. Another time, I also try changing the "Options for Target" -> "Target" tab -> "Read/Only Memory Areas" -> "IROM" to 0x8020000. And then compile link, and use hex2bin with no starting address. But this doesnt seem to work either.

So, what specifically do I need to do to create SysTick .bin that can be put on a USB thumbdrive and then load using the FW_Upgrade program?

  • IROM base of 0x08020000 in the Target Pane

    Make sure you set the vector table address in SystemInit() system_stm32f4xx.c

    Fix this:

    #define VECT_TAB_OFFSET  0x00 /*!< Vector Table base offset field.
                                       This value must be a multiple of 0x200. */
    

    so this works

    void SystemInit(void)
    {
    ..
      /* Configure the Vector Table location add offset address ------------------*/
    #ifdef VECT_TAB_SRAM
      SCB->VTOR = SRAM_BASE | VECT_TAB_OFFSET; /* Vector Table Relocation in Internal SRAM */
    #else
      SCB->VTOR = FLASH_BASE | VECT_TAB_OFFSET; /* Vector Table Relocation in Internal FLASH */
    #endif
    }