关于外部存储器件对存储数据的管理。
一引子 :需要大量存储数据时,一般都不会使用单片机内部存储资源(单片机内部的eerom或者flash模拟eeprom只适合存储少量的数据)。一般是通过I2C/SPI接口外部扩展eeprom或者flash,这类器件存储空间都很大能满足大部分的数据存储要求。
二 存储器件内部空间的划分:根据存储IC的容量大小、存储操作方法(页操作或块操作)、要存储的内容分类、对存储的实时性要求,
2.1先定义各记录的自定义数据结构(按记录内容不同分为不同的存储块)
typedef struct
{
unsigned char A01;
float A02; //
float A03; //
。。。。
}Block_A_Type;
typedef struct
{
unsigned char B01;
float B02; //
float B03; //
。。。。
}Block_B_Type;
.....
2.2对存储IC按各记录内容的大小进行空间分配:
/*-----------------------------存储地址分配---------------------------------*/
#define BLOCK_A_ADDR 1*1024
#define BLOCK_B_ADDR 2*1024
#define BLOCK_C_ADDR 3*1024
....
#define BLOCK_TOTAL_ADDR 30*1024
2.3 对存储IC的驱动程序进行封装,使其能够接收开始地址、写缓冲指针/读缓冲buf指针、读写的字节数这三个参数,
2.4分别编写对不同数据记录块读写的函数(用具备变量定义记录块可节省RAM,共用体方便操作):
void BlockA_Write(Block_A_Type Block)
{
union abc
{
Block_A_Type Block; //结构体变量
unsigned char Buffer[sizeof(Block_A_Type)];
}Data;
Data.Block = Block;
FM24XX_MultWrite(BLOCK_A_ADDR,Data.Buffer,sizeof(Block_A_Type));
}
/*
----------------------------------------------------------------------------------------------------
功能:块A读函数
参数:无
返回:块A的数据
----------------------------------------------------------------------------------------------------
*/
Block_A_Type BlockA_Read(void)
{
union
{
Block_A_Type Block; //结构体变量
unsigned char Buffer[sizeof(Block_A_Type)];
}Data;
FM24XX_MultRead(BLOCK_A_ADDR,Data.Buffer,sizeof(Block_A_Type));
return(Data.Block);
}
三:根据实时性的要求可以增添队列操作,擦写策略的操作
相关文章
- 生成的代码如何存储内部信号、状态和参数数据
- mysql的存储过程
- 前端开发面试题—HTML5应用程序缓存 (离线存储)
- 《大数据管理概论》一3.2 大数据存储与管理方法
- 《计算机存储与外设》----导读
- MySQL procedure & function 存储过程 & 存储函数
- Hive-ORC文件存储格式
- mysql中int、bigint、smallint 和 tinyint的存储
- 《信息存储与管理(第二版):数字信息的存储、管理和保护》—— 2.8 主机对数据的访问
- Hive(八)Hive的Shell操作与压缩存储
- swift 数据存储
- IOS(swift)-数据存储 · 用NSUserDefaults存储配置信息
- Hive:ORC File Format存储格式详解
- 【漫画解读】HDFS存储原理
- Paimon 专题上线|从 0 到 1 入门新一代流式数据湖存储
- IOS中NSUserDefaults的用法(轻量级本地数据存储)
- jupyter修改默认存储路径
- 以隐私为中心的全新搜索引擎Oscobo 承诺永不出售或存储个人数据
- 创建Ceph crush运行图实现基于HDD和SSD磁盘实现数据冷热数据分类存储
- 【oracle11g,17】存储结构: 段的类型,数据块(行连接、行迁移,块头),段的管理方式,高水位线
- Java数据存储机制的实现
- (3.3)存储引擎--数据读写
- 网盘纷退场 “云存储”仍是刚需
- Redis内存使用优化与存储
- 分布式爬虫系统设计、实现与实战:爬取京东、苏宁易购全网手机商品数据+MySQL、HBase存储
- kubernetes之数据存储详解
- 数据库系统原理课程总结3——SQL语句,建表,主键外键,存储过程,批量输入百万级数据