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**** 2460850 points
Other Parts Discussed in Thread: MSP432E401Y, UNIFLASH

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

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

器件型号:MSP432E401Y
主题中讨论的其他器件: UNIFLASH

工具与软件:

我已经在 msp432e401y 中按照 Etherent SDK 的引导加载操作。 我得到了串行终端的输出为"设备准备好接受 UDP 端口9的魔术包",现在如何闪存我所需的代码(魔术包)通过以太网. 我使用 BSL 脚本程序实现了上述"设备已准备就绪..."。   

除 BSL 脚本程序 SDK 外、还有关于通过以太网刷写定制代码的完整指南。

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

    嘿,我有完全相同的问题,
    如果您想弄清楚、请将其发布在此处。

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

    首先、你是否通过运行以下三个脚本来运行这些示例?  

    我在串行终端上得到的输出是"设备已准备好接受 UDP 端口9上的魔术包"、

    如果您到目前为止已经 通过运行脚本2加载了 boot_emac_flash_magicpacket_MSP_EXP432E401Y.txt 示例固件。   BOOT_EMAC_FLASH_magicpacket_MSP_EXP432E401Y 已经是示例固件。 您可以参考此示例、创建要由自定义加载程序加载的固件。  

    [quote userid="633349" url="~/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/1481741/msp432e401y-bootloading-over-ethernet 现在如何通过以太网刷写我所需的代码(magic packet)

    如果您查看示例固件、其中可以在 C:\ti\simplelink_msp432e4_sdk_4_20_00_12\examples\nortos\MSP_EXP432E401Y\boot_loader\boot_emac_flash_app_magicpacket_update 中找到完整源代码、它会等待魔术包。 通过运行脚本3、PC 会将魔术包发送到 MCU、接收后、固件将再次跳转到引导加载程序、对另一个固件进行编程。 在脚本3中、它将通过以太网端口下载一个闪烁示例。 您可以使用任何需要的应用程序。  

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

    运行此示例的脚本1后、出现了无效 TFTP 错误。 请提供有关如何执行此操作的分步说明、从仅使用 DHCP 连接到路由器的 MSP 开始。 我不确定如何获取  TI 的本指南中所述的空白 MSP。  

    我用于达到配置了引导加载程序的上一状态的步骤  

    1) 1)闪存 serial_emac_flash 示例

    2) 2)使用 Uniflash 中的手动擦除选项

    3) 3)重置 MSP

    4) 4)运行此脚本  

    日志
    以太网 E4xx 模式 MAC=70:FF:76:1C:E5:73 IPClient=192.168.0.2 IPServer=192.168.0.3
    RX_DATA_BLOCK_32 boot_serial_emac_flash_MSP_EXP432E401Y_nortos_ccs.txt

    BSL 脚本程序  

    5) 5)重置 MSP  

    6) 6)运行此脚本  

    日志
    以太网模式 E4xx MAC=70:FF:76:1C:E5:73 IPClient=192.168.0.100 IPServer=192.168.0.3
    RX_DATA_BLOCK_32 boot_emac_flash_app_magicpacket_update_MSP_EXP432E401Y_nortos_ccs.txt

    我的笔记本电脑和带有路由器的 MSP。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    [报价 userid="633349" url="~/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/1481741/msp432e401y-bootloading-over-ethernet/5689165 #5689165"]

    4) 4)运行此脚本  

    日志
    以太网 E4xx 模式 MAC=70:FF:76:1C:E5:73 IPClient=192.168.0.2 IPServer=192.168.0.3
    RX_DATA_BLOCK_32 boot_serial_emac_flash_MSP_EXP432E401Y_nortos_ccs.txt

    BSL 脚本程序  

    5) 5)重置 MSP  

    [报价]

    此处您的客户端 IP 为192.168.0.2。 这是使用过的 IP 地址吗?

    [报价 userid="633349" url="~/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/1481741/msp432e401y-bootloading-over-ethernet/5689165 #5689165"]

    6) 6)运行此脚本  

    日志
    以太网模式 E4xx MAC=70:FF:76:1C:E5:73 IPClient=192.168.0.100 IPServer=192.168.0.3
    RX_DATA_BLOCK_32 boot_emac_flash_app_magicpacket_update_MSP_EXP432E401Y_nortos_ccs.txt

    [报价]

    此处您的客户端 IP 为192.168.0.100。 为什么不 像脚本1中那样使用192.168.0.2?  

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

    我通过 DHCP 报告将 IP 取为192.168.0.100,所以我使用该 IP 作为魔术包,即使我使用 IP 192.168.0.2它第一次工作后,我收到错误无效的 TFTP 读取请求(在图像中),请告诉我为什么. 我必须重新启动 PC 才能执行此错误。 此外、如果我尝试刷写任何代码、则使用脚本3不仅会删除引导加载程序、而且生成的代码(timerled tirtos)也不会运行。 我有一个疑问是魔术包格式只基于没有 RTOS ,有没有任何方法我可以得到这种行为使用 RTOS 代码??

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

    您好!

     我无法重现您的问题。 我在 MSP432E LaunchPad 上运行这些示例。 请参阅下面我运行脚本1和脚本2的地方。 在运行脚本之前、我需要确保闪存已完全擦除。 我还使用 Wireshark 来查看通信量。 首次擦除闪存后、我等待 Wireshark 上显示 BOOTP 请求、然后再执行脚本1。 将自定义引导加载程序编程到闪存后、我将重置电路板并再次等待 BOOTP 请求、然后再执行脚本2。  

    脚本1日志:

    脚本2日志:

    Wireshark 显示 BOOTP、ARP 和 TFTP。  

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

    我们能够复制上述步骤并达到您的相同状态、但在此之后、我们会遇到以下问题:

    1)使用脚本3发送的任何代码均已成功发送,但由于某种原因无法在电路板上运行,这也会擦除引导加载程序  

    2)当我们在脚本2之后尝试对板执行 ping 操作,其中获取 IP 时, ping 失败,但 BSL 中的示例引导加载程序就是这样。当我们尝试相同的步骤系列,但使用 TI SDK 引导加载程序和 Magic 数据包时,板会显示在 ping 上  

    怀疑:

    1) 1)如何在运行脚本2后闪存定制 TI-RTOS 代码?

    2)在读取源代码时、注释提到了一个名为 LM FLASH 的工具、在脚本2之后也使用了该工具、但当我们使用 TI SDK 时确实设法对 MSP 进行了编程、但未执行代码和擦除引导加载程序的相同问题仍然存在、这就是适合此用例(MSP432E401Y Launchpad)的工具。

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

    自定义引导加载程序位于0x0、示例固件 (boot_emac_flash_app_magicpacket_update)内置为0x4000。 它可以是其他地址、只要它是1024字节的倍数即可。 检查.cmd 文件以了解。 当构建固件以运行脚本3时、您需要确保链接到0x4000、而不是0x0、对于0x0、它将覆盖位于0x0处的基于闪存的引导加载程序。  

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

    上面是输出当我们使用脚本3来刷写一个程序"链接"到0x4000时,我们不是真的确定你所说的链接到0x4000的意思,但我们所做的是修改.txt 文件并将@位置增加到4000所以初始@0000和@0040被替换为@4000和@4040  

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

    查看 boot_emac_flash_app_magicpacket_update 示例的.cmd、其中固件将从0x4000开始、因为引导加载程序配置文件期望其从该地址开始。 如前所述、您可以对其进行更改。 您需要确保更改闪存引导加载程序的 bl_config.h 文件和应用程序的.cmd 文件。  

    #define APP_BASE 0x00004000

    小程序

    FLASH (RX): origin = APP_BASE, length = 0x000FC000
    SRAM (RWX):origin = 0x20000000、length = 0x00040000
    }

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

    我能够通过更改闪存的来源和.cmd 文件的 intVect 更改我的应用程序的起始地址(闪烁 NORTOS )。 代码得到刷新,但我不能改变我的 tirtos 计时器 LED 代码的起始地址. 我怎么知道?"

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

    上述问题的图像

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

     如果 TI-RTOS 应用程序从此地址启动、您是否将 m3Hwi.resetVectorAddress 设置为0x4000?

    使用示例软件参考 Chester 在这篇文章中的答案。  https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/1024278/tm4c1294ncpdt-rtos-bios-not-working/3786291?tisearch=e2e-sitesearch&keymatch=vtable%20relocate#3786291

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

    在哪里我应该添加这个,我提到了在线程中的链接,我发现了很多. cfg 文件在内核. 我应该将  m3Hwi.resetVectorAddress 添加到哪个文件 ?

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

    在 TI-RTOS .cfg 文件中、添加:

    /*为此应用设置一个非零复位矢量地址、因为是由放置在地址零的引导加载程序启动的。
    链接器命令文件中的闪存区域设置为从该地址开始、以避免使用任何闪存
    为引导加载程序保留。 */
    m3Hwi.resetVectorAddress = 0x4000;

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

    您的意思是 release.cfg 文件、我在此目录 C:\ti\simplelink_msp432e4_sdk_4_20_00_12\kernel\tirtos 中看不到任何其他.cfg 文件。 ?

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

    是的、这是 release.cfg 文件。  您的工作区中应该有一个称为 tirtos_builds_MSP_EXP432E401Y_release_ccs 的依赖项目、所有其他 TI-RTOS 示例都依赖这个项目。  

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

    我已经把它添加到 release.cfg 文件,现在如果我在 msp432e401y.cmd 中更改闪存的来源 ,我仍然得到这个错误  

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

    谢谢您、我在  tirtos_builds_MSP_EXP432E401Y_release_ccs 中对 release .cfg 进行了更改 、然后关闭打开我的 CCS 并构建该项目、不产生任何错误、当刷写时会将代码放入内存闪存中的0x4000。