提交 76d65c90 编写于 作者: A armink

1、【完善】说明文档。

Signed-off-by: Narmink <armink.ztl@gmail.com>
上级 486e953a
......@@ -4,7 +4,7 @@
## 1、介绍
EasyFlash是一款开源的轻量级嵌入式Flash存储器库,主要为MCU(Micro Control Unit)提供便捷、通用的上层应用接口,使得开发者更加高效实现基于的Flash存储器常见应用开发。该库目前提供 **三大实用功能**
[EasyFlash](https://github.com/armink/EasyFlash)是一款开源的轻量级嵌入式Flash存储器库,主要为MCU(Micro Control Unit)提供便捷、通用的上层应用接口,使得开发者更加高效实现基于的Flash存储器常见应用开发。该库目前提供 **三大实用功能**
- **Env** 小型KV数据库,支持 **写平衡(磨损平衡)****掉电保护** 模式
......@@ -29,9 +29,9 @@ Demo平台:STM32F103RET6 + RT-Thread 1.2.2 + Env(2K bytes)
### 1.2、支持平台
目前已移植硬件平台有 `stm32f10x``stm32f4xx` 系列的片内Flash,这个也是笔者产品使用的平台。其余平台的移植难度不大,在项目的设计之初就有考虑针对所有平台的适配性问题(64位除外),所以对所有移植接口都有做预留。移植只需修改 `\easyflash\port\ef_port.c` 一个文件,实现里面的擦、写、读及打印功能即可。
目前已移植硬件平台有 `stm32f10x``stm32f4xx` 系列的片内Flash,这个也是笔者产品使用的平台。其余平台的移植难度不大,在项目的设计之初就有考虑针对所有平台的适配性问题(64位除外),所以对所有移植接口都有做预留。移植只需修改 [`\easyflash\port\ef_port.c`](https://github.com/armink/EasyFlash/blob/master/easyflash/port/ef_port.c) 一个文件,实现里面的擦、写、读及打印功能即可。
欢迎大家 **star and pull request**([Github](https://github.com/armink/EasyFlash)|[OSChina](http://git.oschina.net/armink/EasyFlash)|[Coding](https://coding.net/u/armink/p/EasyFlash/git)) 。开源软件的成功离不开所有人的努力,也希望该项目能够帮助大家降低开发周期,让产品更早的获得成功
欢迎大家 **fork and pull request**([Github](https://github.com/armink/EasyFlash)|[OSChina](http://git.oschina.net/armink/EasyFlash)|[Coding](https://coding.net/u/armink/p/EasyFlash/git)) 。如果觉得这个开源项目很赞,可以点击[项目主页](https://github.com/armink/EasyFlash) 右上角的**Star**,同时把它推荐给更多有需要的朋友
## 2、流程
......@@ -62,7 +62,7 @@ Demo平台:STM32F103RET6 + RT-Thread 1.2.2 + Env(2K bytes)
## 3、文档
具体内容参考`\docs\`下的文件。务必保证在 **阅读文档** 后再移植使用。
具体内容参考[`\docs\zh\`](https://github.com/armink/EasyFlash/tree/master/docs/zh)下的文件。务必保证在 **阅读文档** 后再移植使用。
## 4、许可
......@@ -72,7 +72,7 @@ Demo平台:STM32F103RET6 + RT-Thread 1.2.2 + Env(2K bytes)
## 1 Introduction
EasyFlash is an open source lightweight embedded flash memory library. It provide convenient application interface for MCU (Micro Control Unit). The developers can achieve more efficient and common application development based on Flash memory. The library currently provides **Three useful features** :
[EasyFlash](https://github.com/armink/EasyFlash) is an open source lightweight embedded flash memory library. It provide convenient application interface for MCU (Micro Control Unit). The developers can achieve more efficient and common application development based on Flash memory. The library currently provides **Three useful features**
- **Env(environment variables)** : A small KV database. Support **write balance mode(wear leveling)** and **power fail safeguard**.
......@@ -97,9 +97,9 @@ Actual : ROM: 6K bytes RAM: 2.6K bytes
### 1.2 Supported platforms
Hardware platform has been ported `stm32f10x` and `stm32f4xx` series of on-chip Flash. This is my product platform. Remaining platform porting difficulty is little. The porting just modify `\easyflash\port\ef_port.c` file. Implement erase, write, read, print feature.
Hardware platform has been ported `stm32f10x` and `stm32f4xx` series of on-chip Flash. This is my product platform. Remaining platform porting difficulty is little. The porting just modify [`\easyflash\port\ef_port.c`](https://github.com/armink/EasyFlash/blob/master/easyflash/port/ef_port.c) file. Implement erase, write, read, print feature.
Welcome everyone to **star and pull request**([Github](https://github.com/armink/EasyFlash)|[OSChina](http://git.oschina.net/armink/EasyFlash)|[Coding](https://coding.net/u/armink/p/EasyFlash/git)). The open source software success is inseparable from everyone efforts. I hope this project will help everyone reduce product development cycle and make product to success earlier.
Welcome everyone to **fork and pull request**([Github](https://github.com/armink/EasyFlash)|[OSChina](http://git.oschina.net/armink/EasyFlash)|[Coding](https://coding.net/u/armink/p/EasyFlash/git)). If you think this open source project is awesome. You can press the **Star** on the top right corner of [project home page](https://github.com/armink/EasyFlash), and recommend it to more friends.
## 2 Flow
......@@ -130,7 +130,7 @@ The following figure is the output log process through the console. The logs wil
## 3 Documents
All documents is in the `\docs\` folder. Please **read the documents** before port and use it.
All documents is in the [`\docs\en\`](https://github.com/armink/EasyFlash/tree/master/docs/en) folder. Please **read the documents** before port and use it.
## 4 License
......
......@@ -4,4 +4,4 @@
|File or folder name |Description|
|:----- |:----|
|easyLogger.c |Using EasyLogger lib function|
|easylogger.c |Using [EasyLogger lib](https://github.com/armink/EasyLogger) function|
......@@ -2,11 +2,11 @@
---
所有支持的API接口都在`\easyflash\inc\easyflash.h`中声明。以下内容较多,建议使用 **CTRL+F** 搜索。
所有支持的API接口都在[`\easyflash\inc\easyflash.h`](https://github.com/armink/EasyFlash/blob/master/easyflash/inc/easyflash.h)中声明。以下内容较多,建议使用 **CTRL+F** 搜索。
名词介绍:
**备份区** :是EasyFlash定义的一个存放环境变量、已下载程序及日志的Flash区域,详细存储架构可以参考`\easyflash\src\easyflash.c`文件头位置的注释说明或本文中的备份区参数配置。
**备份区** :是EasyFlash定义的一个存放环境变量、已下载程序及日志的Flash区域,详细存储架构可以参考[`\easyflash\src\easyflash.c`](https://github.com/armink/EasyFlash/blob/master/easyflash/src/easyflash.c#L29-L58)文件头位置的注释说明或本文中的备份区参数配置。
**环境变量表** :负责存放所有的环境变量,该表在Flash及RAM中均存在,上电后需从Flash加载到RAM中,修改后,则需要保存其至Flash中。。
......@@ -32,7 +32,7 @@ void ef_load_env(void)
#### 1.2.2 打印环境变量
通过在移植接口(`\easyflash\port\ef_port.c`)中定义的`ef_print`打印方法,来将Flash中的所有环境变量输出出来。
通过在移植接口([`\easyflash\port\ef_port.c`](https://github.com/armink/EasyFlash/blob/master/easyflash/port/ef_port.c))中定义的`ef_print`打印方法,来将Flash中的所有环境变量输出出来。
```C
void ef_print_env(void)
......@@ -90,7 +90,7 @@ EfErrCode ef_env_set_default(void)
size_t ef_get_env_write_bytes(void)
```
#### 1.2.8 设置保存环境变量
#### 1.2.8 设置保存环境变量
设置环境变量成功后立刻保存。设置功能参考`ef_set_env`方法。
......@@ -227,7 +227,7 @@ size_t ef_log_get_used_size(void);
## 2、配置
参照EasyFlash 移植说明(port.md)中的 `参数设置` 章节
参照EasyFlash 移植说明([`\docs\zh\port.md`](https://github.com/armink/EasyFlash/blob/master/docs/zh/port.md#5设置参数))中的 `设置参数` 章节
## 3、注意
......
......@@ -12,7 +12,7 @@
## 2、导入项目
在导入到的项目前,先打开`\demo`文件夹,检查下有没有与项目Flash规格一致的Demo。如果有则先直接跳过2、3、4章节,按照第5章的要求设置参数,并运行、验证Demo。验证通过再按照下面的导入项目要求,将Demo中的移植文件直接导入到项目中即可。
在导入到项目前,先打开[`\demo\`](https://github.com/armink/EasyFlash/tree/master/demo)文件夹,检查下有没有与项目Flash规格一致的Demo。如果有则先直接跳过2、3、4章节,按照第5章的要求设置参数,并运行、验证Demo。验证通过再按照下面的导入项目要求,将Demo中的移植文件直接导入到项目中即可。
- 1、先解压下载好的源码包,文件的目录结构大致如下:
......@@ -32,10 +32,10 @@
|\demo\log\easylogger.c |基于[EasyLogger](https://github.com/armink/EasyLogger)的Log Demo|
- 2、将`\easyflash`(里面包含`inc``src``port`的那个)文件夹拷贝到项目中;
- 2、将`\easyflash\`(里面包含`inc`、`src`及`port`的那个)文件夹拷贝到项目中;
- 3、添加`\easyflash\src\easyflash.c`、`\easyflash\src\ef_utils.c`及`\easyflash\port\ef_port.c`这些文件到项目的编译路径中;
- 4、根据项目需求,选择性添加`\easyflash\src`中的其他源码文件到项目的编译路径中;
- 5、添加`\easyflash\inc`文件夹到编译的头文件目录列表中;
- 4、根据项目需求,选择性添加`\easyflash\src\`中的其他源码文件到项目的编译路径中;
- 5、添加`\easyflash\inc\`文件夹到编译的头文件目录列表中;
## 3、Flash规格
......@@ -242,20 +242,20 @@ void ef_print(const char *format, ...)
## 6、测试验证
如果`\demo`文件夹下有与项目Flash规格一致的Demo,则直接编译运行,观察测试结果即可。无需关注下面的步骤。
如果`\demo\`文件夹下有与项目Flash规格一致的Demo,则直接编译运行,观察测试结果即可。无需关注下面的步骤。
每次使用前,务必先执行`easyflash_init`方法对EasyFlash库及所使用的Flash进行初始化,保证初始化没问题后,再使用各功能的API方法。如果出现错误或断言,需根据提示信息检查移植配置及接口。
每次使用前,务必先执行`easyflash_init()`方法对EasyFlash库及所使用的Flash进行初始化,保证初始化没问题后,再使用各功能的API方法。如果出现错误或断言,需根据提示信息检查移植配置及接口。
### 6.1 环境变量
查看`\demo\env`文件夹中例子的`readme.md`说明文档。测试时可以将`\demo\env\stm32f10x\non_os\app\src\app.c`中的`static void test_env(void)`复制到项目中,然后运行测试。
查看[`\demo\env\`](https://github.com/armink/EasyFlash/tree/master/demo/env)子文件夹中例子的`README.md`说明文档。测试时可以将`\demo\env\stm32f10x\non_os\app\src\app.c`中的`static void test_env(void)`方法体复制到项目中,然后运行测试。
### 6.2 在线升级
查看`\demo\iap`文件夹中的`readme.md`说明文档。
查看[`\demo\iap\README.md`](https://github.com/armink/EasyFlash/tree/master/demo/iap/README.md)说明文档。
### 6.3 日志
查看`\demo\log`文件夹中的`readme.md`说明文档。
查看[`\demo\log\README.md`](https://github.com/armink/EasyFlash/tree/master/demo/log/README.md)说明文档。
> 注意:`easylogger.c`是使用[EasyLogger](https://github.com/armink/EasyLogger)与EasyFlash的无缝接口的例子,EasyLogger提供针对日志的很多常用功能封装,详细功能可以查看其介绍。使用这个例子时,务必记得将EasyLogger一并导入到项目中。
\ No newline at end of file
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册