当前位置:网站首页>Records on the use of easyflash v3.3
Records on the use of easyflash v3.3
2022-07-07 10:39:00 【Sky_ Lannister】
Open source address https://github.com/armink/EasyFlash
A post by an open source Author :https://www.amobbs.com/thread-5624863-1-1.html
It has reached V4 了 , But here's the thing ST Of L4 Series MCU , Cannot write in reverse order , So it's still used V3 edition
The space is full occasionally when using , It's especially hard to reproduce , Just go through the source code
About wear balance
Not a real wear balance , Just keep erasing and reading to a sector first , When this sector is broken , Translate another sector down , And as long as there is a write or erase failure in this sector, it will shift to the next sector ,V4 Implementation and V3 Totally differentAbout env Delete and reset :
/* remain ENV move forward */
memcpy(del_env, del_env + del_env_length, remain_env_length);
After deleting a key value pair , The cache data is uniformly shifted forward Then set the end address ;
The cache area after the currently used address (env_cache) Size erase , Then write the shifted data from the current address
save_cur_using_data_addr Is before writing 16 Byte lead data to the system area ;
When deleting, there will be a space to save a set of data that will be saved every time you resetAbout power failure protection :
Power failure protection is realized by software , It is not saved after detecting that the voltage of the single chip microcomputer is lower than a certain value , But the call ef_save_env_wt When , How many days after a write k Backup , Write the first few at a time k Really save , Back and forth twice , One is always the preservation of another , But this causes a waste of spaceAbout get_env_user_used_size(void) The understanding of the :
static size_t get_env_user_used_size(void) {
if (get_env_detail_end_addr() > get_cur_using_data_addr()) {
return get_env_detail_end_addr() - get_cur_using_data_addr();
} else {
return 0;
}
}
Why get the used size , Is to subtract the address in use from the end address , I can't understand the positive and reverse order ?
Actually, it should be understood as get_env_detail_end_addr() Is the end address used , It always changes according to the size of the write , and get_cur_using_data_addr(); Are two fixed values , That is, if it weren't for the backup area , If it weren't for the real storage areaAbout env Space allocation :
Power down and wear balance mode , The distribution of the front and rear memory areas is consistent :1 System area 、2 Data area
Pay attention to the cache RAM size 、 Environment variable area 、 The size of the minimum erased sectors and their relationshipAbout the size of the persistent data area :
default_env_set_size: Always saved KEY-VALUE When resetting, write it to the last area of the cache
Use set_env_detail_end_addr(get_env_detail_end_addr() + env_str_len); Set the stored content
边栏推荐
- leetcode-303:区域和检索 - 数组不可变
- 1324: [example 6.6] integer interval
- Leetcode-303: region and retrieval - array immutable
- 01 use function to approximate cosine function (15 points)
- Unable to open kernel device '\.\vmcidev\vmx': operation completed successfully. Reboot after installing vmware workstation? Module "devicepoweron" failed to start. Failed to start the virtual machine
- BUUCTF---Reverse---reverse1
- IIC Basics
- Five simple and practical daily development functions of chrome are explained in detail. Unlock quickly to improve your efficiency!
- CAS机制
- Schnuka: machine vision positioning technology machine vision positioning principle
猜你喜欢
ArrayList thread insecurity and Solutions
ThreadLocal会用可不够
leetcode-560:和为 K 的子数组
【机器学习 03】拉格朗日乘子法
Network engineer test questions and answers in May of the first half of 2022
使用Tansformer分割三维腹部多器官--UNETR实战
1321:【例6.3】删数问题(Noip1994)
软考一般什么时候出成绩呢?在线蹬?
How much review time does it usually take to take the intermediate soft exam?
PHP \ newline cannot be output
随机推荐
How much review time does it usually take to take the intermediate soft exam?
leetcode-304:二维区域和检索 - 矩阵不可变
Socket通信原理和实践
Multithreaded asynchronous orchestration
P2788 math 1 - addition and subtraction
Schnuka: machine vision positioning technology machine vision positioning principle
Using tansformer to segment three-dimensional abdominal multiple organs -- actual battle of unetr
1321: [example 6.3] deletion problem (noip1994)
【推荐系统 02】DeepFM、YoutubeDNN、DSSM、MMOE
Pre knowledge reserve of TS type gymnastics to become an excellent TS gymnastics master
CSAPP bomb lab parsing
[email protected] can help us get the log object quickly
1323: [example 6.5] activity selection
IIC基本知识
About hzero resource error (groovy.lang.missingpropertyexception: no such property: weight for class)
Summary of router development knowledge
基于HPC场景的集群任务调度系统LSF/SGE/Slurm/PBS
1323:【例6.5】活动选择
BigDecimal value comparison
TypeScript 接口继承