mirror of
https://gitee.com/Lamdonn/varch.git
synced 2025-12-06 16:56:42 +08:00
TODO: 1. Add feature to bind CoTask and CoTimer to the specified CoScheduler 2. Compatibility with coroutine API highly intensive IO, sockets, etc 3. Improve functional safety
10 KiB
10 KiB
varch
介绍
varch(we-architecture,意为我们的框架库)是嵌入式C语言常用代码模块库,包含了嵌入式中常用的算法库(查找、校验、过滤、哈希、排序等)、数据结构/容器库(通用队列、栈、堆、列表、动态数组、字符串、集合、字典、映射、图等)、解析器库(csv、ini、json、xml等)、数学库(大数运算、数学运算)、独立C语言std库、工具库等等。
具有简单, 通用, 高效的特点,目的为了学习以及在开发中拿来就用,提高开发效率以及代码可靠稳定性。
内容
| module | version | usage | path | describe |
|---|---|---|---|---|
| overall | 00.03.03 | link | path | 整体 |
| init | 01.00.00 | link | path | 初始化导出模块 |
| console | 01.00.01 | link | path | 控制台命令输入,结合 command 模块,解析在控制台中输入的命令 |
| arg | 01.00.00 | link | path | 不定参数,获取不定参数和指定参数的个数 |
| calculate | 01.01.00 | link | path | 计算模块,输入计算表达式,得到计算结果 |
| command | 01.00.00 | link | path | 命令解析模块,输入字符串命令(类似于shell命令),执行相应的命令功能 |
| cPatten | 01.00.00 | link | path | 艺术图案字符 |
| cQueue | 01.00.01 | link | path | 通用队列控制器 |
| sList | 01.00.01 | link | path | 通用单链表控制器 |
| dList | 01.00.01 | link | path | 通用双链表控制器 |
| fsm | 01.00.00 | link | path | 通用有限状态机模块 |
| kern | 01.00.00 | link | path | 用于调度周期性任务的内核模块主要用于varch测试 |
| oscp | 01.00.00 | link | path | 模拟示波器模块,可以方便地监测波形的变量变化 |
| tool | 01.01.00 | link | path | 通用工具代码 |
| valloc | 01.00.00 | link | path | 动态内存使用测试工具 |
| vlog | 01.01.00 | link | path | 日志输出模块 |
| date | 01.00.00 | link | path | 日期计算模块,计算日期差、打印日历等 |
| vctype | 01.00.00 | link | path | 类似于C标准库ctype |
| vmath | 01.00.00 | link | path | 类似于C标准库math |
| vmem | 01.00.00 | link | path | 内存池的简单实现 |
| vstddef | 01.00.00 | link | path | 类似于C标准库stddef |
| vstdint | 01.00.00 | link | path | 类似于C标准库stdint |
| vstdlib | 01.00.00 | link | path | 类似于C标准库stdlib |
| vstring | 01.00.00 | link | path | 类似于C标准库string |
| queue | 01.00.00 | link | path | 通用队列容器 |
| stack | 01.00.00 | link | path | 通用栈式容器 |
| deque | 01.00.00 | link | path | 通用双端队列容器 |
| list | 01.00.01 | link | path | 通用列表容器,单链接和支持内部迭代器 |
| vector | 01.00.00 | link | path | 通用向量(数组)容器 |
| str | 01.00.00 | link | path | 字符串类 |
| dict | 01.00.00 | link | path | 通用字典容器,基于哈希表实现 |
| heap | 01.00.00 | link | path | 通用堆容器 |
| set | 01.00.01 | link | path | 通用集合容器,基于RB-tree实现 |
| map | 01.00.01 | link | path | 通用映射容器,基于RB-tree实现 |
| tree | 01.00.00 | link | path | 通用树容器 |
| graph | 01.00.00 | link | path | 通用图容器 |
| check | 01.00.00 | link | path | 校验算法,求和校验,奇偶校验,异或校验,LRC校验 |
| crc | 01.00.00 | link | path | 通用标准CRC算法 |
| encrypt | 01.00.00 | link | path | 加密解密算法 |
| filter | 01.00.00 | link | path | 滤波算法,中值,卡尔曼,平均值 |
| hash | 01.00.00 | link | path | 哈希算法,bkdr、ap、djb、js、rs、sdbm、pjw、elf、dek、bp、fnv、jdk6 |
| pid | 01.00.00 | link | path | PID控制算法计算器 |
| search | 01.00.00 | link | path | 通用搜索算法,线性,二进制 |
| sort | 01.00.00 | link | path | 通用排序算法(各种数据结构),冒泡排序、选择排序、插入排序、希尔排序、快速排序、堆排序 |
| csv | 01.00.00 | link | path | CSV文件解析生成器 |
| ini | 01.00.00 | link | path | INI配置文件解析生成器 |
| json | 01.00.00 | link | path | JSON文件解析生成器 |
| txls | 01.01.00 | link | path | TXLS文件解析生成器 |
| xml | 01.00.00 | link | path | XML文件解析生成器 |
| yaml | 00.01.00 | link | path | YAML文件解析生成器 |
| ramt | 01.00.00 | link | path | RAM测试模块 |
| romt | 01.00.00 | link | path | ROM测试模块 |
| cant | 00.01.00 | link | path | CAN测试模块 |
| slup | 00.01.00 | link | path | 串口连接通用协议模块(serial link universal protocol) |
| cpul | 01.00.00 | link | path | CPU负载测试模块,包含获取和增加负载 |
| unitt | 01.00.00 | link | path | 简易的单元测试模块 |
| intl | 01.01.00 | link | path | 大型整数运算模块 |
| floatl | 01.01.01 | link | path | 大型浮点数运算模块 |
| flmath | 01.00.00 | link | path | 大型浮点数数学运算模块 |
| coroutine | 00.01.00 | link | path | 协程模块 |
使用说明
代码在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
