完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
我们使用的是 PSOC63。 我们观察到,在向闪存写入数据时,即使在非阻塞模式下,所有中断也会被禁用几毫秒!
在调查闪存驱动程序的源代码后,我们发现在阻塞模式和非阻塞模式下都会出现这种情况,原因是调用了负责 IRQ 屏蔽的 Cy_Flash_SendCmd。 如何在不中断系统运行的情况下管理闪存写入? 我希望只禁用与闪存控制器有关的中断! |
|
相关推荐
1个回答
|
|
PSOC6闪存写入过程中禁用中断的原因主要是为了确保数据的一致性和完整性。在写入过程中,如果发生中断,可能会导致数据损坏或丢失。以下是一些建议,以帮助您在不中断系统运行的情况下管理闪存写入:
1. **使用非阻塞模式**:您已经提到您正在使用非阻塞模式,这是一个很好的开始。非阻塞模式允许您在等待闪存操作完成时继续执行其他任务。 2. **优化中断优先级**:在PSOC6中,您可以为不同的中断设置不同的优先级。尝试将与闪存操作相关的中断设置为最高优先级,这样即使在闪存写入过程中,其他低优先级的中断仍然可以被处理。 3. **使用中断锁定机制**:PSOC6提供了中断锁定机制,允许您在关键代码段中禁用中断,然后在代码段结束时重新启用中断。您可以在闪存写入操作期间使用此机制,以确保数据的一致性和完整性。 4. **分批写入数据**:如果可能的话,尝试将大量数据分成较小的批次进行写入。这样可以减少每次写入操作所需的时间,从而减少中断被禁用的时间。 5. **使用软件触发的中断**:在某些情况下,您可以使用软件触发的中断来代替硬件触发的中断。这样,您可以在闪存写入操作完成后立即触发中断,而不是等待硬件触发。 6. **优化闪存驱动程序**:检查您的闪存驱动程序,看看是否有优化空间。例如,您可以尝试减少调用Cy_Flash_SendCmd的次数,或者优化其内部实现,以减少中断被禁用的时间。 7. **使用外部存储器**:如果闪存写入操作对系统性能影响较大,您可以考虑使用外部存储器(如EEPROM或外部闪存)来存储数据。这样,您可以将数据存储操作与主系统分开,从而减少对系统性能的影响。 通过以上建议,您可以在不中断系统运行的情况下管理PSOC6的闪存写入操作。请注意,根据您的具体应用和需求,可能需要尝试不同的方法来找到最佳解决方案。 |
|
|
|
只有小组成员才能发言,加入小组>>
请教个XMC1404调试串口接收时为什么一直无法接收数据的问题
368 浏览 0 评论
TLE9879_BLDC电机启动需要用手拨一下才能转动,怎么解决?
6342 浏览 2 评论
4108 浏览 9 评论
请问TLE5012B_E1000 启动后为什么位置不能正确获取
3634 浏览 9 评论
1232 浏览 8 评论
463浏览 2评论
272浏览 2评论
381浏览 2评论
TLE9879_BLDC电机启动需要用手拨一下才能转动,怎么解决?
6342浏览 2评论
如果是打开已有的dave工程,怎么查看这个工程选择的mcu型号?
461浏览 2评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-12-25 22:29 , Processed in 0.750116 second(s), Total 78, Slave 62 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号