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.

[参考译文] TM4C1290NCZAD:TM4C129X ROM USB 引导加载程序

Guru**** 2513185 points


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

https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/819663/tm4c1290nczad-tm4c129x-rom-usb-boot-loader

器件型号:TM4C1290NCZAD

是否有任何有关基于 ROM 的 USB 引导加载程序的文档? 我需要了解以下内容。

是否会在启动时注意闪存中没有程序、因此使用 DFU 启动以通过 USB 查找更新? (器件如何知道如何使用 USB/DFU?)。

收到 ROM_UpdateUSB (0)调用后是否会无限等待更新?  

如果在等待更新时、它已关闭并备份、会发生什么情况? (它将运行闪存程序、还是仍在等待更新?)。

是否可以为 ROM USB 引导加载程序配置这些内容中的任何内容?如果可以、如何配置?

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

    实际上、我们昨天刚刚在一次团队会议上讨论了 ROM 引导加载程序文档是如何分散和难以找到的。  

    [报价用户="Alexander Wardlow">启动时是否会注意到闪存中是否没有程序、因此使用 DFU 启动以通过 USB 查找更新? (器件如何知道如何使用 USB/DFU?)。

    启动时、CPU 开始从 ROM 执行。 它会检查 BOOT_CFG 寄存器以查看是否必须检查引脚并进入引导加载程序模式。 如果 boot_CFG 寄存器未引导至引导加载程序模式、它会检查闪存的前8个字节。 如果前4个字节包含有效的堆栈地址、后4个字节包含有效的复位矢量、则 CPU 通过加载堆栈指针并跳转到复位矢量指向的地址来开始执行。 否则、CPU 将进入循环、检查 UART0、I2C0、SSI0、USB0或以太网中的有效引导加载程序命令。  

    [报价用户="Alexander Wardlow"]收到 ROM_UpdateUSB (0)的调用后,它是否会无限等待更新?

    是的。

    [引用 user="Alexander Wardlow">如果在等待更新时关闭并备份更新,会发生什么情况? (它将运行闪存程序、还是仍在等待更新?)。

    该过程将重复。 如果器件从闪存运行并且调用了 ROM_UpdateUSB (0)、CPU 将再次返回到从闪存执行。 如果该闪存程序再次调用 ROM_UpdateUSB (0)、它将返回尝试执行 DFU 更新。 问题在于、如果在更新期间断电、闪存只能被部分擦除或部分编程。  

    [报价用户="Alexander Wardlow"]是否可以为 ROM USB 引导加载程序配置其中的任何内容?[/报价]

    复位时执行的、因为闪存为空白、不是 从应用程序代码调用 ROM_UpdateUSB (uint8_t * pu8USBBootROMInfo)时,应用程序需要配置引脚和 PLL。 它还接受一个指向阵列的指针、该阵列用于配置供应商 ID、产品 ID、总线供电与自供电、最大功率、器件版本、 和 USB 灯串。

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

    感谢 Bob Crosby。 不过、还有一件事。 在第一个问题中、它在寻找来自 USB0的有效命令、这是否包括通过 dfuprog.exe 发出的命令?

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

    是的。