当前位置: 首页 > news >正文

CFI(Common Flash Interface)简介

        CFI定义了符合CFI规则设备的基本Query接口,包括已知或待拟定的flash Read/Write/Program/Erase控制接口。Query接口以结构体形式定义与flash设备相关的关键参数,但是CFI不会对单个flash设备厂家指定详细的指令集、状态轮询模式以及软件算法。

1.操作概要

设备接收到Query command code后进入Query模式,允许对CFI Query数据结构进行访问。CFI Query data structure包含16bit指令集、Control Interface ID code(控制接口)、通用flash内存参数和算法指定的数据域。

上述信息主要用于给指定的flash提供读写、擦除等操作。

2. 硬件接口

2.1 Query command interface

        CFI Query结构的访问与NVM现有的”ID Mode”或”JEDEC ID”访问类似,但是使用不同的指令代码。Query 访问指令为98h,JEDEC ID 模式访问为90h。

        上电后,假设NvM处于制度模式,Query 结构的内容必须能够在单个系统写周期的特定地址位置读取:1)98h被写入到设备地址空间内55h的地址位置(以最大设备总线宽度),2)设备处于任何有效的读状态,如“读阵列”或“读ID数据”。其他设备状态可能存在于一长串命令或数据输入中;在编写98h Query命令代码产生有效的Query数据结构输出之前,必须先完成或终止这些序列。

        设备驱动程序应该始终在地址总线上提供55h,在数据总线上提供98h以进入查询模式;或者Flash设备可以选择忽略地址总线并进入查询模式,如果98h只在数据总线上看到。

        Flash供应商必须为其他模式访问定义其他命令序列。

2.2 Query structure output

        Query 数据只在数据输出(D7 - D0)上显示。

        因此,对于字节宽(x8)设备,Query结构的前两个字节,即ASCII中的“Q”和“R”,出现在设备地址10h和11h处,这与绝对字节地址相同。相同逻辑应用到x16、x32设备。下表Query数据输出的示例:

3 Query Structure

3.1 Query结构总览

Offset

Section名称

描述

00h

Reserved

指令算法信息

10h

CFI Query Identification

命令集ID和算法数据偏移量

1Bh

System Interface Information

设备时间、电压信息

27h

Device Geomerty Definition

Flash设备的layout

P

主算法的特定扩展

主算法的特定扩展

A

选算法的特定扩展

选算法的特定扩展

3.2 CFI Query Identification

Offset

Length

(bytes)

Description

10h

03h

三字节的“QRY”查询结构标记

13h

02h

两字节的主算法命令集和控制接口ID码

15h

02h

Value=P

主算法扩展表的地址P

17h

02h

备选算法命令集和控制接口ID码

19h

02h

Value=A

备选算法扩展表的地址A

3.3 System Interface Information

Offset

Length(Bytes)

含义

举例(Intel 28 F800BVT)

10H

03H

查询ASCII字符串“QRY”

10:0051H ‘Q’

11:0052H ‘R’

12:0059H ‘Y’

13H

02H

制造商命令集和控制接口识别码ID

13:0003H

14:0000H

1BH

01H

逻辑供电Vcc最小电压。位7-4:BCD伏 位3-0:BCD100毫伏

1B:0030H(3伏)

1CH

01H

逻辑供电Vcc最大电压。位7-4:BCD伏 位3-0:BCD100毫伏

1C:0055H(5.5伏)

1DH

01H

编程/擦除供电Vpp最小电压。位7-4:HEX伏 位3-0:BCD100毫伏

1D:0045H(4.5伏)

1EH

01H

编程/擦除供电Vpp最大电压。位7-4:HEX伏 位3-0:BCD100毫伏

1E:00C6H(12.6伏)

1FH

01H

典型单字节/字写周期定时时间,2Nus

1F:0003H(3.8us)

21H

01H

典型单块擦除定时时间,2Nms

21:000AH(1.024s)

22H

01H

典型整片擦除定时时间,2Nms

22:0000H(不支持)

23H

01H

单字节/字写周期最大定时时间,2Nx典型单字节/字写周期定时时间

23:0004H(24x8us)

25H

01H

单块擦除最大定时时间,2Nx典型单块擦除定时时间

25:0004H(24x1.024s)

26H

01H

整片擦除最大定时时间,2Nx典型整片擦除定时时间

26:0000H(不支持)

3.4 Device geometry definition

Offset

Length(Bytes)

含义

举例(Intel 28 F800BVT)

28H

02H

Flash器件接口识别码ID

28:0002H  29:0000H

2CH

01H

器件可擦除块区域个数。Bit7-0=可擦除块个数

2C:0004H  4个擦除块

2DH

04H

擦除块信息域1。Bit31-16=z(高两字节表示擦除块大小对于256字节的倍数,0表示128B)。Bit15-0=y(低两字节+1表示擦除块的个数,0表示没有块)

2D:0006H  2E:0000H

7个擦除块

2F:0000H   30:0002H

256x200H=128K字节

31H

04H

擦除块信息域2。

31:0000H  32:0000H

33:0080H  34:0001H

35H

04H

擦除块信息域3。

35:0001H  36:0000H

37:0020H  38:0001H

39H

04H

擦除块信息域4。

39:0000H  3A:0000H

3B:0040H  3C:0000H

3.5 主算法的特定扩展

如下表所示:

Offset

Length

(bytes)

Description

Ph

03h

主算法扩展查询表标记字符串“PRI”

(P+3)h

01h

主版本号

(P+4)h

01h

次版本号

(P+5)h

Variable

主算法扩展查询结构内容

3.6 备用算法的特定扩展

如下表所示

Offset

Length

(bytes)

Description

Ah

03h

备用算法扩展查询表标记字符串“ALT”

(A+3)h

01h

主版本号

(A+4)h

01h

次版本号

(A+5)h

Variable

备用算法扩展查询结构内容

4. CFI代码示例

        

Std_ReturnType Fls_HwCfiQuery(uint32 CfiBaseAddr,uint8 CfiCmd, _CfiValueType *CfiValueBuf)
{Std_ReturnType retVal = E_NOT_OK;uint16 i=0;/* #10 Handle CFI query cmd */Fls_lCmdProcessing((_FLS_CFI_BASE_ADDRESS + CfiBaseAddr),CfiCmd);/* #20  Check that the CFI interface is operable */if ((Fls_lCfiReadValue(_FLS_CFI_BASE_ADDRESS + _FLS_CFI_QUERY_OFFSET_ONE)   != 0x51U)||(Fls_lCfiReadValue(_FLS_CFI_BASE_ADDRESS + _FLS_CFI_QUERY_OFFSET_TWO)   != 0x52U)||(Fls_lCfiReadValue(_FLS_CFI_BASE_ADDRESS + _FLS_CFI_QUERY_OFFSET_THREE) != 0x59U)){retVal = E_NOT_OK;}else{/* #30: Read the required CFI Info */for(i = 0; i < 256; i++){CfiValueBuf[i] = Fls_lCfiReadValue(_FLS_CFI_BASE_ADDRESS + (uint32)i);}retVal = E_OK;}return retVal;

 

相关文章:

CFI(Common Flash Interface)简介

CFI定义了符合CFI规则设备的基本Query接口&#xff0c;包括已知或待拟定的flash Read/Write/Program/Erase控制接口。Query接口以结构体形式定义与flash设备相关的关键参数&#xff0c;但是CFI不会对单个flash设备厂家指定详细的指令集、状态轮询模式以及软件算法。 1.操作概要…...

linux、windows 查看java等进程占用资源情况

linux查看进程占用资源情况&#xff1a; top -o %MEM -b -n 1 | grep java | awk {print "PID: "$1" \t 虚拟内存: "$5" \t 物理内存: "$6" \t 共享内存: "$7" \t CPU使用率: "$9"% \t 内存使用率: "$10"%&…...

听GPT 讲Rust源代码--library/core/src(7)

题图来自 Hello, crustaceans.[1] File: rust/library/core/src/ptr/metadata.rs 在Rust的源代码中&#xff0c;rust/library/core/src/ptr/metadata.rs 文件的作用是定义了与指针&#xff08;ptr&#xff09;和元数据&#xff08;metadata&#xff09;相关的结构体和 trait&am…...

html:lang属性设置为中文zh-CN

默认的lang属性 <html lang"en"> </html>声明网页语言格式&#xff1a; 语言-国家/地区示例 <html lang"zh-CN"> </html>ISO 639-1 语言代码 语言ISO 代码Chinese (简体)zh ISO 639-1 国家/地区代码 国家/地区ISO 代码CHINA…...

滴滴 Redis 异地多活的演进历程

为了更好的做好容灾保障&#xff0c;使业务能够应对机房级别的故障&#xff0c;滴滴的存储服务都在多机房进行部署。本文简要分析了 Redis 实现异地多活的几种思路&#xff0c;以及滴滴 Redis 异地多活架构演进过程中遇到的主要问题和解决方法&#xff0c;抛砖引玉&#xff0c;…...

前端实现页面内容的截图与下载(html2canvas)

今天是一个发文的好日子&#x1f600;~ &#x1f447;&#x1f447;&#x1f447; 一个需求&#xff0c;要截取页面中的内容并截图保存&#xff0c;来看一看我是怎么实现的吧&#xff1a; 这里需要使用到插件--html2canvas 1.安装并引入html2canvas npm install html2canv…...

VS2017 IDE 编译时的 X86、x64位 是干什么的

指定编译出的程序是x86架构下的32位程序还是64位程序 VS2017项目配置X86改配置x64位_winform:把项目由x86改为x64-CSDN博客 vs平台选项&#xff1a;Any CPU,x86,x64_vs anycpu-CSDN博客...

微信小程序 解决tab页切换过快 数据出错问题

具体问题&#xff1a;切换tab页切换过快时,上一个列表接口未响应完和当前列表数据冲突 出现数据错误 具体效果如下&#xff1a; 解决方式&#xff1a;原理 通过判断是否存在request 存在中断 并发送新请求 不存在新请求 let shouldAbort false; // 添加一个中断标志 let re…...

Taro编译警告解决方案:Error: chunk common [mini-css-extract-plugin]

文章目录 1. 背景2. 问题分析3. 解决方案3.1 更新 Taro 版本3.2 更新相关依赖3.3 调整 webpack 配置3.4 检查依赖版本 4. 拓展与分析4.1 拓展4.2 避免不必要的依赖4.3 查阅 Taro GitHub 仓库 5. 总结 &#x1f389;欢迎来到Java学习路线专栏~Taro编译警告解决方案&#xff1a;E…...

基于JavaWeb+SpringBoot+Vue电子商城微信小程序系统的设计和实现

基于JavaWebSpringBootVue电子商城微信小程序系统的设计和实现 源码获取入口前言系统设计功能截图Lun文目录订阅经典源码专栏Java项目精品实战案例《500套》 源码获取 源码获取入口 前言 身处互联网时代&#xff0c;互联网无形中影响着人们的吃穿住行&#xff0c;人们享受着不…...

JS进阶——作用域、解构、箭头函数

1、作用域 作用域&#xff08;scope&#xff09;规定了变量能够被访问的“范围”&#xff0c;离开了这个“范围”变量便不能被访问。 1.1 局部作用域 局部作用域可分为函数作用域和块作用域。 1.1.1 函数作用域 在函数内部声明的变量只能在函数内部被访问&#xff0c;外部无…...

centos下安装mysql8版本

1、如果服务器没有wget&#xff0c;先下载wget工具 sudo yum install wget 2、下载指定mysql版本的tar包 sudo wget https://downloads.mysql.com/archives/get/p/23/file/mysql-8.0.21-1.el7.x86_64.rpm-bundle.tar 3、解压tar包 sudo tar -xvf mysql-8.0.21-1.el7.x86_64.rpm…...

C++面试常考手写题目

C面试常考手写题目 vectorstringauto_ptrshared_ptrunique_ptrweak_ptrsingleton快排非递归heapheap_sortmerge_sort vector #include <bits/stdc.h> using namespace std;template<typename T> class vector {public:typedef T value_type;typedef T* iterator;p…...

LLM建模了什么,为什么需要RAG

LLM近期研究是井喷式产出&#xff0c;如此多的文章该处何处下手&#xff0c;他们到底又在介绍些什么、解决什么问题呢&#xff1f;“为学日增&#xff0c;为道日损”&#xff0c;我们该如何从如此多的论文中找到可以“损之又损以至于无”的更本质道或者说是这个方向的核心模型。…...

为开发GPT-5,OpenAI向微软寻求新融资

11月14日&#xff0c;金融时报消息&#xff0c;OpenAI正在向微软寻求新一轮融资&#xff0c;用于开发超级智能向AGI&#xff08;通用人工智能&#xff09;迈进&#xff0c;包括最新模型GPT-5。 最近&#xff0c;OpenAI召开了首届开发者大会&#xff0c;推出了GPT-4 Turbo、自定…...

创邻科技亮相ISWC 2023,国际舞台见证知识图谱领域研究突破

近日&#xff0c;第22届国际语义网大会 ISWC 2023 在雅典希腊召开&#xff0c;通过线上线下的形式&#xff0c;聚集了全球的顶级研究人员、从业人员和行业专家&#xff0c;讨论、发展和塑造语义网和知识图谱技术的未来。创邻科技CEO张晨博士作为知识图谱行业专家受邀参会&#…...

开源博客项目Blog .NET Core源码学习(6:雪花算法)

Blog .NET项目中有多种数据类生成对象实例时需要唯一标识&#xff0c;一般做法要么使用GUID&#xff0c;也可以保存到数据库时使用数据库表的自增长ID&#xff0c;也可以自定义规则以确保产生不重复的唯一标识&#xff0c;而在Blog .NET项目中使用雪花算法生成唯一标识。   关…...

【Python】集合与字典

按照输入顺序输出 将输入的名字去重&#xff0c;同时按照输入顺序输出 sinput().split(,) blist(set(s)) bsorted(b,keys.index) print(b) 删除集合元素、更新集合 根据操作删除更新集合 update括号里可以是一个集合&#xff0c;add只能是一个元素 discard用于删除元素&#x…...

【LeetCode】88. 合并两个有序数组

88. 合并两个有序数组 难度&#xff1a;简单 题目 给你两个按 非递减顺序 排列的整数数组 nums1 和 nums2&#xff0c;另有两个整数 m 和 n &#xff0c;分别表示 nums1 和 nums2 中的元素数目。 请你 合并 nums2 到 nums1 中&#xff0c;使合并后的数组同样按 非递减顺序 …...

Linux文件权限

R 代表可读 W 代表可写 X 代表可执行 文档类型有如下表示方法&#xff1a;   d - 目录&#xff0c;例如上表档名为『.gconf』的那一行&#xff1b; - - 文档&#xff0c;例如上表档名为『install.log』那一行&#xff1b; l - 链接档(link file)&#xff1b; b …...

uniapp 对接腾讯云IM群组成员管理(增删改查)

UniApp 实战&#xff1a;腾讯云IM群组成员管理&#xff08;增删改查&#xff09; 一、前言 在社交类App开发中&#xff0c;群组成员管理是核心功能之一。本文将基于UniApp框架&#xff0c;结合腾讯云IM SDK&#xff0c;详细讲解如何实现群组成员的增删改查全流程。 权限校验…...

观成科技:隐蔽隧道工具Ligolo-ng加密流量分析

1.工具介绍 Ligolo-ng是一款由go编写的高效隧道工具&#xff0c;该工具基于TUN接口实现其功能&#xff0c;利用反向TCP/TLS连接建立一条隐蔽的通信信道&#xff0c;支持使用Let’s Encrypt自动生成证书。Ligolo-ng的通信隐蔽性体现在其支持多种连接方式&#xff0c;适应复杂网…...

阿里云ACP云计算备考笔记 (5)——弹性伸缩

目录 第一章 概述 第二章 弹性伸缩简介 1、弹性伸缩 2、垂直伸缩 3、优势 4、应用场景 ① 无规律的业务量波动 ② 有规律的业务量波动 ③ 无明显业务量波动 ④ 混合型业务 ⑤ 消息通知 ⑥ 生命周期挂钩 ⑦ 自定义方式 ⑧ 滚的升级 5、使用限制 第三章 主要定义 …...

抖音增长新引擎:品融电商,一站式全案代运营领跑者

抖音增长新引擎&#xff1a;品融电商&#xff0c;一站式全案代运营领跑者 在抖音这个日活超7亿的流量汪洋中&#xff0c;品牌如何破浪前行&#xff1f;自建团队成本高、效果难控&#xff1b;碎片化运营又难成合力——这正是许多企业面临的增长困局。品融电商以「抖音全案代运营…...

关键领域软件测试的突围之路:如何破解安全与效率的平衡难题

在数字化浪潮席卷全球的今天&#xff0c;软件系统已成为国家关键领域的核心战斗力。不同于普通商业软件&#xff0c;这些承载着国家安全使命的软件系统面临着前所未有的质量挑战——如何在确保绝对安全的前提下&#xff0c;实现高效测试与快速迭代&#xff1f;这一命题正考验着…...

Java数值运算常见陷阱与规避方法

整数除法中的舍入问题 问题现象 当开发者预期进行浮点除法却误用整数除法时,会出现小数部分被截断的情况。典型错误模式如下: void process(int value) {double half = value / 2; // 整数除法导致截断// 使用half变量 }此时...

力扣热题100 k个一组反转链表题解

题目: 代码: func reverseKGroup(head *ListNode, k int) *ListNode {cur : headfor i : 0; i < k; i {if cur nil {return head}cur cur.Next}newHead : reverse(head, cur)head.Next reverseKGroup(cur, k)return newHead }func reverse(start, end *ListNode) *ListN…...

Golang——6、指针和结构体

指针和结构体 1、指针1.1、指针地址和指针类型1.2、指针取值1.3、new和make 2、结构体2.1、type关键字的使用2.2、结构体的定义和初始化2.3、结构体方法和接收者2.4、给任意类型添加方法2.5、结构体的匿名字段2.6、嵌套结构体2.7、嵌套匿名结构体2.8、结构体的继承 3、结构体与…...

打手机检测算法AI智能分析网关V4守护公共/工业/医疗等多场景安全应用

一、方案背景​ 在现代生产与生活场景中&#xff0c;如工厂高危作业区、医院手术室、公共场景等&#xff0c;人员违规打手机的行为潜藏着巨大风险。传统依靠人工巡查的监管方式&#xff0c;存在效率低、覆盖面不足、判断主观性强等问题&#xff0c;难以满足对人员打手机行为精…...

在 Spring Boot 项目里,MYSQL中json类型字段使用

前言&#xff1a; 因为程序特殊需求导致&#xff0c;需要mysql数据库存储json类型数据&#xff0c;因此记录一下使用流程 1.java实体中新增字段 private List<User> users 2.增加mybatis-plus注解 TableField(typeHandler FastjsonTypeHandler.class) private Lis…...