# blog
**Repository Path**: zhangshengping/blog
## Basic Information
- **Project Name**: blog
- **Description**: 实现一个简单的适用于MCU的日志系统,数据结构仿照python库struct进行编码和解析
- **Primary Language**: C
- **License**: BSD-3-Clause
- **Default Branch**: master
- **Homepage**: None
- **GVP Project**: No
## Statistics
- **Stars**: 0
- **Forks**: 0
- **Created**: 2021-08-15
- **Last Updated**: 2022-05-30
## Categories & Tags
**Categories**: Uncategorized
**Tags**: None
## README
# blog
## 简介
blog是一个简单的二进制日志系统,需要完成一下目标:
- [ ] 适用于资源少的MCU;
- [ ] 以二进制的形式记录日志,提高信息的记录密度和信息编解码的处理时间;
- [ ] 日志是自解析的,不需要额外的解析文件辅助解析
- [ ] 可以随时添加新格式的日志消息
- [ ] 支持多线程
- [ ] 实现同步方式和异步方式记录数据
- [ ] 使用cmocka和posix接口实现linux下的单元测试
- [ ] 使用过msg的方式定义数据结构
## 设计思路
### 数据记录格式
| header | id | payload length | payload | payload crc8 | tailer |
|:------------ |:------ |:-------------- |:------- |:--------------- |:------------ |
| uint8 = 0xaa | uint16 | uint16 | payload | crc8 of payload | uint8 = 0x55 |
#### 数据格式描述
| header | id | payload length | payload | payload | payload crc8 | tailer |
| ---------- | -------- | -------------- | ---------------------- | ----------------------------------------------- | --------------- | ---------- |
| uint8=0xaa | uint16=1 | uint16 | data id | string | crc8 of payload | uint8=0x55 |
| | | | 记录数据的id号
id要求大于128 | 数据结构的描述结构为:
name:type subname;type subname; | | |
数据结构允许嵌套,但是要求使用的数据结构在前面已经定义过。
原始数据结构允许使用的数据结构有:
* uint8_t
* int8_t
* uint16_t
* int16_t
* uint32_t
* int32_t
* uint64_t
* int64_t
* float
* double
数据类型定义举例:
```c
imu:float acc_z;float acc_y;float acc_x;float gyro_z;float gyro_y;float gyro_x;
```