一引子 :需要大量存储数据时,一般都不会使用单片机内部存储资源(单片机内部的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);                                                                 
}

三:根据实时性的要求可以增添队列操作,擦写策略的操作

转载于:https://www.cnblogs.com/jieruishu/p/6834346.html

关于外部存储器件对存储数据的管理。相关推荐

  1. 异构数据统一管理推动存储资源盘活

    随着数据量的爆发式增长,许多企业产生数据的量级由原有的TB 级别迅速的提升到 PB 甚至 EB 级别.企业付出成本来存储这些数据的同时自然也想通过挖掘数据信息辅助商业决策,提升管理效率. 大数据经过了 ...

  2. 数据中心管理:从DCIM过渡到DMAAS

    为什么需要DMaaS?它是什么? 数据中心是企业用来存放其关键应用程序和数据的集中物理设施.虽然数据中心有助于我们满足实时数据传输的要求,但它们存在停机问题,而且对大多数公司来说往往是一件昂贵的事情. ...

  3. dama数据管理知识体系指南_DAMA知识体系解读(6)数据操作管理

    数据操作管理是提供从数据获取到数据清理的全过程支持,关联图: 一.概念 数据操作管理是结构化数据的开发.维护和支持活动.包括两个职能:数据库支持和数据技术管理.数据管理员(DBA)在该活动中起着重要的 ...

  4. java 存储数据到文件中_本机速度文件支持的“纯” Java大数据存储

    java 存储数据到文件中 动机 所有这一切始于意识到我买不起足够大的计算机. 音频处理需要大量的内存. Audacity是一款出色的免费音频处理器,它使用文件支持的存储系统对其进行管理. 这是解决此 ...

  5. 第五章 存储数据 web scraping with python

    第五章.存储数据 尽管在终端打印是有很多乐趣的,但是当谈到数据汇总和分析时候这不是非常有用的.为了使大部分的爬虫有用,你需要能够保存它们抓取的信息. 在本章中,我们将着眼于的三个数据管理的方法满足任何 ...

  6. Linux系统管理--(3)定时、延时任务与存储的基本管理

    Linux系统管理 实验所用系统为Redhat-rhel8.2. 目录 Linux系统管理 Linux的系统管理--系统定时任务与延时任务 一.系统延时任务 二.at任务的黑白名单 三.系统中的定时服 ...

  7. android平台上持久化存储3种手段_Android 数据持久化==存储数据的五种方法

    1.使用SharedPreferences存储数据 2.文件存储数据 3.SQLite数据库存储数据 4.使用ContentProvider存储数据 5.网络存储数据 第一种: 使用SharedPre ...

  8. 2021年大数据HBase(十三):HBase读取和存储数据的流程

    全网最详细的大数据HBase文章系列,强烈建议收藏加关注! 新文章都已经列出历史文章目录,帮助大家回顾前面的知识重点. 目录 系列历史文章 HBase读取和存储数据的流程 一.HBase读取数据的流程 ...

  9. CynosDB技术详解——存储集群管理

    本文由腾讯云数据库发表 前言 CynosDB是架构在CynosFS之上的分布式关系数据库系统,为最大化利用存储资源,平衡资源之间的竞争,检查资源使用情况,需要一套高效稳定的分布式集群管理系统(SCM: ...

最新文章

  1. Java黑皮书课后题第10章:*10.5(显示素数因子)编写一个程序,提示用户输入一个正整数,然后以降序显示它的所有最小因子
  2. Android中的AsyncTask异步任务的简单介绍
  3. 宝塔面板 创建 二级域名 Unable to round-trip http request to upstream
  4. LeetCode 1657. 确定两个字符串是否接近
  5. [转载] Java中的变量和常量
  6. 微信公众平台开发之在网页上添加分享到朋友圈,关注微信号等按钮
  7. 在JS/jQuery中,怎么触发input的keypress/keydown/keyup事件?
  8. DB2常用错误代码大全
  9. 手把手教你0基础C语言速通
  10. CentOS 7安装ifconfig
  11. 研磨设计模式-设计模式的基础-设计模式有什么
  12. 2018 最新 cnki账号 中国知网账号 帐号 免费入口 用户名 密码 万方 维普
  13. rinetd 端口转发
  14. dsp版win10和普通版区别_图文详解win10各个版本之间有什么区别
  15. 淘宝天猫春节照常发货—轻轻松松“淘宝式过年”
  16. PyautoGui常用教程(鼠标、键盘)
  17. python用于导入模块或模块中的对象_在 Python 中导入模块中的对象有哪几种方式? (5.0分)_学小易找答案...
  18. 监控、无人机摄像头RTSP协议对接腾讯云直播
  19. 大数据常见英文词汇(待更新)
  20. 哔!与刷卡机贴贴的付款卡经历了什么?

热门文章

  1. rtmp 封包及消息
  2. listview改变选中行字体颜色
  3. 简单看正则(grep)
  4. Resources about Rx(Reactive Extensions)
  5. openoj的一个小比赛(J题解题报告)poj1703(并查集)
  6. 如何解决C/C++中stack overflow问题
  7. TI xDAIS的深入理解
  8. oracle exp语句 按日期命名,Windows平台下Oracle数据库exp全备脚本,根据时间保留备份数及自动上备份至FTP...
  9. AutoML自定义搜索网络类(如何在一个大的网络中搜索一个网络)
  10. oracle查询语句注意事项: