This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

TMS570LS3137: About Ethernet upgrade bootLoader in TMS570LS3137 chip

Part Number: TMS570LS3137
Other Parts Discussed in Thread: UNIFLASH
I have here a sample program about BootLoader (Hercules_Ethernet_Bootloader). I want to apply it to the TMS570LS3137 chip and upgrade my app via Ethernet. Following the example, I managed to upload a program to light up the LEDs via TFTP and everything went well until then.
 
But I ran into difficulties when I wanted to use lwip in my app program. The app that contains lwip related code cannot be executed after being uploaded.
Then I tried simple printf, malloc, etc. and found that apps containing dynamically allocated memory or calling interrupts were not executed correctly (these programs can be run correctly when burned directly on the chip using uniflash).
 
The following files are bootloader and sample programs that I use and app programs that I used.
  • 我这里有一个关于BootLoader(Hercules_Ethernet_BootLoader)的示例程序。我想将其应用于TMS570LS3137芯片,并通过以太网升级我的应用程序。按照这个例子,我上传了一个程序,通过TFTP上传程序后,点亮LED,到此为止一切都很顺利。
    但当我想在我的应用程序中使用lwip时,我遇到了困难。上载后无法执行包含lwip相关代码的应用。
    然后我尝试了simple printf、malloc等,发现包含动态分配内存或调用中断的应用程序没有正确执行(使用uniflash直接在芯片上烧录时,这些程序可以正确运行)。

  • Hi we've got the issue and escalated to E2E for some help, please expect the response.

    Thanks.

  • Hi, our expert is out of office until 4/7. Please expect a delayed response.
    Also, please see this FAQ: software-dl.ti.com/.../index.html.

    Sorry for any inconvenience. 

  • Hi,

    From your message, the ethernet bootloader works well and the application image is loaded to flash. The issue is that the application image doesn't work, right?

    This is the memory map in your linker cmd file:

    MEMORY
    {
    VECTORS (X) : origin=0x00000000 length=0x00000020
    FLASH0 (RX) : origin=0x00000020 length=0x0017FFE0
    FLASH1 (RX) : origin=0x001A0000 length=0x00180000
    STACKS (RW) : origin=0x08000000 length=0x00001500
    RAM (RW) : origin=0x08001500 length=0x0003EB00

    /* USER CODE BEGIN (2) */
    /* USER CODE END */
    }

    you should use application start address here.

    For example:

    MEMORY
    {
    /* USER CODE BEGIN (2) */
    VECTORS (X) : origin=0x00200020 length=0x00000020
    FLASH_CODE (RX) : origin=0x00200040 length=0x8000 - 0x40 fill=0xFFFFFFFF /*sector 4/5*/
    FLASH0 (RX) : origin=0x00028000 length=0x00200000 - 0x28000

    Where 0x200020 is start address of the application image.