我使用的是 TMS320F28377S 微控制器、我想使用外部闪存(Microchip SST26VF032B)更新其固件。 请告诉我如何操作。 实际上、我想通过使用笔驱动器无线更新固件。 在此过程中、我首先要复制闪存上的固件文件、然后启动 SPI 引导加载程序以更新固件。我发现"SimpleLink"可用于 TI 无线 MCU。 因此,TMS320F28377S 有类似的解决方案吗?
。
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.
我使用的是 TMS320F28377S 微控制器、我想使用外部闪存(Microchip SST26VF032B)更新其固件。 请告诉我如何操作。 实际上、我想通过使用笔驱动器无线更新固件。 在此过程中、我首先要复制闪存上的固件文件、然后启动 SPI 引导加载程序以更新固件。我发现"SimpleLink"可用于 TI 无线 MCU。 因此,TMS320F28377S 有类似的解决方案吗?
。
尊敬的 Sam:
您能不能用您想要实现的目标的方框图来阐明您的解释? 我们将能够更好地帮助您。
关于你在项目3中的问题。 这是一个系统级决策、您必须对如何实施做出决定。 一种简单且常用的方法是创建一个小型永久驻留监视器或引导加载程序映像、该映像始终存在并能够与主机通信。 加电时、它等待主机发出命令以查看是否有新程序可用。 可能存在合理持续时间的超时、如果未从主机接收到命令、则监控程序只需启动已有的应用程序即可。 如果应用程序无法启动、它只需返回监视器并继续等待主机发出的命令。 如果有来自主机的命令、则可以开始相应的握手、以开始将程序映像更新到可引导位置的过程。 加载映像后、即可启动应用程序。 如果在更新过程中出现电源故障、则更新未完成、无法启动应用程序。 因此、在下一次通电时、目标将从监视器内再次启动该过程、并等待主机发出命令、从开始重复更新。
另一种选择是拥有两张图像:一张旧图像和一张新图像。 在给定的时间只能更新一个映像、并且可以设置一种方法来选择从哪个映像引导。
希望这对您有所帮助。
谢谢!
Krishna
有关流程图、请参阅随附的 pdf。
正如您所说的" 小型永久驻留监视器或始终存在并能够与主机通信的引导加载程序映像"-请告诉您如何编写这种类型的代码。 我对此没有任何想法。
尊敬的 Sam:
我要求提供显示您的系统的方框图、而不是流程图。 流程图不能帮助您了解您要做的事情。 下面是一些更具体的问题:
首先 、您说过: 我正在使用 TMS320F28377S 微控制器、我想使用外部闪存(Microchip SST26VF032B)更新其固件。 我了解的是: 基于 TMS320F28377S 微控制器的系统已经在其内部闪存中的某些固件上运行。 是这样吗?
随后 、您需要使用 Microchip 外部闪存中提供的新程序更新 TMS320F28377S 器件内部闪存中的固件。 是这样吗? 如果是、新程序如何进入外部闪存? 外部闪存如何连接 到 TMS320F28377S。
3.您为 TMS320F28377S 器件配置了哪种引导模式。
您是否详细了解了 TRM 第4章(ROM 代码和外设引导)? www.ti.com/.../spruhx5
谢谢!
Krishna
正如您所问的、
是的,您说得对,我们正在为升级固件而开发此软件。 和微控制器在固件上运行。
是的
为此、使用了由 SPI 和 SPI (微控制器端口)连接的外部闪存。 (我们已经连接了它、但我不知道如何使用它进行固件升级)。
引导形式闪存、
目前、我们将 GPIO 72和 GPIO 84置于上拉电阻器上、并将 TRST 引脚下拉为下拉电阻器、这用于闪存引导。
Sameer、您好!
您没有完全回答我的所有问题。 您可能没有所有答案、因此请联系合适的人员并回答所提出的所有问题。 请注意、如果您不清楚、那么以这种方式帮助您将是不可能的。 让我们再试一次、我将回答您的最后一个问题(这很有帮助)。
您已配置闪存引导模式、GPIO 72和84已拉高。 好的。 您是否使用 CCS 将应用程序加载到内部闪存中?
2.您的应用程序是否按照上述步骤1中的配置工作? 如果是、您如何确认? 如果没有、让我们先解决这个问题。
3.如果您的应用程序使用内部闪存,那么外部闪存的用途是什么?
4.您的应用程序的大小是多少?
5. 您是否详细了解了 TRM 第4章(ROM 代码和外设引导)? https://www.ti.com/lit/pdf/spruhx5 您有任何具体问题吗?
6.您是否有通过 SCI 连接到目标的外部主机?
期待着对上述问题作出明确和完整的答复。
此致、
Krishna
正如您所问的、
您已配置闪存引导模式、GPIO 72和84已拉高。 好的。 您是否使用 CCS 将应用程序加载到内部闪存中?
是的,我使用 CCS 9.2 (编译器版本为18.12.4)来使用 JTAG XDS100加载应用程序。
2.您的应用程序是否按照上述步骤1中的配置工作? 如果是、您如何确认? 如果没有、让我们先解决这个问题。
我的应用程序工作正常、从微控制器内部闪存运行代码时没有问题。我们的产品已投入生产、运行应用代码时没有问题。
3.如果您的应用程序使用内部闪存,那么外部闪存的用途是什么?
正如我在第一篇帖子中提到的、我们希望现场提供最新固件。 为此、我们可以使用 SCI 端口或笔驱动器。
我们已经在使用 C2000中提供的两个闪存实用程序(serial_flash_programmer、USB_flash_programmer)进行固件更新、但对于现场使用、它们不可靠(我们必须携带笔记本电脑进行固件更新)。 因此、我们决定在器件中放置一个 GSM 调制解调器、 该器件通过 SCI 与微控制器通信。 固件文件在外部闪存中逐字节传输、然后我们可以使用外部 SPI 闪存更新固件。 请参阅附件。
4.您的应用程序的大小是多少?
我的 CCS 生成的.out 文件大小为600kb。
5. 您是否详细了解了 TRM 第4章(ROM 代码和外设引导)? https://www.ti.com/lit/pdf/spruhx5 您有任何具体问题吗?
抱歉。 我阅读了第四章、也看到了流程图 、但我无法理解如何按照我的要求实施。
6.您是否有通过 SCI 连接到目标的外部主机?
否在我们的产品中没有主机。 它是光伏逆变器。 我们将 GSM 调制解调器与 SCI 相连。
我们提供了任何类似 SimpleLink for TMS320F28377S 的解决 方案、因此请提供建议。
Sameer、您好!
感谢您抽出时间提供清晰的答案、这非常有帮助、我们现在能够了解您正在努力实现的目标。 也感谢您提供的方框图、它可以很好地补充您的答案。
好的、我认为您可以将 GSM 调制解调器用作外部主机。 您不需要使用 SPI 通信的外部闪存。 请查看第4.10.4.2节 SCI 引导模式。 请确保您了解整个流程、如果您需要澄清、请特别从该部分提出问题。
整个解决方案可使用内部闪存存储器和 SCI 引导模式完全构建。 请 参阅数据表: http://www.ti.com/lit/pdf/sprs881可用的总闪存为1MB。 您的应用程序大小为600KB、因此您无法保存应用程序的两个映像。 但是、您可以通过以下方式进行设计:如果更新过程中出现电源故障、目标仍可以恢复、以便您可以再次重复更新过程。
查看您的方框图、我了解您在步骤1和2中所说的内容(尽管我认为您不需要步骤2)。 您能解释一下步骤3和步骤4的含义吗? 步骤3和4是否也完全正常工作? 您是否同意您没有足够的闪存空间来放置两个应用程序映像(旧映像和新映像)?
谢谢、
Krishna
步骤3正在我们的计划中工作。 但是、目前我只能在外部闪存上传输字节。 我不知道如何调用 SPI 引导加载程序来使用此文件( 即步骤4)。
是的、微控制器的内部闪存没有足够的存储器。 这就是我要使用外部闪存的原因。
所以请告诉...
1) 1)如何从外部闪存引导微控制器。?
2) 2)请说明如何通过外部 SPI 闪存运行程序?
3) 3) C2000文档中提供了任何相关示例??
Sameer、您好!
再次感谢您进一步明确 SPI 引导要求。 因此、当您有新映像时、您似乎希望使用外部闪存执行 SPI 引导。 其次、当您无法使用外部闪存映像时(由于编程期间断电或类似情况)、您希望从内部闪存引导。 第二种方法将使用闪存引导。 因此、您需要有时使用 SPI 引导、有时还需要在其他时间使用闪存引导。 我的理解是否正确?
如果正确、请让您 详细了解一下4.10.4.3 SPI 引导模式。 您对此有任何疑问吗?
谢谢、
Krishna
Sameer、您好!
您为固件升级选择的设计似乎非常复杂。 为了简化操作、您可以考虑一个执行以下操作的解决方案:
使用 SCI 引导、
2.下载单个映像并在目标上维护单个映像。
3.如果下载失败,您将停止并重试
4.下载应用程序后,您可以运行它,进行一些检查,如果它们看起来正确,您可以将应用程序标记为“有效”
使用这种方法、您无需外部闪存或相关的复杂性。 但是、请注意、使用上述方法进行此开发需要一些时间。 如果您想采用这种方法、请查看第4.10.4.2节 SCI 引导模式。 一旦您了解了它、让我们进一步讨论它。
谢谢!
Krishna