专栏名称: 嵌入式微处理器
关注这个时代最火的嵌入式微处理器,你想知道的都在这里。
今天看啥  ›  专栏  ›  嵌入式微处理器

擦写Flash时,一定不能开启系统全局中断?

嵌入式微处理器  · 公众号  · 硬件  · 2024-09-04 13:00
    

主要观点总结

本文主要介绍了i.MXRT下FlexSPI driver实现Flash编程时对于中断支持问题的分析和解决方案。文章首先介绍了问题的背景和客户的反映,然后分析了擦写Flash时为何需要关闭全局中断的两个原因,接着介绍了FlexSPI外设写操作设计和FlexSPI driver的写操作流程,最后指出了客户遇到的问题和如何改进FlexSPI driver以支持中断。

关键观点总结

关键观点1: RWW特性和SCLK Stop特性的影响

大部分Flash不支持RWW特性,因此在Flash擦写期间需要关闭全局中断以保证代码执行的正确性。同时,不支持SCLK Stop特性的Flash在MCU端传输Page数据时,需要一次性连续传输完成,一旦被打断,可能导致写入失败。

关键观点2: FlexSPI外设写操作设计

介绍了FlexSPI关于IPG方式写操作的设计,包括IP_TX_FIFO的作用、FLEXSPI寄存器的功能以及Page数据的装载过程。

关键观点3: 客户问题及FlexSPI driver写操作流程分析

分析了客户遇到的FlexSPI驱动对于中断不支持的问题,指出其原因与SCLK Stop特性和IP_TX_FIFO缓冲数据有关。

关键观点4: 改进FlexSPI driver以支持中断的方案

提出了一种改进FlexSPI driver以支持中断的示例代码,先装载全部的Page数据,然后再开启写传输时序,以避免被中断打断。


文章预览

今天给大家介绍的是 i.MXRT下FlexSPI driver实现Flash编程时对于中断支持问题 。 前段时间,有一位客户在官方社区反映, i.MXRT1170 下使用官方 SDK 里 FlexSPI 驱动去擦写 Flash 时不能很好地支持全局中断。客户项目里用了两块 NOR Flash,分别挂在不同的 FlexSPI 上,一块 Flash 用于存储 XIP 代码(FlexSPI1),另一块 Flash 用于存储项目资源数据(FlexSPI2)。显然,这样的设计在原理上是没有问题的,那么为什么使能了中断会出问题呢?今天我们就来分析一下这个问题: Note: 客户测试的 SDK 版本为 2.12.1,对应的 FlexSPI driver 版本为 2.3.6 一、为什么擦写Flash时经常需要关全局中断? 在具体分析客户问题之前,我们先来聊聊嵌入式应用里应对 NOR Flash 的擦写为何大部分情况下都是要关闭全局中断(这里假设执行代码空间与擦写操作空间在同一个 Flash 上,当然是在不同区域 ………………………………

原文地址:访问原文地址
快照地址: 访问文章快照
总结与预览地址:访问总结与预览