• 一种简易的Nor flash存储数据机制


    Nor Flash的特性如下:

    擦除:将“0”变为“1”,擦除单位为 page或者sector。

    写:只能将“1”变为“0”,写入单位为32 bits。

    Serial Flash:内部集成了SPI接口的一种Nor Flash,一般应用为外部通过SPI接口与MCU连接,相对于片上Nor Flash通常容量较大(4~32M Bytes),设计为:

    以Sector为单位进行擦除,以Page为单位进行编程。

    MCU片上Nor Flash通常容量较小(小于4M Bytes),设计为:

    以page为单位进行擦除,以32位整字/16位半字/位为单位进行编程。

    设计存储数据结构,可使用位域节省空间。

    typedef struct _ st_sys_data_

    {

        uint8_t b_v1            : 1;

        uint8_t b_v2              : 1;

    uint8_t v3               : 2;   

    } st_sys_data;

    1. 设计数据开始跟结束标志,与sys_data存放在flash中的格式如下:

    #define SYS_DATA_START_ID       0x12345678

    #define SYS_DATA_END_ID         0x87654321

    check_sum : 可以定义为校验和(8 bit/16bit/32bit)或者CRC或者异或运算等。

    SYS_DATA_START_ID  + sys_data + check_sum  +SYS_DATA_END_ID 

    2. 指定Flash的偏移地址与长度,用来初始化存储区域的地址与长度。

    INT32 init_sys_data(UINT32 base_addr, UINT32 len)

    {

             if((UINT_MAX == base_addr) ||(SYS_FLASH_SIZE

                       return ERR_FAILURE;

             }

         g_sys_data_base_addr = base_addr;

         g_sys_data_len = len;

        return SUCCESS;

    }

    3. 数据保存软件逻辑:

            1.)判定剩余空间是否足够存放sys_data(4+sys_data+4+checksum),如足够存放跳转到步骤3进行数据存储。

            2.)如空间不够,擦除该段空间。

            3.)依次存储start_id/sys_data/checksum/end_id

    4. 数据加载软件逻辑:

    1. )判定数据偏移地址是否合法,若非法返回读取失败。
    2. )从数据偏移地址往回搜寻end_id,找到end_addr。
    3. )从end_addr往回搜寻start_id,找到start_addr。
    4. )判定end_addr/start_addr是否合法(其差值应该等于sys_data+checksum的长度)。
    5. )若合法读取sys_data及checksum。
    6. )计算sys_data的checksum并与读出的checksum校验,若校验通过则读取成功。

    5. 应用层创建sys_data_back变量作为拷贝,当sys_data与sys_data_back不相同才调用数据保存流程。数据加载保持更新sys_data_back。

    6. 该方案有断电丢失数据的风险。

  • 相关阅读:
    连接器公司介绍
    移动零(力扣热题HOT100 之 力扣283)java
    建造者模式/生成器模式
    leetcode day12 二叉树的最大深度
    Linux: 会话登录超时的一些改动
    【CVPR2022 点云3D检测SOTA】SoftGroup for 3D Instance Segmentation on Point Clouds
    Centos云服务器安装jdk1.8.0_191
    并发编程系列-分而治之思想Forkjoin
    全国大学生智能汽车大赛(一):摄像头识别赛道代码
    去雨去雪去雾数据集构建
  • 原文地址:https://blog.csdn.net/man9953211/article/details/128196833