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.

[参考译文] MSP432E411Y:ROM bootloader问题

Guru**** 2589280 points


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

https://e2e.ti.com/support/microcontrollers/msp-low-power-microcontrollers-group/msp430/f/msp-low-power-microcontroller-forum/654940/msp432e411y-rom-bootloader-questions

部件号:MSP432E411Y

我不太确定如何配置MSP432E411上的ROM bootloader?  据我所知,在默认设置(BOOTCFG=FFFFFFFFFF'FFfeh)中,启动代码将在启动时检查pH7级别;如果为高,则输入ROM bootloader (从0100 '0000h开始)。  如果闪存重置矢量也被擦除,则将进入ROM。

支持哪些接口?  具体来说,是否支持USB更新?

是否支持通过SDK中的函数调用或编程序列直接从软件进入ROM bootloader?  此条目是否需要设置以上引脚/擦除闪存。

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

    BOOTCFG的重置值不支持引导引脚。 这是因为寄存器的位-8 (即EN位)已设置。 仅当清除EN位(即其值为0)时,才会检查Pin。 为了能够清除位并使其永久化,您需要首先使用更新的值提交寄存器。 这将确保每次启动或硬重置设备时,都要轮询引脚,以检查Port-Pin的值是否与调用ROM启动加载程序匹配。

    在MSP432E4x器件上,引导加载程序支持的接口是ROM中的UART,I2C,SSI,USB和以太网。 对于以太网启动加载程序,需要25 MHz的外部晶体,而对于USB,则必须使用外部晶体。

    还支持从应用程序进入引导装载程序。 为此,需要特定的接口调用。 SDK中显示的示例也是如此。 请参考以下MSP432ED4的SDK路径。

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

    ¨谢谢!  我在这里误译了EN位。

    我不确定我是否理解从应用程序进入ROM bootloader的方式...如果我理解正确,我会调用IRQ功能,将SP重置为应用程序的SP地址,并从ISR内调用AppUpdateUSB?  但是,这不会从ROM执行,而是需要单独链接到闪存中?  是否有SDK功能?

    引导加载程序如何在配置的接口之间进行选择?

    我更喜欢只使用ROM bootloader的解决方案!

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

    不需要,从应用程序代码转到ROM引导加载程序时,不需要调用IRQ功能。 当编译应用程序代码并调用ROM时,所使用的ROM接口具有定义的位置,并在应用程序代码链接器调用期间链接。 ROM Boot Loader用户指南提供了对所选接口的所有调用。

    当由于闪存为空或由于Boot Pin极性匹配而调用ROM引导加载程序时,它会轮询接口以查看是否收到数据包。 显示接收到的有效数据包的接口是选定的接口。 但是,由于ROM更新功能是特定于接口的,因此从应用程序代码到ROM更新功能不可能实现相同的功能。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    嗯...文档不是很清楚哪些呼叫是公开的(这是SLAU746,对吗?) 我假定我可以调用AppUpdateUSB(),但这将导致链接错误。 我应该链接哪个库和/或要包括哪个标头(我正在使用TI编译器)。 我仍在使用SDK 1.55 .00.21。 --我需要升级吗?
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    Jaakko您好!

    SLAU746用于基于闪存的引导加载程序。 正确的是,基于ROM的引导加载程序没有得到很好的记录。 调用ROM API的API是

    ROM_UpdateEMAC
    ROM_UpdateI2C
    ROM_UpdateSSI
    ROM_UpdateUART
    ROM_UpdateUSB

    您需要包含driverlib中的rom.h和rom_map.h。

    如果您可以知道您要查找的特定界面,我可以提供更多信息
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    谢谢!  更新主要通过USB进行。  是否需要配置和/或启用外围设备,或者ROM代码是否会处理此问题?  USB设备在进入时的预期状态是什么,或者所有内容都将被初始化?  描述符是否可以配置(PID/VID)/ UpdateUSB()使用的(非const) pui8DescriptionInfo参数是什么?

    我认为没有办法使用不同的UART来更新ROM代码,但这需要链接闪存代码吗?

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

    从应用程序代码调用ROM_UpdateXXX功能时,应用程序代码需要确保外设的IO配置正确,并且外设已启用时钟并配置为正确时钟。 另外,在跳至ROM更新功能之前,CPU需要确保在NVIC级别禁用所有外围中断,以便引导加载程序不会被中断处理程序中断。

    对于USB,ROM使用TI提供的预定义PID/VID。 必须在为ROM引导加载程序重新调用USB之前终止USB。

    UART-0也用于基于UART的启动加载程序。