英飞凌
直播中

吴藩

9年用户 813经验值
擅长:可编程逻辑
私信 关注

PSOC6闪存写入会禁用中断数毫秒 ,为什么?

我们使用的是 PSOC63。 我们观察到,在向闪存写入数据时,即使在非阻塞模式下,所有中断也会被禁用几毫秒!


在调查闪存驱动程序的源代码后,我们发现在阻塞模式和非阻塞模式下都会出现这种情况,原因是调用了负责 IRQ 屏蔽的 Cy_Flash_SendCmd。

如何在不中断系统运行的情况下管理闪存写入? 我希望只禁用与闪存控制器有关的中断!

回帖(1)

郑成枝

2024-7-4 16:53:16
PSOC6闪存写入过程中禁用中断的原因主要是为了确保数据的一致性和完整性。在写入过程中,如果发生中断,可能会导致数据损坏或丢失。以下是一些建议,以帮助您在不中断系统运行的情况下管理闪存写入:

1. **使用非阻塞模式**:您已经提到您正在使用非阻塞模式,这是一个很好的开始。非阻塞模式允许您在等待闪存操作完成时继续执行其他任务。

2. **优化中断优先级**:在PSOC6中,您可以为不同的中断设置不同的优先级。尝试将与闪存操作相关的中断设置为最高优先级,这样即使在闪存写入过程中,其他低优先级的中断仍然可以被处理。

3. **使用中断锁定机制**:PSOC6提供了中断锁定机制,允许您在关键代码段中禁用中断,然后在代码段结束时重新启用中断。您可以在闪存写入操作期间使用此机制,以确保数据的一致性和完整性。

4. **分批写入数据**:如果可能的话,尝试将大量数据分成较小的批次进行写入。这样可以减少每次写入操作所需的时间,从而减少中断被禁用的时间。

5. **使用软件触发的中断**:在某些情况下,您可以使用软件触发的中断来代替硬件触发的中断。这样,您可以在闪存写入操作完成后立即触发中断,而不是等待硬件触发。

6. **优化闪存驱动程序**:检查您的闪存驱动程序,看看是否有优化空间。例如,您可以尝试减少调用Cy_Flash_SendCmd的次数,或者优化其内部实现,以减少中断被禁用的时间。

7. **使用外部存储器**:如果闪存写入操作对系统性能影响较大,您可以考虑使用外部存储器(如EEPROM或外部闪存)来存储数据。这样,您可以将数据存储操作与主系统分开,从而减少对系统性能的影响。

通过以上建议,您可以在不中断系统运行的情况下管理PSOC6的闪存写入操作。请注意,根据您的具体应用和需求,可能需要尝试不同的方法来找到最佳解决方案。
举报

更多回帖

发帖
×
20
完善资料,
赚取积分