8e79dd6695
主要修改事项: 1. 器件更换: HC32F460PETB改为HC32F460KETA, 更新MDK工程(uvprojx/uvoptx/RTE), 调试器切换为Segger J-Link 2. 新增自定义分散加载文件MDK/BootLoader_custom.sct 3. 新增传感器通用串口升级协议V1.1.xlsx(协议文档) 4. 时钟系统: 取消外部晶振, 改用内部HRC 16MHz -> MPLL 200MHz 5. 删除未使用模块: FatFS/SDCard/SHT20/SX127x(Lora)/AD7924/spiflash/ADS1231/Encryption及LoraTask/CatOneTask/RS485Task/DebugCmd/AppTask, 清理工程IncludePath 6. bsp: BootPara_t参数结构体与GateWay APP对齐(新增GwMac/SvrAddr/SvrPort/LoraFreq/通道配置), 新增RS485 Ch1(USART2)升级通道及RS485 Ch2(USART3)配置, GPIO仅保留RS485方向控制(PC7/PB13) 7. main: 设备MAC固定地址由0x2800改为0x4000并按宏构造(VerInfo/PrjNum/GwNum), 帧头由0x7a改为0x7D并带DevMac字段, 增加MAC匹配(支持0xFF广播), 升级命令更新(0x01 ACK/0x02请求数据/0x81请求/0x82下发), CRC32校验后写参数并复位 8. 跳转APP前关闭全局中断/停SysTick/禁用NVIC中断, 避免残留中断干扰APP 9. Flash擦除仅擦APP区(不擦参数区), 首次运行检测及旧参数区默认值补齐 10. 修复驱动头文件乱码注释(hc32f460_dcu.h/hc32f460_icg.h)
75 lines
1.5 KiB
C
75 lines
1.5 KiB
C
#ifndef __MAIN__H
|
|
#define __MAIN__H
|
|
#include "bsp.h"
|
|
|
|
#define CRC16_BASE 0xA001
|
|
|
|
#define APP_START_FLAG 0x55AA5A5A
|
|
#define APP_UPDATE_FLAG 0xA5A5AA55
|
|
|
|
typedef enum {
|
|
UPDATE_CMD_NULL,
|
|
UPDATE_CMD_SLAVE_RES = 0x01, //从机应答命令(ACK)
|
|
UPDATE_CMD_SLAVE_REQ_DATA = 0x02, //从机请求数据命令
|
|
UPDATE_CMD_MASTER_REQ = 0x81, //主机升级请求
|
|
UPDATE_CMD_MASTRE_RES_DATA = 0x82, //主机下发数据
|
|
}UpdateCmd_m;
|
|
|
|
//帧头结构体
|
|
typedef struct {
|
|
uint8_t Header;
|
|
uint8_t DevMac[6];
|
|
uint8_t Cmd;
|
|
uint8_t PayloadLen;
|
|
}__attribute__ ((packed))FrameHeader_t, *FrameH;
|
|
|
|
|
|
//主机下发升级请求载荷结构体
|
|
typedef struct {
|
|
uint16_t PackageNum;
|
|
uint32_t AppSize;
|
|
uint32_t AppCrc32;
|
|
}__attribute__ ((packed))UpDataRequset_t, *UDReq;
|
|
|
|
//从机请求下发数据结构体
|
|
typedef struct {
|
|
uint16_t PackageIndex;
|
|
uint16_t PackageNum;
|
|
}__attribute__ ((packed))GetDataRequest_t, *GDReq;
|
|
|
|
//主机应答下发数据结构体
|
|
typedef struct {
|
|
uint16_t PackageIndex;
|
|
uint16_t PackageNum;
|
|
uint8_t DataLen;
|
|
}__attribute__ ((packed))DownResponse_t, *DownRes;
|
|
|
|
typedef enum {
|
|
BL_IDLE,
|
|
BL_ERASE_FLASH,
|
|
BL_GET_DATA,
|
|
BL_WAIT_REV,
|
|
BL_GET_DATA_TIMEOUT,
|
|
BL_START_APP,
|
|
BL_RESET
|
|
}BootStatus_m;
|
|
|
|
typedef struct {
|
|
BootPara_t Para;
|
|
BootStatus_m Status;
|
|
|
|
uint32_t AppPackageCnt;
|
|
uint32_t AppPackageIdx;
|
|
uint32_t RevErrCnt;
|
|
|
|
uint32_t FeedDogDlyCnt;
|
|
uint32_t BootLoader1mSDlyCnt;
|
|
|
|
bool RxFlag;
|
|
uint32_t UartRevTimeOutCnt;
|
|
uint8_t RxBuff[260];
|
|
uint16_t RxLen;
|
|
uint16_t UpDateFlag;
|
|
}BootLoader_t;
|
|
#endif
|