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.

EK-TM4C1294XL: Need to do firmware upgrade over Ethernet in Linux

Part Number: EK-TM4C1294XL
Other Parts Discussed in Thread: UNIFLASH

I checked the forums related to firmware upgrade over Ethernet. I found only option to flash over Ethernet is LM flash programmer but that tool wont support for linux.

i checked uniflash tool but does not support ethernet flashing.

can you please provide me the possible way to upgrade firmware through ethernet in linux.

or 

if you can provide me the eflash.exe file for linux platform it will be more helpful.

Thanks

  • Hello Kishore,

    The eflash tool offered via TivaWare is the way to go for this. We don't have a Linux-built .exe for that, our build scripts only run in Windows environment. But you can take the source code in tools\eflash to implement that command line based solution in Linux. That is what we have recommended to prior customers and they have been successful with it - we just don't have it readily pre-built to share unfortunately.

  • Hello Ralph Jacob,

    Thanks for your reply,

    We dont have any other way to flash the firmware over Ethernet in Linux. TI is not providing any tool or script to flash over Ethernet in linux.

    If you have anything to do on my requirement suggest that . please share the required solution for my requirement.

    Thanks 

  • Hello Kishore,

    Unfortunately what I stated above is the extent of our offering Linux with TM4C. I don't have any further solutions to offer.

  • Hi Ralph Jacobi

    As you suggested, ported the eflash tool to the Linux platform.

    While running the application,able to establish socket connection.

    But when calling the function “SendFirmwareUpdateMagicPacket” sendto is failing giving an error code:13(Permission denied ),even running the application with sudo permissions.

    Can you please guide why this is happening?

    Thanks

  • Hello Kishore,

    We don't have Linux expertise but I asked our Ethernet expert for his thoughts and in a brief search he saw that that in the socket option the Broadcast needs to be enabled with:

    setsockopt(sock, SOL_SOCKET, SO_BROADCAST, &on, sizeof(on));

    Sources:

    https://www.experts-exchange.com/questions/20862022/sendto-Permission-denied.html

    https://comp.unix.programmer.narkive.com/dTeK686I/sendto-permission-denied-in-linux-systems

    I would recommend you do further searches if that doesn't resolve the issue.

  • Ralph Jacobi said:
    We don't have Linux expertise but I asked our Ethernet expert for his thoughts and in a brief search he saw that that in the socket option the Broadcast needs to be enabled with:

    setsockopt(sock, SOL_SOCKET, SO_BROADCAST, &on, sizeof(on));

    I was looking at TivaWare_C_Series-2.2.0.295/tools/eflash/bootp_server.c, and the CreateSocket() function should already be setting the SO_BROADCAST option on the socket used for sending the magic packet.

    I haven't yet attempt to run the code to try and investigate the problem.

  • Hi Jacobi and Chester Gillon

    setsockopt() function is passed with SO_BROADCAST option and all the socket are created successfully and started sending magic packet. 

    But it is "Waiting for packet ...", it is keep on waiting in "select" function returning zero always in below condition (On Wireshark we have observed that, EVK is sending bootp packet but not received by the eflash application)

    if(select(i32AddrLen + 1, &sDescriptors, 0, 0, &sTime) != 0)


    since it is not entering into if condition, eflash tool is waiting for bootp packet and sending the magic packet infinately.

    What could be the reason for this behaviour?

    Thanks

  • Hi,

    kishore k said:

    since it is not entering into if condition, eflash tool is waiting for bootp packet and sending the magic packet infinately.

      What is the eflash command you are giving on the command line? Did you provide the correct MAC address and IP address for the MCU?

      Did you get the same eflash to work in Windows machine? 

      You said the EVM is sending the bootp packet. How many times of the bootp requests did you see on wireshark? 

       Can you show the wireless capture. Please filter out network traffic that is not related the bootloading . 

      

  • Hi charles tsai

    Thanks for the support.

    My issue resolved,i am able to flash through eflash.

    I have one more requirement, i need to jump to bootp mode from application.

    Currently first flashing boot_emac_flash example to make the board into bootp mode. Then using eflash, upgrading the application area.

    Is there any way to directly jump to bootp mode from the application area without doing manually ??

    Thanks

  • Hi,

      Please refer to the boot_demo_emac_flash example. This is an application that demonstrates jumping from the application to the bootloader when the application detects the magic word from the host. You can also implement such that when an event (e.g. a switch is pressed), it will jump back to the bootloader. Look at the code where it calls the SoftwareUpdateBegin() to jump back to the bootloader.

      Please also share with us how did you resolve the eflash issue on the Linux side. This will benefit the community who have similar trouble. 

  • Hi Charles tsai,


    Thanks,Your suggestion solved my requirement.

    Please also share with us how did you resolve the eflash issue on the Linux side. This will benefit the community who have similar trouble. 

    Eflash tool is running in linux which is having  wifi(wlp2s0) and ethernet(enp10) interfaces, here bootp is getting on wifi(wlp2s0) but select function waiting for ethernet(enp10) after configured as ethernet as default then able flash using eflash tool.