varch/README.md
Lamdonn bf21a64ab2 Add the coroutine readme
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
2025-11-20 00:58:03 +08:00

114 lines
10 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# varch
![logo](/image/logo.png)
[![Version](https://img.shields.io/badge/version-0.3.5-blue.svg)](https://gitee.com/Lamdonn/varch)
[![License](https://img.shields.io/badge/license-GPL%202.0-brightgreen.svg)](LICENSE)
[![Author](https://img.shields.io/badge/author-Lamdonn%20%20%20%20%20-brightblue.svg)](Lamdonn@163.com)
![Supported Platforms](https://img.shields.io/badge/platform-Linux%20&%20MinGW-yellow.svg)
## 介绍
[English version](README.en.md)
varchwe-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