首页 > 编程知识 正文

segger j-flash使用(QSPI Flash存储控制器(直接访问控制器DAC))

时间:2023-05-06 18:56:45 阅读:123253 作者:3365

直接访问QSPI Flash存储控制器(直接访问控制器DAC )是指对AHB的访问直接开始对Flash存储进行读写。 DAC是内存映射模式,可以直接对闪存进行PIO读写访问,直接执行闪存上的二进制代码。 不使用内部SDRAM访问DAC。 AHB总线读写突发抖动,设备待机状态过程与控制器和设备延迟有关; 因此,延迟应该设计得尽可能小。 使用XIP命令可以将延迟降至最低。

当DAC从AHB接收到读取请求时,在一个AHB突发操作期间将向下游发送附加访问; 此访问操作不是来自AHB总线,在系统软件中不可见。 这是一个预读操作,确保基础SPI的最大带宽。

在此定义的AHB突发如下所示,而不是在AMBA总线上定义的AHB突发操作:

AHB突发的第一访问是(省略) AHB突发的最后访问是(省略) AHB突发的长度是从开头到结尾的AHB访问的次数。 每个AHB突发操作DAC请求次数等于AHB突发长度1; 当AHB时钟慢于SPI数据传输速率时,顺序读传输可能在SPI侧中断,并且在AHB总线侧接收到最后的数据后重新开始传输。 SPI时钟分频和AHB访问长度(信号hsize表示AHB上的长度,8/16/32 )越小,数据I/o操作的数量越多,AHB总线侧看起来越慢。

如果系统不能满足SPI数据速率,则增加SPI时钟分频,每次传输时增加opcode地址dummy等操作,降低SPI数据速率。

如果系统运行缓慢,如果混合使用AHB (在顺序访问之后具有非顺序访问)访问,预读将产生垃圾数据。 如果无法取消数据预读,则在SPI传输中断时,数据预读作为独立的SPI操作被发送,从而产生垃圾数据。 为避免这种情况,建议驱动程序在销毁这些垃圾数据或触发非顺序直接AHB访问之前插入等待状态。

无论如何,间接的读取转发都是对值的考虑。

对于AHB写入操作,DAC触发顺序写入命令,类似于读取的处理过程。 另外,AHB控制器必须防止Flash突发越过Flash的页面边界。 如果检测到页面边界,则只传输页面边界前面的字节。 在下游,跨页边界的顺序直接写入请求必须是非顺序的。 下游控制器强制闪存设备进入“自动调谐页面编程周期”(self timed page program cycle )中。 DAC仅支持字对齐地址访问时拆分写入跨页边界。

在写入操作期间,外部AHB总线主机必须及时向DAC提供写入数据,避免下游饿死。 如果延迟顺序写入过程延迟过大,Flash写入周期将提前初始化,从而延长Flash设备的寿命。 如果不能保证,建议间接写模式。

写页面前需要闪存擦除操作,软件可以有合适的编程接口。 页面编程周期开始时,QSPI Flash控制器将自动轮询,直到写入周期完成。 此过程不允许其他AHB访问。 此时,来自AHB的直接访问处于等待状态。

提示:最好直接访问控制器,仅用于执行早期启动代码; 以后的读写访问都由间接访问控制器进行。

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。