程序运行中有些一条一条的数据需要保存在flash中,每条数据假定123byte,数据总条数假定是100。循环使用.
写过程: 每次会读写一条数据,然后再 修改一个pointer(4byte),指向最后一条数据。
使用读写保护机制,即用system_param_load()读,用system_param_save_with_protect()写,
使用1024KB flash,支持云端升级,
我看了文档 2A-ESP8266__IOT_SDK_User_Manual__CN_v1.3.0.pdf,1024K分为两半,我的user1.bin小于240KB,
是不是数据存储可以从:4K+240K开始存储?即 0x3D开始?system_param_save_with_protect(0x3D, void *data, 123)
----------------
但这里先假定从4K+492KB开始存储,即 0x7C开始,
#define DATA_RECORD_POINTER_ADDR 0X7C // 数据pointer 位置,固定, 为了保存4byte数据,要使用3*4 KB的空间?
#define DATA_RECORD_START_ADDR 0X7F // 数据 起始位置
第1条数据 addr 0x7F, system_param_save_with_protect(0x7F, void *data, 123)
第2条数据 DATA_RECORD_START_ADDR+3=0x82, system_param_save_with_protect(0x82, void *data, 123)
第3条数据 DATA_RECORD_START_ADDR+6=0x85,system_param_save_with_protect(0x85, void *data, 123)
。。。
第100条数据的addr是 0x7F + 100*3=0x1AB, system_param_save_with_protect(0x1AB, void *data, 123)
为了保存 123byte的数据,使用了3*4 KB的空间,100条数据共使用100*12KB空间,
好像不对,请指导怎么规划这种存储,谢谢!
支持云端升级,1024KB flash,"自定义数据" 存储方案如何规划?
Re: 支持云端升级,1024KB flash,"自定义数据" 存储方案如何规划?
Postby Goland » Thu Oct 29, 2015 11:01 am
刚才优化了一下数据,现在单条数据长度是40byte,100条 共占用4000byte,不到 1个sector,
而“user param”区是16KB的,4个 sector,所以可以将数据 带“读写保护机制” 保存在这里(占了3个sector)。
是否可以像下面这样操作?
将数据pointer(4byte) 与 全部数据 合并存储 在一个 sector里,
每次改写数据时,先malloc(4KB), 将 1个 sector的数据全部读回,
做处理,将修改后的 数据 再次 全部写回,
但觉得这样读写,为了修改部分数据,而实际上读写了 所有数据,效率是不是有些问题?
而“user param”区是16KB的,4个 sector,所以可以将数据 带“读写保护机制” 保存在这里(占了3个sector)。
是否可以像下面这样操作?
将数据pointer(4byte) 与 全部数据 合并存储 在一个 sector里,
每次改写数据时,先malloc(4KB), 将 1个 sector的数据全部读回,
做处理,将修改后的 数据 再次 全部写回,
但觉得这样读写,为了修改部分数据,而实际上读写了 所有数据,效率是不是有些问题?
Who is online
Users browsing this forum: No registered users and 27 guests
Login
Newbies Start Here
Are you new to ESP8266?
Unsure what to do?
Dunno where to start?
Start right here!
Latest SDK
Documentation
Complete listing of the official ESP8266 related documentation release by ESPRESSIF!
Must read here!
- All times are UTC+08:00
- Top
- Delete all board cookies
About Us
Espressif Systems is a fabless semiconductor company providing cutting-edge low power WiFi SoCs and wireless solutions for wireless communications and Internet of Things applications. We are the manufacturer of ESP8266EX.