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.

Linux/MSP432E401Y: BSL Scripter invalid TFTP Read Request in the packet received

Part Number: MSP432E401Y

Tool/software: Linux

I am having the same problem as another forum user when trying to use the ethernet bootloader example on the MSP432E4. Specifically, BSL scripter on Debian Linux identifies the BOOTP request received from the client microcontroller, and the IP addresses and MAC addresses appear to be correct, but I still get this error message:

MODE Ethernet E4xx MAC=70:ff:76:1c:b9:2d IPClient=128.168.127.2 IPServer=128.168.127.1
Local IP Address is given in the parameter
Local IP Address of Host: 128.168.127.1
Waiting for BOOTP request!
Waiting for BOOTP request!
Waiting for BOOTP request!
BOOTP request received!
Send BOOTP reply!
Ready to receive the Tftp read request!
Client IP address: 128.168.127.2
[ERROR_MESSAGE]There is invalid TFTP Read Request in the packet received!
Waiting for TFTP read request!

Any thoughts? Unfortunately verbose mode is not any more help; it could at least tell me what is wrong with the packet in verbose mode. I do have several ethernet interfaces, but I don't think that should be an issue if the BSL scripter is implemented correctly: since I'm able to receive the BOOTP request and send the response, I should also be able to receive the TFTP Read Request on the same interface.

  • I am using BSL scripter 3.4.0.1
  • One other important piece of information: I'm using a hex file produced by ARM-GCC and my BSL scripter configuration file looks like this:

    LOG
    MODE Ethernet E4xx MAC=70:ff:76:1c:b9:2d IPClient=128.168.127.2 IPServer=128.168.127.1
    RX_DATA_BLOCK_32 /<path>/blinky.hex
  • Paul,
    I do not have any concrete direction at this time. It seems to have come up in other contexts and we will discuss internally. Can you check out this thread and see if any of the suggestions are applicable/helpful?

    e2e.ti.com/.../750595

    Regards,
    Chris
  • Ok, I've decided to proceed with a python implementation rather than the TI BSL scripter. I'm starting with pybootd and modifying it for BOOTP (instead of DHCP). I had to make some small modifications to bl_emac.c, specifically I changed how the UDP object is re-used between the BOOTP and TFTP steps:

    uip_ipaddr_copy(&g_pConn->ripaddr, g_sServerAddr);
    uip_udp_bind(g_pConn, HTONS(13633));

    Replaced with:

    uip_udp_remove(g_pConn);
    g_pConn = uip_udp_new(&g_sServerAddr, HTONS(TFTP_PORT));
    uip_udp_bind(g_pConn, HTONS(TFTP_PORT));

    And a few other small changes like removing this from SendTFTPGet():

    g_pConn->rport = HTONS(TFTP_PORT);

    I can see the data getting ACK'd by the uC, but it loops forever without branching into the new image, so I need to figure out what's going on there.

  • Last issue was just that I needed TFTP to serve the .bin file, not the .hex file (which includes other bookkeeping info). Bootloader correctly identified the hex file as an invalid image :).

**Attention** This is a public forum