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 无效 TFTP 读取请求

Guru**** 2589280 points


请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/microcontrollers/msp-low-power-microcontrollers-group/msp430/f/msp-low-power-microcontroller-forum/769387/linux-msp432e401y-bsl-scripter-invalid-tftp-read-request-in-the-packet-received

器件型号:MSP432E401Y

工具/软件:Linux

在尝试使用 MSP432E4上的以太网引导加载程序示例时、我遇到的问题与其他论坛用户相同。 具体来说、Debian Linux 上的 BSL 脚本程序标识从客户端微控制器接收到的 BOOTP 请求、并且 IP 地址和 MAC 地址看起来是正确的、但我仍然收到以下错误消息:

模式以太网 E4xx MAC=70:ff:76:1c:b9:2D IPClient=128.168.127.2 IPServer=128.168.127.1
参数中给出了本地 IP 地址
主机的本地 IP 地址:128.168.127.1
正在等待 BOOTP 请求!
正在等待 BOOTP 请求!
正在等待 BOOTP 请求!
已收到 BOOTP 请求!
发送 BOOTP 回复!
已准备好接收 TFTP 读取请求!
客户端 IP 地址:128.168.127.2
[ERROR_MESSAGE]接收到的数据包中存在无效的 TFTP 读取请求!
正在等待 TFTP 读取请求!

有什么想法吗? 不幸的是、详细模式不再有用;它至少可以告诉我详细模式下的数据包有什么问题。 我有几个以太网接口、但我认为如果 BSL 脚本正确执行、这不应该成为问题:由于我能够接收 BOOTP 请求并发送响应、我还应该能够在同一个接口上接收 TFTP 读取请求。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    我正在使用 BSL 脚本编写器3.4.0.1
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    另一个重要信息是:我使用的是由 ARM-GCC 生成的十六进制文件、我的 BSL 脚本程序配置文件如下所示:

    日志
    模式以太网 E4xx MAC=70:ff:76:1c:b9:2D IPClient=128.168.127.2 IPServer=128.168.127.1
    RX_DATA_BLOCK_32 / /blinky.hex
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    Paul、
    我目前没有任何具体的方向。 这似乎是在其他情况下出现的,我们将在内部进行讨论。 您能否查看此主题并查看是否有任何建议适用/有帮助?

    e2e.ti.com/.../750595

    此致、
    Chris
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    好的、我决定继续执行 python 实现、而不是 TI BSL 脚本编写器。 我将从 pybootd 开始、并为 BOOTP (而不是 DHCP)修改它。 我必须对 BL_EMAC.c 进行一些小的修改、特别是我更改了在 BOOTP 和 TFTP 步骤之间重新使用 UDP 对象的方式:

    uip_ipaddr_copy (&G)_PCONN->ripaddr、g_sServerAddr);
    UIP_UDP_BIND (g_PCONN、HTONS (13633));

    替换为:

    UIP_UDP_REMOVE (g_PCONN);
    G_PCONN = UIP_UDP_NEW (&g_sServerAddr、HTONS (TFTP_PORT));
    UIP_UDP_BIND (g_PCONN、HTONS (TFTP_PORT));

    还有一些其他的小更改,如从 SendTFTPGet ()中删除此内容:

    G_PCONN->rport = HTONS (TFTP_PORT);

    我可以看到数据得到 UC 的确认、但它会永久循环、而不会分支到新映像中、因此我需要弄清其中发生了什么。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    最后一个问题就是我需要 TFTP 来提供.bin 文件、而不是.hex 文件(包括其他簿记信息)。 引导加载程序将十六进制文件正确标识为无效映像:)。