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] 我们如何提高闪存工具的性能?

Other Parts Discussed in Thread: UNIFLASH

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

1. 使用 XDS200 等更快的仿真器。 该仿真器的性能与 XDS510 相当,但成本更低。

2. 每次启动闪存程序操作时,无需擦除整个闪存组。在On-Chip Flash Plugin GUI 中,用户可以选择“Erase settings”下的“Necessary Sectors Only (for Program Load)”选项。这将仅擦除应重新编程的扇区(基于其链接器 cmd 文件)。但是,如果其他未擦除的扇区中存在任何未擦除的位置,则应用在运行时将无法使用这些位置。此外,由于未擦除的扇区可能具有之前编程的内容,因此该组的和校验(checksum)可能不符合预期值。 从 TI 收到的新器件应该不会存在这个问题,因为闪存组从 TI 生产出来时就处于已擦除状态。

3. 如果这是生产环境,您可以选择“Program Only”选项,因为器件从 TI 出厂时已进行了擦除。

4. 您可以取消选中“Download Settings”下的“Verify Flash after Program”。请注意,当您选择此选项时,系统在程序操作后不会验证image 。如果您可以接受,可以在程序操作后使用插件中的校验和选项来验证image 的真实性。 请注意,如果在程序启动和和校验(checksum)启动之间发出复位命令,和校验(checksum)操作可能需要您解锁器件。

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

5. 您可以在擦除后禁用blank check。如果您选择此选项,工具将不会检查擦除操作是否擦除了所有位。 因此,如果某个位未被正确擦除,程序操作中会发生 0->1 转换,从而导致失败。

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

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 模式)。  如果无法实现这一点,至少要为串行引导配置引导引脚,以便 bootROM 在串行引导中等待,而不会分支到未编程的闪存。  这有助于避免 ITRAP/复位,从而提供干净的器件状态来建立稳定的连接。

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