SPI flash API 您所在的位置:网站首页 flash芯片容量查询 SPI flash API

SPI flash API

2024-07-15 09:27| 来源: 网络整理| 查看: 265

实现细节

必须确保操作期间,两个 CPU 均未从 flash 运行代码,实现细节如下:

单核模式下,SDK 在执行 flash 操作前将禁用中断或调度算法。

双核模式下,SDK 需确保两个 CPU 均未运行 flash 代码。

如果有 SPI flash API 在 CPU A(PRO 或 APP)上调用,它使用 esp_ipc_call API 在 CPU B 上运行 spi_flash_op_block_func 函数。esp_ipc_call API 会在 CPU B 上唤醒一个高优先级任务,即运行 spi_flash_op_block_func 函数。运行该函数将禁用 CPU B 上的 cache,并使用 s_flash_op_can_start 旗帜来标志 cache 已禁用。然后,CPU A 上的任务也会禁用 cache 并继续执行 flash 操作。

执行 flash 操作时,CPU A 和 CPU B 仍然可以执行中断操作。默认中断代码均存储于 RAM 中,如果新添加了中断分配 API,则应添加一个标志位以请求在 flash 操作期间禁用该新分配的中断。

flash 操作完成后,CPU A 上的函数将设置另一标志位,即 s_flash_op_complete,用以通知 CPU B 上的任务可以重新启用 cache 并释放 CPU。接着,CPU A 上的函数也重新启用 cache,并将控制权返还给调用者。

另外,所有 API 函数均受互斥量 s_flash_op_mutex 保护。

在单核环境中(启用 CONFIG_FREERTOS_UNICORE),需要禁用上述两个 cache,以防发生 CPU 间通信。



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有