为了执行 LFU,同时在旧和新的应用程序映像之间进行更加实质性的更改,用户需要注意以下事项:
- LFU 编译器支持有助于维持公用全局变量的状态(在 RAM 中保留它们的地址,并避免在 LFU 切换期间对它们进行初始化)。
__TI_auto_init_warm() 与旧应用程序的 ISR 一同执行,因此 __TI_auto_init_warm() 花费多长时间并不重要。这意味着对需要初始化的变量的数量没有限制。
- LFU 切换时间 – 当控制循环 ISR 在 C28x CPU 上运行时,这很重要。在 F28003x 上,就需要在 LFU 上更新的中断向量和函数指针的数量而言,器件上的 LFU 硬件特性(如 PIE 向量交换和 RAM 块交换)可提供极大的灵活性。无论向量或函数指针的数量如何,只需一个单周期交换实现即可。但 F28004x 上不存在这些硬件特性,因此每个 PIE 向量和函数指针都需要单独更新,这会成比例地增加 LFU 切换时间。如果这超过了空闲时间,那么中断执行就会受到影响,这是不可接受的。
- LFU 切换时间 - 一般来说,当控制循环 ISR 在 CLA 上运行时,这不会成为问题。禁用全局中断仅影响 C28x CPU,不会影响 CLA。LFU 期间不会禁用和重新启用 CLA 任务(后台任务除外)。
- 另一个需要考虑的重要方面是自定义引导加载程序(SCI 闪存内核)和应用程序之间的 RAM 内存重叠:
- 一般来说,应避免 RAM 段在 SCI 闪存内核和应用程序之间发生重叠。如果无法实现,请使用为 SCI 闪存内核和应用程序生成的 .map 文件来验证未发生 RAM 内存重叠,因为这会破坏功能。
- 对于使用 CLA 的 LFU,一些 LSRAM 段在应用程序中指定为程序,一些指定为数据。确保这不会与 SCI 闪存内核发生冲突。换而言之,请勿将应用程序放在 SCI 闪存内核用于数据的段中,反之亦然。