# 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; ```