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.

[FAQ] [参考译文] [常见问题解答]:如何提高闪存工具的性能?

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

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/904312/faq-how-can-we-improve-the-flash-tool-performance

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

以下是使用 TI 的 CCS 片上闪存插件或 UniFlash 时、您可以尝试提高闪存性能的几个不同方面。   

a.使用 XDS200等速度更快的仿真器。  此仿真器的性能与 XDS510相当、但成本更低。

b.每次启动闪存程序操作时、无需擦除整个闪存组。 在片上闪存插件 GUI 中、用户可以选择"Erase settings"下的"Necessary Sectors Only (for Program Load)"选项。 这将仅擦除应重新编程的扇区(基于其链接器 cmd 文件)。 但是、如果在其他未擦除的扇区中存在任何未擦除的位置、应用程序在运行时不能使用这些位置。 此外、由于未擦除的扇区可能具有先前编程的内容、因此组的校验和可能不符合预期值。  对于从 TI 接收的新器件而言、这不应该是一个问题、因为闪存组将从 TI 生产中进入被擦除状态。   

c.如果这是生产环境,您可以选择“仅程序”选项,因为器件从 TI 进行擦除。

d.您可以取消选中"Download Settings"下的"Verify Flash after Program"。 请注意、当您选择此选项时、在程序操作后不会对映像进行验证。 如果您可以接受、则可以在程序操作后使用插件中的校验和选项来验证映像的真实性。  请注意、如果在程序启动和校验和启动之间发出复位、校验和操作可能需要您解锁器件。   

例如、如果应用程序在链接器 cmd 文件中有多个段、您可以尝试启用"Performance Settings"下的"Combine Sections during Program Load to increase Performance"。 如果没有太多段、则不建议这样做。 使用此功能时、可执行文件中的多个段将组合在一起并立即进行编程-在执行此操作时、各段之间的所有空洞将填充所有1s 数据、并且 ECC 也会针对所有1s 数据进行编程。 因此、如果需要、所有这些1s 位置都无法在应用程序运行时使用。

f.您可以在擦除后禁用空白检查。 如果选择此选项、工具将不会检查擦除操作是否擦除所有位。  因此,如果一个位没有被正确擦除,当一个0->1转换作为程序操作的一部分发生时,程序操作将失败。

使用闪存编程工具时需要考虑的重要注意事项:

闪存插件专为完全嵌入式闪存应用而开发。  这意味着、链接器 cmd 中所有已初始化的段都应该被映射到闪存。  如果需要从 RAM 执行任何操作、则在运行时应使用 memcpy()将该内容复制到 RAM 中、然后再执行该内容。  请参阅以下常见问题解答、了解有关此问题的更多信息。

   [常见问题解答]闪存-如何将应用程序从 RAM 配置修改为闪存配置?: https://e2e.ti.com/support/microcontrollers/c2000/f/171/t/878674 

2.对于多核器件、请注意使用不安全的共享 RAM (如果可用)将闪存插件代码加载到器件中。  因此、在加载一个内核的闪存映像后、如果您执行应用程序以使用共享 RAM、当您尝试在另一个内核的闪存组上加载代码时、该内容将丢失。  因此、在任何内核上执行应用之前、请加载两个内核的闪存组。  如果您的应用仅使用一个内核进行调试或开发、则这不适用。

3.如果为电路板上的闪存启动配置了引导模式引脚,则调试器连接可能会发生错误-这是因为如果闪存被擦除,CPU 开始执行无效的操作码。  即使在开发过程中未擦除该器件、如果闪存中的应用程序存在任何导致复位或其他故障的错误或应用设计问题、则器件可能不处于应用定义的状态。  这会阻止与调试器建立稳定的连接。  即使调试器设法建立连接、由于闪存应用程序的执行、器件也可能不会处于干净的初始化状态。  因此、我们建议用户进行器件复位、运行 bootROM (CCS 中的"resume"按钮)、暂停 CPU、然后继续执行调试活动。  请注意、闪存插件或 Uniflash 也是一个加载到器件 RAM 以执行闪存操作的应用程序。  因此、如果为闪存引导配置了引导模式引脚、建议在使用闪存插件或 Uniflash 之前进行器件复位。  

4.为了使用 JTAG 对新器件进行编程、建议的引导引脚配置为等待引导(对于 Concerto 为 WIR 模式)。  如果这是不可能的、至少要为串行引导配置引导引脚、以便引导 ROM 在串行引导中等待、而不会分支到未编程的闪存。  这有助于避免 ITRAP/复位、从而提供干净的器件状态来建立稳定的连接。

5.使用任何闪存编程工具(TI CCS 闪存插件、Uniflash 或任何第三方工具)加载闪存组后、建议在评估/执行应用之前将器件复位一次。  这是因为闪存工具将配置器件中的许多寄存器、并且还使用 RAM 存储器来完成闪存擦除、编程、验证、校验和和和其他杂项操作。  复位和重新启动会使器件进入已知的干净状态、以便您评估应用。

谢谢、此致、

Vamsi

C2000培训视频:https://training.ti.com/search-catalog/field_language/ZH-CN?keywords=C2000&start%5Bdate%5D=&end%5Bdate%5D=

C2000培训小程序码