cancel
Showing results for 
Search instead for 
Did you mean: 

In-Application Programming over ethernet

Sadegh Ghorbani
Associate II
Posted on July 16, 2018 at 14:24

Hi

I am using

STM32439I-EVAL

board. I want to program my board via ethernet. I searched and i could find an example in ST web site.

https://www.st.com/content/st_com/en/products/embedded-software/mcus-embedded-software/stm32-embedded-software/stm32-standard-peripheral-library-expansion/stsw-stm32070.html

I downloaded it and run it via IAR. In the main.h file there are 3 macros that called :

&sharpdefine USER_FLASH_FIRST_PAGE_ADDRESS 0x08010000

&sharpdefine USER_FLASH_LAST_PAGE_ADDRESS  0x080E0000

&sharpdefine USER_FLASH_END_ADDRESS        0x080FFFFF

I set these macros like above but the example doesn't work!

please help me how to set these macrose ...

#in-application-programming-over-ethernet #stm32-ethernet-bootloader
2 REPLIES 2
Posted on July 16, 2018 at 14:40

What does 'doesn't work' mean here, it's not a very specific failure. Does it compile? Does the Ethernet and data transfer portion work? Does the Flash write or erase fail?

HAL based example

STM32Cube_FW_F4_V1.21.0\Projects\STM324x9I_EVAL\Applications\LwIP\LwIP_IAP\readme.txt

Tips, Buy me a coffee, or three.. PayPal Venmo
Up vote any posts that you find helpful, it shows what's working..
Posted on July 16, 2018 at 15:28

Thanks for your quick answer

The program is compiled correctly and Ethernet and data transfer portion work well.

in the main.c file we have

if (((*(__IO uint32_t*)USER_FLASH_FIRST_PAGE_ADDRESS) & 0x2FFE0000 ) == 0x20000000)

    {

      /* Jump to user application */

      JumpAddress = *(__IO uint32_t*) (USER_FLASH_FIRST_PAGE_ADDRESS + 4);

      Jump_To_Application = (pFunction) JumpAddress;

      /* Initialize user application's Stack Pointer */

      __set_MSP(*(__IO uint32_t*) USER_FLASH_FIRST_PAGE_ADDRESS);

      Jump_To_Application();

    }

    else

    {/* Otherwise, do nothing */

      /* LED3 (RED) ON to indicate bad software (when not valid stack address) */

      LED_On(3);

      /* do nothing */

      while(1);

    }

The if statement condition is always False and the program go to the infinit loop .