#ifndef _UPDATA_H_ #define _UPDATA_H_ #include "typedef.h" //updata_flag #define UPDATA_FLAG_ADDR ((void *)(0x1C000-0x80)) /* (0x1C000-0x80)-0x1C000: reserved_ram for updata */ #define UPDATA_MAGIC (0x5A00) //防止CRC == 0 的情况 typedef enum { UPDATA_NON = UPDATA_MAGIC, UPDATA_READY, UPDATA_SUCC, UPDATA_PARM_ERR, UPDATA_DEV_ERR, UPDATA_KEY_ERR, } UPDATA_RESULT; typedef enum { USB_UPDATA = UPDATA_MAGIC, //0x5A00 SD0_UPDATA, //0x5A01 SD1_UPDATA, PC_UPDATA, UART_UPDATA, BT_UPDATA, // BLE_UPDATA, NON_DEV = 0xFFFF, } UPDATA_TYPE; typedef struct _UPDATA_UART { u32 control_io; //<IO口对接 u32 control_baud; //<波特率 u32 control_timeout; //<超时,单位10ms } UPDATA_UART; /*共12个bytes*/ typedef struct _UPDATA_PARM { u16 parm_crc; u16 parm_type; //UPDATA_TYPE:sdk pass parm to uboot u16 parm_result; //UPDATA_TYPE:uboot return result to sdk u8 file_patch[32]; //updata file patch u8 parm_priv[32]; //sd updata } UPDATA_PARM; void updata_mode_api(UPDATA_TYPE type, ...); void device_updata(void *dev); u16 updata_result_get(u32 first_start_flag); bool device_is_first_start(); void update_result_deal(); #endif
时间: 2024-04-18 15:33:17 浏览: 13
这段代码是一个用于固件升级的头文件,定义了一些常量、枚举类型和结构体。
其中,`UPDATA_FLAG_ADDR` 定义了升级标志的内存地址。
`UPDATA_MAGIC` 是一个特殊值,用于防止CRC校验结果为0的情况。
`UPDATA_RESULT` 是一个枚举类型,表示升级结果,包括非升级、准备升级、升级成功、参数错误、设备错误和密钥错误。
`UPDATA_TYPE` 是一个枚举类型,表示升级的设备类型,包括USB、SD卡、PC、UART、蓝牙等。
`UPDATA_UART` 是一个结构体,表示UART设备的相关配置信息。
`UPDATA_PARM` 是一个结构体,表示升级参数,包括参数的CRC校验值、升级类型、升级结果、升级文件路径等。
头文件中还声明了一些函数,包括升级模式的API接口、设备升级函数、获取升级结果的函数等。
以上是对该头文件的简要说明,如果有其他问题,请继续提问。
相关问题
#ifndef _DYN_A_STAR_H_ #define _DYN_A_STAR_H_ #include <iostream> #include <ros/ros.h> #include <ros/console.h> #include <Eigen/Eigen> #include <plan_env/grid_map.h> #include <queue> constexpr double inf = 1 >> 20; struct GridNode; typedef GridNode *Gri
这段代码是一个头文件 dyn_a_star.h 的内容。其中包含了一些头文件的引用,如 ros/ros.h、ros/console.h、Eigen/Eigen.h、plan_env/grid_map.h 等等。这些头文件提供了一些函数和数据类型,用于实现动态 A* 算法与栅格地图的结合,用于搜索无人机的路径。
在头文件中还定义了一些结构体和常量,如 GridNode 表示地图中的一个格子,inf 表示一个较大的数值(即无穷大),用于判断格子是否可达。其中,GridNode 结构体中包含了格子的坐标、代价、父节点等信息。
头文件中还定义了一些类型别名,如 GridNode* 表示 GridNode 结构体的指针类型,GridNodePtr 表示 GridNode 结构体的共享指针类型。
此外,头文件中还定义了一些函数和变量,如搜索函数 dynAstarSearch(),用于实现动态 A* 算法的搜索过程。函数中使用了 STL 中的 priority_queue 来实现优先级队列,用于按照代价从小到大的顺序处理待搜索的格子。
inc/hw_types.h
`inc/hw_types.h` 是一个用于定义常用数据类型的头文件。它通常在嵌入式系统开发中使用,包含了一些基本的数据类型和宏定义。
以下是一个示例的 `inc/hw_types.h` 文件的内容:
```c
#ifndef _HW_TYPES_H_
#define _HW_TYPES_H_
#include <stdbool.h>
#include <stdint.h>
// 布尔类型定义
typedef bool tBoolean;
// 8位无符号整数类型定义
typedef uint8_t tUnsignedInt8;
// 16位无符号整数类型定义
typedef uint16_t tUnsignedInt16;
// 32位无符号整数类型定义
typedef uint32_t tUnsignedInt32;
// 64位无符号整数类型定义
typedef uint64_t tUnsignedInt64;
// 8位有符号整数类型定义
typedef int8_t tInt8;
// 16位有符号整数类型定义
typedef int16_t tInt16;
// 32位有符号整数类型定义
typedef int32_t tInt32;
// 64位有符号整数类型定义
typedef int64_t tInt64;
// 单精度浮点数类型定义
typedef float tFloat;
// 双精度浮点数类型定义
typedef double tDouble;
// 空指针类型定义
typedef void* tPointer;
#endif // _HW_TYPES_H_
```
该文件定义了不同位数的整数类型(有符号和无符号)、浮点数类型、布尔类型和指针类型等。这些类型的定义可以根据实际需求进行修改和使用。
通过包含 `inc/hw_types.h` 头文件,可以在嵌入式系统开发中方便地使用这些类型。