mirror of
https://gitee.com/Lamdonn/varch.git
synced 2025-12-06 08:46:42 +08:00
Add feature to bind CoTask and CoTimer to the specified CoScheduler Improve functional safety TODO: 1. Compatibility with coroutine API highly intensive IO, sockets, etc 2. Fix running fail on arm64
114 lines
10 KiB
Markdown
114 lines
10 KiB
Markdown
# varch
|
||
|
||

|
||
|
||
[](https://gitee.com/Lamdonn/varch)
|
||
[](LICENSE)
|
||
[](Lamdonn@163.com)
|
||

|
||
|
||
## 介绍
|
||
|
||
[English version](README.en.md)
|
||
|
||
varch(we-architecture,意为我们的框架库)是嵌入式C语言常用代码模块库,包含了嵌入式中常用的算法库(查找、校验、过滤、哈希、排序等)、数据结构/容器库(通用队列、栈、堆、列表、动态数组、字符串、集合、字典、映射、图等)、解析器库(csv、ini、json、xml等)、数学库(大数运算、数学运算)、C语言协程库、独立C语言std库、工具库等等。
|
||
具有**简单, 通用, 高效**的特点,目的为了**学习**以及在开发中**拿来就用**,提高开发效率以及代码可靠稳定性。
|
||
|
||
## 内容
|
||
|
||
| module | version | usage | path | describe |
|
||
|:-------------|:---------|:-----------------------------|:------------------------------------------|:--------------------------------------|
|
||
| overall | 00.03.05 | [link](README.md) | [path](./) | 整体
|
||
| init | 01.00.00 | [link](/doc/init.md) | [path](./source/00_application) | 初始化导出模块
|
||
| console | 01.00.01 | [link](/doc/console.md) | [path](./source/00_application/console) | 控制台命令输入,结合 `command` 模块,解析在控制台中输入的命令
|
||
| arg | 01.00.00 | [link](/doc/arg.md) | [path](./source/01_general) | 不定参数,获取不定参数和指定参数的个数
|
||
| calculate | 01.01.00 | [link](/doc/calculate.md) | [path](./source/01_general) | 计算模块,输入计算表达式,得到计算结果
|
||
| command | 01.00.00 | [link](/doc/command.md) | [path](./source/01_general) | 命令解析模块,输入字符串命令(类似于shell命令),执行相应的命令功能
|
||
| cPatten | 01.00.00 | [link](/doc/cPatten.md) | [path](./source/01_general) | 艺术图案字符
|
||
| cQueue | 01.00.01 | [link](/doc/cQueue.md) | [path](./source/01_general) | 通用队列控制器
|
||
| sList | 01.00.01 | [link](/doc/sList.md) | [path](./source/01_general) | 通用单链表控制器
|
||
| dList | 01.00.01 | [link](/doc/dList.md) | [path](./source/01_general) | 通用双链表控制器
|
||
| fsm | 01.00.00 | [link](/doc/fsm.md) | [path](./source/01_general) | 通用有限状态机模块
|
||
| kern | 01.00.00 | [link](/doc/kern.md) | [path](./source/01_general) | 用于调度周期性任务的内核模块主要用于varch测试
|
||
| oscp | 01.00.00 | [link](/doc/oscp.md) | [path](./source/01_general) | 模拟示波器模块,可以方便地监测波形的变量变化
|
||
| tool | 01.01.00 | [link](/doc/tool.md) | [path](./source/01_general) | 通用工具代码
|
||
| valloc | 01.00.00 | [link](/doc/valloc.md) | [path](./source/01_general) | 动态内存使用测试工具
|
||
| vlog | 01.01.00 | [link](/doc/vlog.md) | [path](./source/01_general) | 日志输出模块
|
||
| date | 01.00.00 | [link](/doc/date.md) | [path](./source/01_general) | 日期计算模块,计算日期差、打印日历等
|
||
| vctype | 01.00.00 | [link](/doc/vctype.md) | [path](./source/02_vstd) | 类似于C标准库ctype
|
||
| vmath | 01.00.00 | [link](/doc/vmath.md) | [path](./source/02_vstd) | 类似于C标准库math
|
||
| vmem | 01.00.00 | [link](/doc/vmem.md) | [path](./source/02_vstd) | 内存池的简单实现
|
||
| vstddef | 01.00.00 | [link](/doc/vstddef.md) | [path](./source/02_vstd) | 类似于C标准库stddef
|
||
| vstdint | 01.00.00 | [link](/doc/vstdint.md) | [path](./source/02_vstd) | 类似于C标准库stdint
|
||
| vstdlib | 01.00.00 | [link](/doc/vstdlib.md) | [path](./source/02_vstd) | 类似于C标准库stdlib
|
||
| vstring | 01.00.00 | [link](/doc/vstring.md) | [path](./source/02_vstd) | 类似于C标准库string
|
||
| queue | 01.00.00 | [link](/doc/queue.md) | [path](./source/03_container) | 通用队列容器
|
||
| stack | 01.00.00 | [link](/doc/stack.md) | [path](./source/03_container) | 通用栈式容器
|
||
| deque | 01.00.00 | [link](/doc/deque.md) | [path](./source/03_container) | 通用双端队列容器
|
||
| list | 01.00.01 | [link](/doc/list.md) | [path](./source/03_container) | 通用列表容器,单链接和支持内部迭代器
|
||
| vector | 01.00.00 | [link](/doc/vector.md) | [path](./source/03_container) | 通用向量(数组)容器
|
||
| str | 01.00.00 | [link](/doc/str.md) | [path](./source/03_container) | 字符串类
|
||
| dict | 01.00.00 | [link](/doc/dict.md) | [path](./source/03_container) | 通用字典容器,基于哈希表实现
|
||
| heap | 01.00.00 | [link](/doc/heap.md) | [path](./source/03_container) | 通用堆容器
|
||
| set | 01.00.01 | [link](/doc/set.md) | [path](./source/03_container) | 通用集合容器,基于RB-tree实现
|
||
| map | 01.00.01 | [link](/doc/map.md) | [path](./source/03_container) | 通用映射容器,基于RB-tree实现
|
||
| tree | 01.00.00 | [link](/doc/tree.md) | [path](./source/03_container) | 通用树容器
|
||
| graph | 01.00.00 | [link](/doc/graph.md) | [path](./source/03_container) | 通用图容器
|
||
| check | 01.00.00 | [link](/doc/check.md) | [path](./source/04_algorithm) | 校验算法,求和校验,奇偶校验,异或校验,LRC校验
|
||
| crc | 01.00.00 | [link](/doc/crc.md) | [path](./source/04_algorithm) | 通用标准CRC算法
|
||
| encrypt | 01.00.00 | [link](/doc/encrypt.md) | [path](./source/04_algorithm) | 加密解密算法
|
||
| filter | 01.00.00 | [link](/doc/filter.md) | [path](./source/04_algorithm) | 滤波算法,中值,卡尔曼,平均值
|
||
| hash | 01.00.00 | [link](/doc/hash.md) | [path](./source/04_algorithm) | 哈希算法,bkdr、ap、djb、js、rs、sdbm、pjw、elf、dek、bp、fnv、jdk6
|
||
| pid | 01.00.00 | [link](/doc/pid.md) | [path](./source/04_algorithm) | PID控制算法计算器
|
||
| search | 01.00.00 | [link](/doc/search.md) | [path](./source/04_algorithm) | 通用搜索算法,线性,二进制
|
||
| sort | 01.00.00 | [link](/doc/sort.md) | [path](./source/04_algorithm) | 通用排序算法(各种数据结构),冒泡排序、选择排序、插入排序、希尔排序、快速排序、堆排序
|
||
| csv | 01.00.00 | [link](/doc/csv.md) | [path](./source/05_parser) | CSV文件解析生成器
|
||
| ini | 01.00.00 | [link](/doc/ini.md) | [path](./source/05_parser) | INI配置文件解析生成器
|
||
| json | 01.00.00 | [link](/doc/json.md) | [path](./source/05_parser) | JSON文件解析生成器
|
||
| txls | 01.01.00 | [link](/doc/txls.md) | [path](./source/05_parser) | TXLS文件解析生成器
|
||
| xml | 01.00.00 | [link](/doc/xml.md) | [path](./source/05_parser) | XML文件解析生成器
|
||
| yaml | 00.01.00 | [link](/doc/yaml.md) | [path](./source/05_parser) | YAML文件解析生成器
|
||
| ramt | 01.00.00 | [link](/doc/ramt.md) | [path](./source/06_performance) | RAM测试模块
|
||
| romt | 01.00.00 | [link](/doc/romt.md) | [path](./source/06_performance) | ROM测试模块
|
||
| cant | 00.01.00 | [link](/doc/cant.md) | [path](./source/06_performance) | CAN测试模块
|
||
| slup | 00.01.00 | [link](/doc/slup.md) | [path](./source/06_performance) | 串口连接通用协议模块(serial link universal protocol)
|
||
| cpul | 01.00.00 | [link](/doc/cpul.md) | [path](./source/06_performance) | CPU负载测试模块,包含获取和增加负载
|
||
| unitt | 01.00.00 | [link](/doc/unitt.md) | [path](./source/06_performance) | 简易的单元测试模块
|
||
| intl | 01.01.00 | [link](/doc/intl.md) | [path](./source/07_math) | 大型整数运算模块
|
||
| floatl | 01.01.01 | [link](/doc/floatl.md) | [path](./source/07_math) | 大型浮点数运算模块
|
||
| flmath | 01.00.00 | [link](/doc/flmath.md) | [path](./source/07_math) | 大型浮点数数学运算模块
|
||
| coroutine | 00.02.00 | [link](/doc/coroutine.md) | [path](./source/08_coroutine) | 协程模块
|
||
|
||
## 使用说明
|
||
|
||
代码在linux环境下编写编译测试,在`built`目录下的`makefile`配置需要编译的文件进行编译即可,也可以直接运行`run.sh`文件编译加运行。varch模块尽可能的保持独立,为了减少对其他模块的依赖,大部分的文件是可以直接单独拎出来就可以直接使用。如果编译存在对其他模块的依赖解决依赖问题,只是数据类型依赖的问题,完全可以参考定义所需类型即可。
|
||
|
||
## 安装
|
||
|
||
* linux
|
||
|
||
```
|
||
make install
|
||
```
|
||
|
||
* MinGW
|
||
|
||
```
|
||
make install LIBP=<MinGW install path>
|
||
```
|
||
|
||
例子:
|
||
```
|
||
make install LIBP=D:/MinGW
|
||
```
|
||
|
||
## 开源协议
|
||
|
||
GNU GENERAL PUBLIC LICENSE
|
||
Version 2, June 1991
|
||
|
||
## 联系方式
|
||
|
||
Lamdonn@163.com
|
||
|