Files
chrg/apps/boot/bsp/bsp_common.h
T
2025-08-16 22:58:22 +08:00

84 lines
3.5 KiB
C

/**
* Change Logs:
* 1. 增加长按按键恢复出厂固件的选项
* 2. 修改中断开启与关闭接口
*/
#ifndef __BSP_COMMON_H__
#define __BSP_COMMON_H__
#include "common.h"
#if (ENABLE_FACTORY_FIRMWARE_BUTTON)
#include "bsp_key.h"
#endif
#include "bsp_uart.h"
#include "drv_timer.h"
#include "bsp_flash.h"
#define BSP_VERSION_MAIN (0x01U) /*!< [15:8] main version */
#define BSP_VERSION_SUB (0x00U) /*!< [ 7:0] sub version */
#define BSP_VERSION ((BSP_VERSION_MAIN << 8) \
|(BSP_VERSION_SUB))
#define BSP_Delay(ms) HAL_Delay(ms)
#define BSP_INT_ENTER()
#define BSP_INT_EXIT()
#define BSP_INT_EN() __enable_irq()
#define BSP_INT_DIS() __disable_irq()
#define BSP_UART_ENABLE_RX(UARTx) UARTx.Instance->CR1 |= (uint32_t)0x0004
#define BSP_UART_DISABLE_RX(UARTx) UARTx.Instance->CR1 &= (~(uint32_t)0x0004)
typedef enum {
ERR_OK = 0x00,
ERR_UNKNOWN = 0x01, // 未知错误
/* 协议错误 */
ERR_DUPLICATE_FRAME = 0x02, // 重复帧
ERR_OMISSION_FRAME = 0x03, // 跳帧或遗漏帧
ERR_PKT_NUM_ERR = 0x04, // 正反序列号错误
ERR_FRAME_LENGTH = 0x05, // 帧长度错误
ERR_FRAME_VERIFY_ERR = 0x06, // 帧校验错误
ERR_HEADER_ERR = 0x07, // header 错误
ERR_EXE_FLOW = 0x08, // 执行流程错误,未按协议流程收到数据包
/* 业务错误 */
ERR_NO_FACTORY_FIRMWARE = 0x10, // 没有可供恢复出厂的固件
ERR_NO_THIS_PART, /* 找不到固件包指定的分区 */
ERR_READ_IS_EMPTY_ERR, /* 判断分区是否为空时读取错误 */
ERR_FIRMWARE_OVERSIZE, /* 固件大小超过分区容量 */
ERR_FIRMWARE_HEAD_VERIFY_ERR, /* 固件包头校验错误 */
ERR_VERIFY_READ_ERR, /* 校验固件时读取错误 */
ERR_RAW_BODY_VERIFY_ERR, /* 源固件包体校验错误 */
ERR_PKG_BODY_VERIFY_ERR, /* 打包后的固件包体校验错误 */
ERR_ERASE_PART_ERR, /* 擦除分区错误 */
ERR_WRITE_FIRST_ADDR_ERR, /* 数据写入分区首地址错误 */
ERR_JUMP_TO_APP_ERR, /* 跳转至 APP 时检测到错误 */
ERR_READ_FIRMWARE_HEAD_ERR, /* 读取固件包头错误 */
ERR_UPDATE_READ_ERR, /* 固件更新至 APP 分区时读取分区错误 */
ERR_UPDATE_VER_READ_ERR, /* 更新固件版本信息时读取分区错误 */
ERR_UPDATE_VER_ERASE_ERR, /* 更新固件版本信息时擦除分区错误 */
ERR_UPDATE_VER_WRITE_ERR, /* 更新固件版本信息时写入分区错误 */
ERR_WRITE_PART_ERR, /* 数据写入分区错误 */
ERR_FAULT_FIRMWARE, /* 错误的固件包 */
ERR_DECRYPT_ERR = 0x30, // 固件解密失败
ERR_NO_DECRYPT_COMPONENT, // 从机没有解密组件,无法解密
ERR_FLASH_NO_EMPTY, // flash 非空
ERR_READ_VER_ERR, // 读取固件的版本失败
ERR_WRITE_VER_ERR, // 固件的版本写入 APP 分区失败
ERR_VER_AREA_NO_ERASE, // APP 分区的固件版本区域没有擦除
ERR_CAN_NOT_PLACE_IN_APP, // 从机限制了多分区方案时不能指定固件包放置于 APP 分区
ERR_DOES_NOT_EXIST_DOWNLOAD, // 不存在 download 分区
ERR_DOES_NOT_EXIST_FACTORY, // 不存在 factory 分区
} eErrCode;
#endif