当前位置:网站首页>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
边栏推荐
- The variables or functions declared in the header file cannot be recognized after importing other people's projects and adding the header file
- ThreadLocal is not enough
- Use load_ decathlon_ Datalist (Monai) fast loading JSON data
- 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
- Summary of router development knowledge
- Jump to the mobile terminal page or PC terminal page according to the device information
- 使用U2-Net深层网络实现——证件照生成程序
- BUUCTF---Reverse---reverse1
- [actual combat] transformer architecture of the major medical segmentation challenges on the list --nnformer
- [dai6] mirror image of JZ27 binary tree
猜你喜欢
![1324: [example 6.6] integer interval](/img/5d/29db4d51ec7a2685f8aeffe5be68da.png)
1324: [example 6.6] integer interval
![[daiy5] jz77 print binary tree in zigzag order](/img/ba/b2dfbf121798757c7b9fba4811221b.png)
[daiy5] jz77 print binary tree in zigzag order

Trajectory planning for multi robot systems: methods and Applications Overview reading notes

Use load_ decathlon_ Datalist (Monai) fast loading JSON data

Pre knowledge reserve of TS type gymnastics to become an excellent TS gymnastics master

Socket communication principle and Practice

Mendeley -- a free document management tool that automatically inserts references into papers

String formatting
![[STM32] solution to the problem that SWD cannot recognize devices after STM32 burning program](/img/03/41bb3870b9a6c2ee66099abac08eb3.png)
[STM32] solution to the problem that SWD cannot recognize devices after STM32 burning program

CAS mechanism
随机推荐
What does intermediate software evaluator test
BigDecimal数值比较
What are the test preparation materials and methods for soft exam information processing technicians?
高级软考(网络规划设计师)该如何备考?
[STM32] solution to the problem that SWD cannot recognize devices after STM32 burning program
Use the fetch statement to obtain the repetition of the last row of cursor data
IO model review
JS实现链式调用
When there are pointer variable members in the custom type, the return value and parameters of the assignment operator overload must be reference types
Common shortcut keys in IDA
南航 PA3.1
中级软件评测师考什么
软考一般什么时候出成绩呢?在线蹬?
1324: [example 6.6] integer interval
原型与原型链
Hdu-2196 tree DP learning notes
Study summary of postgraduate entrance examination in November
Cluster task scheduling system lsf/sge/slurm/pbs based on HPC scenario
无法打开内核设备“\\.\VMCIDev\VMX”: 操作成功完成。是否在安装 VMware Workstation 后重新引导? 模块“DevicePowerOn”启动失败。 未能启动虚拟机。
IIC Basics