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.

[参考译文] MSP432E401Y:以太网更新

Guru**** 2535750 points
Other Parts Discussed in Thread: MSP-EXP432E401Y

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

https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/1181811/msp432e401y-update-over-ethernet

器件型号:MSP432E401Y
主题中讨论的其他器件:MSP-EXP432E401Y

您好!

我正在尝试使用 MSP423E401控制器更新定制板上的代码。 我能够使用 BSL 脚本程序下载"boot_serial_emac_flash_MSP_EXP432E401Y_nortos_ccs.txt"和"boot_emac_flash_app_magicpacket_update_MSP_EXP432E401Y_nortos_ccs.txt"文件。 在终端上、我可以读取以下内容:

但是、我无法向器件发送代码、即"Blink.txt"。 我尝试使用 BSL 脚本程序和其他 TFTP 客户端程序来发送文件。 我还使用了 Wireshark 来查看数据包、并获得了以下信息:

注:为此、我已将 MSP432上的侦听端口从9更改为69、但在端口9上时仍然存在相同的问题。

那么、我如何将代码"Blink.txt"发送到电路板?   

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

    一年前、当我使用 Launchpad 板尝试此操作时、我做了以下注释:

    将主机 PC、目标板和 DHCP 服务器连接到交换机。

    这似乎非常重要。 如果没有交换机,则如果 BOOTP 数据包通过路由器/DHCP 服务器,它似乎会干扰 BOOTP 请求。

    这是否与您相关?

    我随后指出:

    加载魔术包演示应用。
    将 script2.txt 设置为具有目标板的 MAC 和未使用的 IP 地址以及主机 PC 的 IP 地址。

    重置目标板、该目标板现在将引导至闪存引导加载程序。

    在 PC 命令提示符下运行
    BSL-Scripter.exe script_2.txt
    应该看到:-

    我得到了:

    (笑声)
    客户端 IP 地址:192.168.0.43
    已收到 TFTP 读取请求!
    获取 TFTP 请求端点的端口:3541
    RX_DATA_BLOCK_32 boot_emac_flash_app_magicpacket_update_MSP_EXP432E401Y_nortos_ccs.txt
    阅读 txt 文件:C:\Sandbox\BSLScripter\MyTest\home\boot_emac_flash_app_magicpacket_update_MSP_EXP432E401Y_nortos_ccs.txt
    写入48008字节所用时间:1.078秒
    数据写入速度:43.49(kb/s)

    这是否有帮助?

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

    我能够接收 BOOTP 请求并加载 script_1.txt 和 script_2.txt。 加载 script_2.txt (也称为魔术包更新应用)后、我无法加载闪烁代码。 我已对问题进行回传、发现在程序等待30的情况下、我要发送的数据包的长度为18。  

    它不满足 swupdate.c 文件中的 if 条件并丢弃数据包。

       

    但我会尝试匹配尺寸

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

    您好!

    BSL 脚本编写程序 prog 会为一个文本文件发送正确大小的数据包、而不是为另一个文本文件发送正确大小的数据包、这似乎很奇怪-也许还有另一个问题!

    回顾我第一次尝试时的笔记、我发现:

    请注意,zip 脚本3尝试加载 zip 中不存在的新项目./blink_app2_MSP-EXP432E401Y.txt。 我用相同 的 magicpacket 应用程序替换了该文本、以显示它将在整个周期内运行。

    这是否意味着您必须构建自己版本的"Blink"? 它可能有问题吗? 在引导加载程序之后、链接器命令文件是否会将其移动到地址0x4000处?

    只是一些想法!

    Jim

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

    您好、Jim、

    谢谢您的回答、但我仍然坚持同样的问题。 以下是我要遵循的步骤、我的流程是否有问题?

     擦除主闪存  

     2.使用 scrip_1.txt 运行 BSL (发送引导加载程序)

     3.使用 script_2.txt 运行 BSL (发送魔术包更新)

     4.使用 script_3.txt 运行 BSL (发送我编写的闪烁应用程序)

    在第4步中、BSL 脚本编写器在"等待 BOOTP "处存根、当我尝试发送具有 TFTP 命令包大小的包时、包大小为18而不是30、因此应用程序会丢弃包。  

    是的、链接器将移动到0x4000。  

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

    这很奇怪-一切看起来都很好。

    您是否可以执行步骤3两次、因此用自己替换魔术包更新应用程序。 这将有助于确定问题是与闪烁应用程序有关还是与更新过程有关。

    一年多以前,但我做了很多你所做的事情,似乎是在工作。

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

    仍然是同样的问题:( 我能够第一次发送魔术包更新代码,但在第二次尝试发送时无法通过“等待 BOOTP 请求”。

    此图像来自第二次尝试。

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

    您好!

    boot_emac_flash_app_magicpacket_update_MSP_EXP432E401Y_nortos_ccs.txt 是一个应用程序。 此应用程序应等待来自 BSL 的魔术包、BSL 会尝试发送您的 blinky.txt。 当应用程序接收到魔术包时、它会将控制权转移到闪存引导加载程序。 然后、闪存引导加载程序将发送 BootP 请求。 如果未收到 BootP 请求、则可能意味着客户端从未收到魔术包、或者客户端出于某种原因未将控制权转移到引导加载程序。  

    执行 script_3.txt 时、当您尝试发送 blinky.txt 时、您是否会看到魔术包?魔术包应 包含6个字节的0xAA、后跟重复4次的目标 MAC 地址。 BSL 是否可能将魔术包发送到错误的 NIC? 我已经看到另一个器件(例如 TM4C129)将魔术包发送到另一个 NIC。 如果您的 PC 有多个 NIC、则禁用所有 NIC、但用于与客户端(MSP432E MCU)通信的 NIC 除外。  

     如果您已经看到发送到客户端的魔术包、但客户端没有跳转到引导加载程序、则需要以某种方式调试它为什么不跳转到引导加载程序。 应用程序的源代码位于 C:\ti\simplelink_msp432e4_sdk_4_20_00_12\examples\nortos\MSP_EXP432E401Y\boot_loader\boot_emac_flash_app_magicpacket_update\enet_lwip.c 中

     如您所见、应用程序正在等待  g_bFirmwareUpdate 进行设置。  G_bFirmwareUpdate 仅在收到魔术包时设置。 接收到魔术后,它将通过调用 SoftwareUpdateBegin()将控制权转移到引导加载程序。  

    下面是代码片段。  

    我还想给你一个抬头。 我将在1月3日前休假、在我缺席期间无法回复。  

    /*每当远程时,软件更新模块都会调用此函数
    *主机请求更新此板上的固件。 我们设置一个标志
    *将导致主循环退出并将控制权转移到引导加载程序。
    *
    *重要:
    *请注意、此回调是在中断上下文中进行的、因为它不是
    *允许从中断中将控制权转移到引导加载程序、
    *我们不能只在此处调用 SoftwareUpdateBegin()。 *
    空软件更新请求回调(空)

    G_bFirmwareUpdate = true;

    被咬了

    /*如果主机未发出固件请求,则 LED D1闪烁
    *在开关上、firmwar 请求检测退出闪烁程序并跳转到
    *闪存引导加载程序。 *
    while (!g_bFirmwareUpdate)

    MAP_GPIOPinWrite (GPIO_PORTN_BASE、GPIO_PIN_1、0x0);
    MAP_SysCtlDelay (getSystemClock / 6);
    MAP_GPIOPinWrite (GPIO_PORTN_BASE、GPIO_PIN_1、GPIO_PIN_1);
    MAP_SysCtlDelay (getSystemClock / 6);

    /*在通过控制之前,请确保 LED 已关闭。 *
    GPIOPinWrite (GPIO_PORTN_BASE、GPIO_PIN_1、0x0);

    /*将控制传递到配置了电路板的引导加载程序的任何类型
    *使用。 *
    SoftwareUpdateBegin (getSystemClock);

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

    感谢您的回复。 在欺骗了一个位之后、我能够发送"blink.txt"。 我创建了一个 UDP 客户端、该客户端发送一个魔术包、然后初始化 BSL 步骤。 但是、在上传代码后、它不会运行应用程序。 代码正在工作、因为当我通过 JTAG 对 MSP 进行编程时、它可以正常运行、但对于 BSL、它不会出现问题。 我尝试将代码移动到@4000和其他位置、如@6000等 有什么想法、为什么代码不起作用?

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

    您好!

     很抱歉、我刚刚休假回来。

     您能否检查您的闪存引导加载程序是否位于0x0处的闪存中? 在 script_1.txt 中、应将  boot_serial_emac_flash_MSP_EXP432E401Y_nortos_ccs.txt 编程到闪存0x0。 请确保下载 blink.txt 时、闪存引导加载程序 boot_serial_emac_flash_MSP_EXP432E401Y_nortos_ccs.txt 未自行擦除。 您可以打开 CCS 存储器浏览器并检查0x0处是否有任何代码。 我要求检查这一点的原因是、复位后、闪存引导加载程序将首先检查位置0x0和0x4处是否有有效的堆栈指针和复位矢量。 如果它在这两个地址找到有效的堆栈指针和复位矢量、那么它将跳转到您的 blinky.txt 应用并开始运行。 如果这两个位置被某种程度的擦除、那么它将再次进入引导加载模式。  

     另请参阅 MSP432E4 BSL 的应用手册。  https://www.ti.com/lit/slau746

     闪存引导加载 程序的源代码可在 C:\ti\simplelink_msp432e4_sdk_4_20_00_12\source\ti\devices\msp432e4\boot_loader 中找到。  

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

    嗨、新年快乐

    我忘记更新此主题、 我正在使用基于 TI-RTOS 的工程、并尝试通过更改链接器文件(.cmd   )中定义的原点来更改地址。首先、它给出了错误消息、指出默认存储器范围与现有存储器范围闪存重叠、默认存储器范围与现有存储器范围 SRAM 重叠。  然后、在下面的线程的帮助下、我使用 XGCONF 更改了 release.cfg 文件中的硬件中断矢量表。  

    感谢您的帮助和快速回答。