EasyFlash 里的 EF_WRITE_GRAN
EF_WRITE_GRAN 宏是啥意思? 我若使用 W25Q32 芯片, 我该配置成啥?
/* the flash write granularity, unit: bit* only support 1(nor flash)/ 8(stm32f4)/ 32(stm32f1) */
#define EF_WRITE_GRAN 1 /* @note you must define it for a value */static size_t set_status(uint8_t status_table[], size_t status_num, size_t status_index)
{size_t byte_index = ~0UL;/** | write garn | status0 | status1 | status2 |* ---------------------------------------------------------------------------------* | 1bit | 0xFF | 0x7F | 0x3F |* | 8bit | 0xFFFF | 0x00FF | 0x0000 |* | 32bit | 0xFFFFFFFF FFFFFFFF | 0x00FFFFFF FFFFFFFF | 0x00FFFFFF 00FFFFFF |*/memset(status_table, 0xFF, STATUS_TABLE_SIZE(status_num));if (status_index > 0) {
#if (EF_WRITE_GRAN == 1)byte_index = (status_index - 1) / 8;status_table[byte_index] &= ~(0x80 >> ((status_index - 1) % 8));
#elsebyte_index = (status_index - 1) * (EF_WRITE_GRAN / 8);status_table[byte_index] = 0x00;
#endif /* EF_WRITE_GRAN == 1 */}return byte_index;
}
从这可以看出来, 若 EF_WRITE_GRAN 定义为 1 , 则表示最小改动为1bit;
flash一般有个特性, 可以将1写成0, 所以我们可以利用这个特性实现 "值和位表" 的转换
如代码区的注释表格里一样, 若写入颗粒是1bit, 则可以用一个字节表示8种状态.
假如我们定义有效数据的标记位0xEF89
当EF_WRITE_GRAN 为1, 可以定义脏数据为0xEF89;
当EF_WRITE_GRAN 为8, 可以定义脏数据为0xEF00;
经过我的测试W25Q32 这样的 SPI 存储器的写入颗粒可以是1bit.
记得STM32L1x系列写入颗粒是8, 其他单片机我都没怎么试过.
EasyFlash 里的 EF_WRITE_GRAN相关推荐
- Android界面特殊全汇总
(一)Activity 页面切换的效果 Android 2.0 之后有了 overridePendingTransition() ,其中里面两个参 数,一个是前一个 activity 的退出两一个 a ...
- RT-Thread完整版fal及easyflash移植
最近深圳开始隔离了,居家办公对于我们这种需要做验证仿真的,而家伙都没在手上的打工人太难了.因为最近项目需要用到fal加easyflash软件包,而之前搞过,但是忘记具体的了.还好留有文档,现在也转为文 ...
- RT-Thread—FAL与EasyFlash组件移植
一.FAL管理与示例 FAL (Flash Abstraction Layer) Flash 抽象层,是对 Flash 及基于 Flash 的分区进行管理.操作的抽象层,对上层统一了 Flash 及 ...
- IOT-OS之RT-Thread(十一)--- FAL分区管理与easyflash变量管理
文章目录 一.FAL管理与示例 1.1 FAL软件包源码获取 1.2 FAL管理 1.3 FAL移植 1.4 FAL使用示例 二.DFS挂载到FAL分区示例 三.Easyflash移植到FAL分区示例 ...
- RT-Thread—STM32—EasyFlash
!!! 本文已同步到码云 - 点击此链接获取最新 - 可进入码云提交修改 !!! 概述 本教程主要根据官方推荐的教程进行改编,详细信息请参考EasyFlash软件包 本例程的模板使用通用模板环境搭建里 ...
- EasyFlash源码分析记录
前言: 记录分析EasyFlash源码V4.1.0的过程所想.实际嵌入式项目中,flash的使用是必不可少的,好的flash存储框架有利于进行数据的存储和读取,虽然现在的flash擦写寿命已经很长了, ...
- EasyFlash V4.0 ENV 功能设计与实现
声明:本文档来源于EasyFlash的仓库,原作者armink.因github上图片显示缓慢,我转载到了CSDN. 文档链接:EasyFlash V4.0 ENV 功能设计与实现 EasyFlash ...
- 基于RT-Thread Studio的FAL,EasyFlash,文件系统移植
一.新建工程 1.2.配置时钟 1.3.修改main文件 #include <rtthread.h> #include <rtdevice.h> #include < ...
- RT-thread应用讲解——easyflash
RT-thread应用讲解--easyflash 目录 RT-thread应用讲解--easyflash 前言 一.挂载FLASH 二.配置分区 三.下载软件包 四.接口驱动移植 1.移植驱动 2.修 ...
最新文章
- 浅谈lambda表达式最通俗易懂的讲解
- python 相关性检验_在Python中计算Pearson相关性和重要性
- mysql zrm 配置_利用MySQL-zrm来备份和恢复MySQL数据库方法详解
- access 合并多行字符串_八种方法玩转字符串合并,这篇文章全都给你讲明白!...
- c语言除法效率问题,【图片】今天写几个性能测试,为什么C语言跑得这么慢呢??【c语言吧】_百度贴吧...
- java quartz没执行完_quartz 防止上一任务未执行完毕,下一时间点重复执行
- 在VS2012中实现ExtJS的智能提示
- java tempfile read_Java资源作为文件
- MySQL查看当前的连接信息
- 使用xshell6连接linux提示 WARNING! The remote SSH server rejected X11 forwarding
- 基于highcharts+easui+java生成时趋图
- jquery 自定义插件!
- GNS3与Wireshark相关联
- r语言 怎么把字调大_R语言中的字体调整
- 红外遥控器解码串口输出模块结合51单片机+oled屏幕实现遥控器红外解锁( STC89C52RC)
- 程序员修炼之道——通向务实的最高境界(第二版)
- 原生小程序 引入vant-weapp 组件库 和 WeUI组件库
- 思岚激光雷达+cartographer建图
- 时间局部性和空间局部性
- 学习发展历史,真的一无所用吗?NO