当前位置:网站首页>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
边栏推荐
- What is an intermediate network engineer? What is the main test and what is the use?
- [dai6] mirror image of JZ27 binary tree
- Multithreaded asynchronous orchestration
- 深入理解Apache Hudi异步索引机制
- 软考一般什么时候出成绩呢?在线蹬?
- Network engineer test questions and answers in May of the first half of 2022
- Find the root of equation ax^2+bx+c=0 (C language)
- Kotlin realizes wechat interface switching (fragment exercise)
- Socket通信原理和实践
- The width of table is 4PX larger than that of tbody
猜你喜欢
[牛客网刷题 Day5] JZ77 按之字形顺序打印二叉树
Elegant controller layer code
BUUCTF---Reverse---reverse1
成为优秀的TS体操高手 之 TS 类型体操前置知识储备
软考中级有用吗??
2022年上半年5月网络工程师试题及答案
0x0fa23729 (vcruntime140d.dll) (in classes and objects - encapsulation.Exe) exception thrown (resolved)
PHP \ newline cannot be output
BUUCTF---Reverse---reverse1
SQL Server 知识汇集9 : 修改数据
随机推荐
Adb 实用命令(网络包、日志、调优相关)
When there are pointer variable members in the custom type, the return value and parameters of the assignment operator overload must be reference types
软考中级有用吗??
Is the soft test intermediate useful??
MONAI版本更新到 0.9 啦,看看有什么新功能
Schnuka: working principle of robot visual grasping machine visual grasping
Pre knowledge reserve of TS type gymnastics to become an excellent TS gymnastics master
PHP \ newline cannot be output
小程序跳转H5,配置业务域名经验教程
The gun startles the dragon, and the crowd "locks" Zhou Zhi
Openinstall and Hupu have reached a cooperation to mine the data value of sports culture industry
leetcode-303:区域和检索 - 数组不可变
施努卡:机器视觉定位技术 机器视觉定位原理
Multisim -- software related skills
[daiy5] jz77 print binary tree in zigzag order
555 circuit details
【作业】2022.7.6 写一个自己的cal函数
[actual combat] transformer architecture of the major medical segmentation challenges on the list --nnformer
[recommendation system 01] rechub
ADB utility commands (network package, log, tuning related)