| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788 |
- /********************************************************************************
- * File Name: IAP.h
- * Function Describe: Header file for IAP.c
- * Explain:
- * Writer: ShiLiangWen
- * Date: 2016-1-7
- 支持串口升级
- *******************************************************************************/
- #ifndef __IAP_H
- #define __IAP_H
- /***********************************************************************************/
- #include "stdint.h"
- #define IAP_VERSION_NAME "SLW_IAP_HS V1.0.1\r\n"
- #define IAP_RX_BUF (4096+82) //SPI FLASH 页大小为4KB,因此每次数据4KB,加上包头
- //保留0X08000000~0X08003FFF 的空间(16KB)为IAP使用
- #define APP_CONFIG_ADDR 0X08003C00 //0x08003C00~0x0804000 为APP系统参数区
- #define FOTA_MAGIC 0x41544f46 // "FOTA" 用于远程升级,这里不需要
- #define PCTA_MAGIC 0x41544350 // "PCTA" 用于PC串口升级
- #define UPDATE_PROTOCOL_APP 0x80 //APP下载协议
- #define UPDATE_PROTOCOL_RFILE 0x95 //RFile资源文件下载协议
- #define UPDATE_DEV_ID_SIZE 16 //设备ID长度 未用
- //以下命令用于传输APP程序
- #define UPDATE_CODE_VERSION_REQ 0x00
- #define UPDATE_CODE_DATA_REQ 0x01
- #define UPDATE_CODE_DATA_WITH_CRC_REQ 0x02
- //以下命令用于传输资源文件
- #define DOWNLOAD_FILE_LIST_REQ 0x03 //文件列表
- #define DOWNLOAD_FILE_DATA_REQ 0x04
- typedef struct
- {
- uint32_t magic; // UPDATE_MAGIC
- uint8_t protocol;
- uint8_t code;
- char dev_id[UPDATE_DEV_ID_SIZE];
- uint16_t tid;
- uint16_t count; // 除本结构外后续数据长度
- } __attribute__((packed)) update_hdr_t; //sizeof()=4+2+16+2+2=26
- typedef struct
- {
- update_hdr_t hdr;
- char product[16];
- uint16_t version;
- } __attribute__((packed)) update_version_req_t;
- typedef struct
- {
- update_hdr_t hdr;
- uint8_t version_md5[16]; // 升级包 MD5
- uint32_t size; // 升级包大小
- } __attribute__((packed)) update_version_rsp_t;
- typedef struct
- {
- update_hdr_t hdr;
- uint8_t version_md5[16]; // 升级包 MD5
- uint32_t offset;
- uint32_t length;
- } __attribute__((packed)) update_data_req_t;
- typedef struct
- {
- update_hdr_t hdr; //26
- uint8_t version_md5[16]; // 升级包 MD5
- uint32_t offset;
- uint32_t length;
- uint8_t data[1];
- } __attribute__((packed)) update_data_rsp_t;
- extern int g_ulOffset;
- extern uint8_t IapRxBuf[IAP_RX_BUF];
- extern uint16_t IapRxLen;
- void IapGetUpdateVersion(uint32_t magic);
- void IapGetUpdateData(uint32_t magic,uint32_t offset);
- int IapRecvMsgHandle(unsigned char *pData, unsigned short DataLen);
- typedef void (*iapfun)(void);//定义一个函数类型的参数.
- void iap_jump_app_s();
- /***********************************************************************************/
- #endif
- /***********************************************************************************/
|