// #ifndef __IAP_H // #define __IAP_H // #include "global.h" // #include // #include // #define IAP_FLASH_UP_LEN 0x8080000 // #define IAP_FLASH_UP_ADDR 0X8080004 // #define IAP_RUN_START_SECTOR 0x8010000 // #define IAP_DOWN_BEGIN_ADDR 0x8080000 // iap代码下载起始地址 // #define IAP_BACKUP_SECTOR1 10 // #define IAP_BACKUP_SECTOR2 11 // #define IAP_PC_BEGINE_FRAME 0x18CFD0EF // #define IAP_PC_DATA_FRAME 0x18CED0EF // #define IAP_MCU_BIGEN_FRAME 0x18CFEFD0 // #define IAP_MCU_DATA_FRAME 0x18CEEFD0 // #define UPGRADE_FLASH_DATA_SIZE 4 // 升级参数数组元素个数 // #define UPGRADE_APP_DATA_SIZE 4 // 升级参数数组元素个数 // #define UPGRADE_BUFF_DATA_SIZE (UPGRADE_FLASH_DATA_SIZE + UPGRADE_APP_DATA_SIZE) // 升级参数数组元素个数 // #define IAP_CMD_VERSION 0x71 // 查询版本号 // #define IAP_CMD_INFO 0x72 // 包信息 // #define IAP_CMD_ERASE 0x73 // 擦除命令 // #define IAP_CMD_DATA 0x80 // 数据帧 IAP_CMD_DATA |帧号 // #define IAP_CMD_CRC 0x74 // 传输结果校验 // #define IAP_CMD_OVER 0x76 // 执行跳转 // typedef union // { // uint16_t u8_buf[8]; // uint16_t u16_buf[4]; // } u16_u8; // typedef union // { // uint16_t u8_save[200]; // uint16_t u16_save[100]; // } u16save_u8save; // typedef struct // { // uint16_t total_packages; // uint16_t current_packages; // uint16_t count_packages; // uint16_t recv_len; // uint16_t crc16; // uint16_t firmware_crc16; // uint16_t firmware_ver; // uint16_t total_bytes; // uint16_t count_bytes; // u16_u8 flash_data; // u16_u8 recheck_data; // u16save_u8save save_data; // } iap_type; // typedef union // { // struct // { // uint16_t sign; // 首地址 buf[0] // uint16_t crc16; // 中地址 buf[1] // uint32_t moving_size; // 高地址 buf[2] buf[3] // } param; // uint16_t infor_buf[UPGRADE_FLASH_DATA_SIZE]; // } upgrade_param; // 升级参数使用 // // FLASH 扇区的起始地址 // #define ADDR_FLASH_SECTOR_0 ((u32)0x08000000) // 扇区0起始地址, 16 Kbytes // #define ADDR_FLASH_SECTOR_1 ((u32)0x08004000) // 扇区1起始地址, 16 Kbytes // #define ADDR_FLASH_SECTOR_2 ((u32)0x08008000) // 扇区2起始地址, 16 Kbytes // #define ADDR_FLASH_SECTOR_3 ((u32)0x0800C000) // 扇区3起始地址, 16 Kbytes // #define ADDR_FLASH_SECTOR_4 ((u32)0x08010000) // 扇区4起始地址, 64 Kbytes // #define ADDR_FLASH_SECTOR_5 ((u32)0x08020000) // 扇区5起始地址, 128 Kbytes // #define ADDR_FLASH_SECTOR_6 ((u32)0x08040000) // 扇区6起始地址, 128 Kbytes // #define ADDR_FLASH_SECTOR_7 ((u32)0x08060000) // 扇区7起始地址, 128 Kbytes // #define ADDR_FLASH_SECTOR_8 ((u32)0x08080000) // 扇区8起始地址, 128 Kbytes // #define ADDR_FLASH_SECTOR_9 ((u32)0x080A0000) // 扇区9起始地址, 128 Kbytes // #define ADDR_FLASH_SECTOR_10 ((u32)0x080C0000) // 扇区10起始地址,128 Kbytes // #define ADDR_FLASH_SECTOR_11 ((u32)0x080E0000) // 扇区11起始地址,128 Kbytes // #define ADDR_FLASH_SECTOR_END ((u32)0x080FFFFF) // typedef enum // { // DISCONNECT = 0, // HANDSHAKE, // PROGRAMING, // PROGRAMFinish, // } workmode; // typedef union // { // u8 value[4]; // u32 cmd; // } IAP_Union; // void iap_process(CanData_TypeDef *rx_msg); // u8 flash_up_is_ok(void); // void iap_from_flash(void); // #endif