首页 > 数据库 >关于at32f415 free rtos下使用flash储存数据flash db库在写入数据库操作时,写入次数大于2次导致数据库数据错乱问题的解决

关于at32f415 free rtos下使用flash储存数据flash db库在写入数据库操作时,写入次数大于2次导致数据库数据错乱问题的解决

时间:2024-08-31 21:25:58浏览次数:14  
标签:flash 数据库 Flash 写入 扇区 粒度 大小 bit


由于f415的扇区每2k是一块扇区,所以在此处.blk_size = n * 1024, //Flash 块/扇区大小(因为 STM32F2 各块大小不均匀,所以擦除粒度为最大块的大小:128K)
这个代码中,需要m==2,同理,需要查看你的单片机每个扇区的大小是多少,如果一个扇区的大小是4k,则此处需要填写的是
由于f415的扇区每2k是一块扇区,所以在此处.blk_size = 4 * 1024, //Flash 块/扇区大小(因为 STM32F2 各块大小不均匀,所以擦除粒度为最大块的大小:128K),
不匹配的话就会出现写入次数大于2次导致数据库数据错乱,数据库数据损坏的情况。
/*
"winbond_25q32" : Flash 设备的名字。
0x08703000: 对 Flash 操作的起始地址。
10111024:Flash 的总大小(1MB)。
128
1024:Flash 块/扇区大小(因为 STM32F2 各块大小不均匀,所以擦除粒度为最大块的大小:128K)。
{init, read, write, erase} :Flash 的操作函数。 如果没有 init 初始化过程,第一个操作函数位置可以置空。
8 : 设置写粒度,单位 bit, 0 表示未生效(默认值为 0 ),该成员是 fal 版本大于 0.4.0 的新增成员。各个 flash 写入粒度不尽相同,可通过该成员进行设置,以下列举几种常见 Flash 写粒度:
nor flash: 1 bit
stm32f2/f4: 8 bit
stm32f1: 32 bit
stm32l4: 64 bit
*/

//1.定义 flash 设备
/*
外部flash规划
核心区域
256K
0~200K
200~256 存储
0x8400000-0x847FFFF 512K为引导程序使用
0x8480000-0x867FFFF 2048K(2M) 为程序存储区域
0x8680000-0x87FFFFF 1536K 为配置存储
/
const struct fal_flash_dev Winbond_25Q32_flash =
{
.name = "winbond_25q32",//Flash 设备的名字。
.addr = 0x08000000+204800, //对 Flash 操作的起始地址
.len = 56
1024, //Flash 的总大小(1MB)
.blk_size = 2 * 1024, //Flash 块/扇区大小(因为 STM32F2 各块大小不均匀,所以擦除粒度为最大块的大小:128K)
.ops = {init, read, write, erase},
.write_gran = 32
};

标签:flash,数据库,Flash,写入,扇区,粒度,大小,bit
From: https://www.cnblogs.com/embedded-jee/p/18390785

相关文章

  • 数据库的多表联合查询 后面有命令和格式的总结
    多表联合查询实践创建表:MySQL[company]>createtableemployee6(  emp_idintauto_incrementprimarykeynotnull,  emp_namevarchar(50),  ageint,  dept_idint);QueryOK,0rowsaffected(0.65sec)查看表结构:MySQL[company]>d......
  • 数据的读取和写入,其中Reader便是其中之一
    在Java开发过程中,我们经常需要读取文件中的数据,而数据的读取需要一个合适的类进行处理。Java的IO包提供了许多类用于数据的读取和写入,其中Reader便是其中之一。本文将对Java中的Reader进行详细介绍,并分析其优缺点及应用场景。摘要本文将从以下几个方面对Java中的Reader类进行详......
  • 金碟k3 使用py 实现对数据库的增删操作
    金蝶K/3是一款广泛使用的ERP系统,它支持多种数据库,如Oracle、SQLServer和MySQL。为了使用Python对金蝶K/3的数据库进行增删操作,我们需要选择合适的数据库驱动来连接数据库,并使用SQL语句来执行相应的操作。以下是一个示例,展示如何使用Python对金蝶K/3使用的数据库进行增删操......
  • 使用python基于fastapi发布接口(二)-连接mysql数据库查询数据
    上一章在这里操作MySQL数据库使用mysql-connector-python库安装mysql-connector-pythonpipinstallmysql-connector-python代码编写在原来代码基础上添加数据库连接配置fromtypingimportUnionfromfastapiimportFastAPIapp=FastAPI(......
  • 039.CI4框架CodeIgniter,封装Model模型绑定数据库的封装
    01、ModelBase.php代码如下:<?phpnamespaceApp\Models;useCodeIgniter\Database\ConnectionInterface;useCodeIgniter\Model;useCodeIgniter\Validation\ValidationInterface;classModelBaseextendsModel{var$Db;function__construct(Conn......
  • C#应用实战,手把手教你如何:在日志中写入内容
    使用c#编写一个方法,该方法有一个形参。要求:1定义一个文件目录:D/MesData。如果该目录不存在,则创建一个目录。2读取目录下的MesLog.TXT文件,如果该文件不存在,则创建一个文件。3定义一个字符串str,它由当前时间以及方法的形参组成4将字符串str添加到MesLog.TXT文件内容的末尾......
  • 8.4linux定时任务-环境变量-数据库
    配合SUID本地环境变量提权思路原理:利用sh环境变量替换,使得/tmp/ps得到root权限;ps=sh过程:手写调用文件-编译-复制文件-增加环境变量-执行gccdemon1.c-oshellcp/bin/sh/tmp/psexportPATH=/tmp:$PATH#webshell权限无法设置环境变量./shellid提前本地定时任务(cronta......
  • 数据库系统------三级模式架构
    分层设计主要分为3个层级物理层物理层就是描述数据库如何存储记录,即数据的实际存储方式,是how逻辑层逻辑层就是描述数据库中存储数据的结构以及它们之间的关系,即存储了什么样的数据,是what视图层视图层就是描述数据的呈现方式,即哪些数据应该被哪些用户看到,换句话说,不......
  • [昌哥IT课堂]使用MySQL Shell 部署沙盒数据库实例详解
     概述:这部分解释了如何使用AdminAPI设置沙盒部署。部署和使用本地MySQL的沙盒实例是开始探索AdminAPI的好方法。在将功能部署到生产服务器之前,您可以在本地测试功能。AdminAPI具有内置功能,用于创建正确配置的沙箱实例,以便在本地部署的情况下与InnoDBCluster、InnoDBClusterS......
  • sqlsugar 封装 单例模式 多数据库 泛型
    PlayGround\.config\dotnet-tools.json{"version":1,"isRoot":true,"tools":{"csharpier":{"version":"0.29.1","commands":["dotnet-csharpier......