第一次上传E3boot
This commit is contained in:
288
IAP_Task.h
Normal file
288
IAP_Task.h
Normal file
@@ -0,0 +1,288 @@
|
||||
|
||||
#ifndef __IAP_TASK_H__
|
||||
#define __IAP_TASK_H__
|
||||
|
||||
#include <stdbool.h>
|
||||
#include <stdio.h>
|
||||
#include <sdrv_spi_nor.h>
|
||||
#include <DLib_Product_string.h>
|
||||
#include <sdrv_flexcan.h>
|
||||
|
||||
|
||||
#define u8 uint8_t
|
||||
#define u16 uint16_t
|
||||
#define u32 uint32_t
|
||||
|
||||
|
||||
|
||||
#define EN_24C02 0
|
||||
|
||||
#define UDP_RECE_BUF_LEN 1472
|
||||
|
||||
#define TimeOutPeriod 10 /* Timer period, in Ms. */
|
||||
/*address assignment */
|
||||
#define BIM_IMAGE_START_ADD ((uint32_t) 0x08000000)
|
||||
#define BIM_IMAGE_MAX_SIZE 0xA000
|
||||
|
||||
#define USER_IMAGE_START_ADD ((uint32_t) 0x0800A000)
|
||||
#define USER_IMAGE_MAX_SIZE 0x1B000
|
||||
|
||||
#define BACKUP_IMAGE_START_ADD ((uint32_t) 0x08025000)
|
||||
#define BACKUP_IMAGE_MAX_SIZE 0x1B000
|
||||
|
||||
#define UPDATA_FLAG_STORAGE_ADD ((uint32_t) 0x0803FF00)
|
||||
|
||||
#define FLASH_BLOCK_SIZE 4096
|
||||
|
||||
#define READ_DATA_LEN 2048
|
||||
|
||||
#define FLASH_PAGE_SIZE 0x1000
|
||||
|
||||
#define FLASH_PAGE_Write 4//д<><D0B4>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD>
|
||||
|
||||
/*Flash operation information*/
|
||||
#define BIN_INF_LEN 512
|
||||
|
||||
|
||||
#define BOOT_DEBUG 1
|
||||
|
||||
#define CMD_FAILD 0x0
|
||||
#define ONLINE_CHECK 0x1
|
||||
#define ERASE_FLASH 0x3
|
||||
#define SET_BAUDRATE 0x4
|
||||
#define BLOCK_WRITE_INFO 0x5
|
||||
#define WRITE_BLOCK_FLASH 0x6
|
||||
#define BLOCK_READ_INFO 0x7
|
||||
#define READ_BLOCK_FLASH 0x8
|
||||
|
||||
#define CMD_SUCCESS 0xB
|
||||
#define RESTART_Soft 0xD
|
||||
|
||||
|
||||
|
||||
#define ENTER_UPDATE_MODE 0x1
|
||||
#define READ_VERSION 0x100
|
||||
#define CRC_UPDATE 0x101
|
||||
#define Write_VERSION 0x103
|
||||
#define ENTER_APP 0x102
|
||||
#define EXCUTE_APP 0x02
|
||||
#define WDT_Refresh 0x200
|
||||
#define READ_PSN 0x400
|
||||
#define WRITE_IP 0x501
|
||||
|
||||
#define DELAY_LOST_FRAME 0x304//<2F><>ʱ<EFBFBD><CAB1>֡
|
||||
#define LOST_FRAME 0x305//<2F><>֡
|
||||
|
||||
#define CRC_Pass 0x1 //CRCУ<43><D0A3>ͨ<EFBFBD><CDA8>
|
||||
#define CRC_Fail 0x2 //CRCУ<43>鲻ͨ<E9B2BB><CDA8>
|
||||
|
||||
|
||||
|
||||
#define DOWNLOAD_CAN 0x0 //ͨ<><CDA8>can<61><6E><EFBFBD>س<EFBFBD><D8B3><EFBFBD>
|
||||
#define DOWNLOAD_ETH 0x1 //ͨ<><CDA8><EFBFBD><EFBFBD>̫<EFBFBD><CCAB><EFBFBD><EFBFBD><EFBFBD>س<EFBFBD><D8B3><EFBFBD>
|
||||
|
||||
|
||||
|
||||
#define BOOT0_index 1
|
||||
#define BOOT1_index 2
|
||||
#define APP_index 3
|
||||
|
||||
|
||||
#define BPT_PSN_adr 0xFF0 //PSN<53><4E><EFBFBD><EFBFBD><EFBFBD><EFBFBD>BPT<50>ײ<EFBFBD><D7B2>ĵ<EFBFBD>ַ
|
||||
#define BPT_IPSN_adr 0xFF4 //IPSN<53><4E><EFBFBD><EFBFBD><EFBFBD><EFBFBD>BPT<50>ײ<EFBFBD><D7B2>ĵ<EFBFBD>ַ <20>൱<EFBFBD><E0B5B1>PSN<53><4E>ȡ<EFBFBD><C8A1>
|
||||
|
||||
#define BOOT0_Flash_adr 0x7000 //ע<><D7A2><EFBFBD><EFBFBD>ַҪ4K<34><4B><EFBFBD><EFBFBD>
|
||||
#define BOOT0_PSN_adr BOOT0_Flash_adr + BPT_PSN_adr //boot0 <20><>PSN
|
||||
#define BOOT0_IPSN_adr BOOT0_Flash_adr + BPT_IPSN_adr //boot0 <20><>IPSN
|
||||
|
||||
#define BOOT1_Flash_adr 0x9C000
|
||||
#define BOOT1_PSN_adr BOOT1_Flash_adr + BPT_PSN_adr //boot1 <20><>PSN
|
||||
#define BOOT1_IPSN_adr BOOT1_Flash_adr + BPT_IPSN_adr //boot1 <20><>IPSN
|
||||
|
||||
#define APP_Flash_adr 0x140000
|
||||
|
||||
|
||||
|
||||
|
||||
#define Update_Flg_E2adr 0x0 //ռ<><D5BC>1<EFBFBD><31><EFBFBD>ֽ<EFBFBD>
|
||||
#define BOOT0_VERSION_E2adr 0x1 //ռ<><D5BC>5<EFBFBD><35><EFBFBD>ֽ<EFBFBD> <20><><EFBFBD><EFBFBD>+ʱ<><CAB1>+<2B>汾<EFBFBD><E6B1BE> 20 24 08 08 01
|
||||
#define BOOT1_VERSION_E2adr 0x6 //ռ<><D5BC>5<EFBFBD><35><EFBFBD>ֽ<EFBFBD> <20><><EFBFBD><EFBFBD>+ʱ<><CAB1>+<2B>汾<EFBFBD><E6B1BE> 20 24 08 08 01
|
||||
#define APP_VERSION_E2adr 0xB //ռ<><D5BC>5<EFBFBD><35><EFBFBD>ֽ<EFBFBD> <20><><EFBFBD><EFBFBD>+ʱ<><CAB1>+<2B>汾<EFBFBD><E6B1BE> 20 24 08 08 01
|
||||
#define BOOT_DES_IP 0x10 //ռ<><D5BC>4<EFBFBD><34><EFBFBD>ֽ<EFBFBD> <20><><EFBFBD><EFBFBD>IP 192.168.17.3
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
#define CMD_WIDTH 4
|
||||
#define CMD_MASK 0xF
|
||||
#define ADDR_MASK 0x1FFFFFF
|
||||
|
||||
|
||||
#define DATA_SIZE (0x100) /* 256 bytes */
|
||||
#define DATA_START_ADDR ((uint32_t)0x0803FF00)//0x0803FF00 //<2F><><EFBFBD><EFBFBD>256<35><36><EFBFBD>ڴ<EFBFBD><DAB4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>0x0803FF00- 0x0803FFFF 256K
|
||||
|
||||
|
||||
|
||||
typedef enum{
|
||||
NORMAL_ON = 0,
|
||||
CAN_BOOTLOADER_UPGRADE,
|
||||
}UpgradeFlag;
|
||||
|
||||
|
||||
|
||||
typedef struct _CBL_CMD_LIST{
|
||||
volatile uint8_t EraseFlash; //<2F><><EFBFBD><EFBFBD>APP<50><50><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
volatile uint8_t WriteBlockFlash; //<2F>Զ<EFBFBD><D4B6>ֽ<EFBFBD><D6BD><EFBFBD>ʽд<CABD><D0B4><EFBFBD><EFBFBD>
|
||||
volatile uint8_t ReadBlockFlash; //<2F>Զ<EFBFBD><D4B6>ֽ<EFBFBD><D6BD><EFBFBD>ʽ<EFBFBD><CABD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
volatile uint8_t BlockWriteInfo; //<2F><><EFBFBD>ö<EFBFBD><C3B6>ֽ<EFBFBD>д<EFBFBD><D0B4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ز<EFBFBD><D8B2><EFBFBD><EFBFBD><EFBFBD>д<EFBFBD><D0B4>ʼ<EFBFBD><CABC>ַ<EFBFBD><D6B7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
volatile uint8_t BlockReadInfo; //<2F><><EFBFBD>ö<EFBFBD><C3B6>ֽ<EFBFBD><D6BD><EFBFBD><EFBFBD>ݶ<EFBFBD><DDB6><EFBFBD><EFBFBD>ز<EFBFBD><D8B2><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʼ<EFBFBD><CABC>ַ<EFBFBD><D6B7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
volatile uint8_t OnlineCheck; //<2F><><EFBFBD><EFBFBD><EFBFBD>ڵ<EFBFBD><DAB5>Ƿ<EFBFBD><C7B7><EFBFBD><EFBFBD><EFBFBD>
|
||||
volatile uint8_t CmdSuccess; //<2F><><EFBFBD><EFBFBD>ִ<EFBFBD>гɹ<D0B3>
|
||||
volatile uint8_t CmdFaild; //<2F><><EFBFBD><EFBFBD>ִ<EFBFBD><D6B4>ʧ<EFBFBD><CAA7>
|
||||
volatile uint8_t SetBaudRate; //<2F><><EFBFBD>ýڵ㲨<DAB5><E3B2A8><EFBFBD><EFBFBD>
|
||||
volatile uint8_t ExcuteApp; //ִ<><D6B4>Ӧ<EFBFBD>ó<EFBFBD><C3B3><EFBFBD>
|
||||
volatile uint8_t EnterUpdateMode; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ģʽ
|
||||
volatile uint8_t EnterAPP; //<2F><><EFBFBD><EFBFBD>APP
|
||||
volatile uint8_t Restart; //<2F><><EFBFBD><EFBFBD>
|
||||
volatile uint8_t Undefine2; //δ<><CEB4><EFBFBD><EFBFBD>
|
||||
volatile uint8_t Undefine3; //δ<><CEB4><EFBFBD><EFBFBD>
|
||||
} CBL_CMD_LIST,*PCBL_CMD_LIST;
|
||||
|
||||
|
||||
typedef struct _Flash_RxBuf
|
||||
{
|
||||
uint8_t Flash_RxBufSta; // flash <20><><EFBFBD><EFBFBD>״̬ 0 <20><><EFBFBD><EFBFBD>û<EFBFBD>н<EFBFBD><D0BD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ɣ<EFBFBD>1<EFBFBD><31><EFBFBD>ݽ<EFBFBD><DDBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ɣ<EFBFBD>2CRCУ<43>鲻ͨ<E9B2BB><CDA8><EFBFBD><EFBFBD>3CRCУ<43><D0A3>ͨ<EFBFBD><CDA8><EFBFBD><EFBFBD>4д<34><D0B4><EFBFBD><EFBFBD>
|
||||
uint16_t Flash_RxBufCRC; //CRC
|
||||
uint32_t Flash_RxBufLen; //<2F><><EFBFBD><EFBFBD>
|
||||
uint32_t Flash_RxBufLenNow; //<2F><>ǰ<EFBFBD><C7B0><EFBFBD><EFBFBD>
|
||||
uint8_t Download_Mode; //<2F><><EFBFBD><EFBFBD>ģʽ 0 can 1<><31>̫<EFBFBD><CCAB>
|
||||
uint8_t RxData[1024]__attribute__((__aligned__(4))); //ʵ<><CAB5><EFBFBD><EFBFBD><EFBFBD>ݽ<EFBFBD><DDBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> ע<><D7A2>4<EFBFBD>ֽڶ<D6BD><DAB6><EFBFBD> ע<><D7A2><EFBFBD><EFBFBD>Ҫ4<D2AA>ֽڶ<D6BD><DAB6>롣
|
||||
}Flash_RxBuf,*UnFlash_RxBuf;
|
||||
|
||||
|
||||
|
||||
typedef struct _Flash_info
|
||||
{
|
||||
uint16_t length; //<2F><><EFBFBD><EFBFBD>
|
||||
uint8_t dataBuffer[1100]; //ƥ<><C6A5>can<61><6E><EFBFBD><EFBFBD>
|
||||
}Flash_info,*UnFlash_info;
|
||||
|
||||
|
||||
|
||||
|
||||
#define FlashBufInitial 0x0//1k<31><6B><EFBFBD>ݳ<EFBFBD>ʼ״̬
|
||||
#define FlashBufInComplete 0x1//<2F><><EFBFBD><EFBFBD>д<EFBFBD><D0B4><EFBFBD><EFBFBD>
|
||||
#define FlashBufComplete 0x2//1k<31><6B><EFBFBD>ݽ<EFBFBD><DDBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
#define FlashBufCRCFail 0x3//CRCУ<43><D0A3><EFBFBD><EFBFBD>ʧ<EFBFBD><CAA7>
|
||||
#define FlashBufCRCPass 0x4//CRCУ<43><D0A3><EFBFBD>ճɹ<D5B3>
|
||||
#define FlashBufWrite 0x5//<2F><><EFBFBD><EFBFBD>д<EFBFBD><D0B4><EFBFBD><EFBFBD>
|
||||
|
||||
|
||||
|
||||
|
||||
//typedef struct
|
||||
//{
|
||||
// u8 iapFileFlag[8]; //8-byte IAP flag, fixed as "WCHNET", the extra space is 0
|
||||
// u32 iapFileLen; //4 bytes IAP file length, which is bin file length + 512 bytes
|
||||
// u32 iapFileCheckSum; //4-byte checksum
|
||||
//}iapFileHeader;
|
||||
//
|
||||
//typedef struct{
|
||||
// u16 readIndex;
|
||||
// u16 writeIndex;
|
||||
// u16 buffUsedLen;
|
||||
// u8 *dataBuff;
|
||||
//}ethDataDeal;
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
typedef struct _ENET_RxBuf
|
||||
{
|
||||
uint8_t readPos; ///< read position in buffer
|
||||
uint8_t writePos; ///< write position in buffer
|
||||
uint8_t recvCount; ///< receive message count in buffer
|
||||
uint8_t RxData[8]; //ʵ<><CAB5><EFBFBD><EFBFBD><EFBFBD>ݽ<EFBFBD><DDBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
}ENET_RxBuf,*pENET_RxBuf;
|
||||
|
||||
|
||||
typedef struct {
|
||||
volatile uint8_t canBootloaderUpgrade; //CAN<41><4E><EFBFBD><EFBFBD><EFBFBD><EFBFBD>־λ
|
||||
uint8_t test1;
|
||||
uint8_t test2;
|
||||
uint8_t test3;
|
||||
} SystemDataRecord;//<2F><><EFBFBD><EFBFBD><EFBFBD>ṹ<EFBFBD><E1B9B9><EFBFBD><EFBFBD><EFBFBD><EFBFBD>APPͬ<50><CDAC>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
extern struct flash_info *flash_info;
|
||||
extern struct spi_nor flash;
|
||||
|
||||
extern flexcan_handle_t *handle;
|
||||
extern void flexcan_transfer_callback(flexcan_handle_t *handle,
|
||||
flexcan_status_e status, uint32_t result,
|
||||
void *userData);
|
||||
|
||||
|
||||
|
||||
|
||||
//<2F>ⲿ<EFBFBD><E2B2BF><EFBFBD>ݽṹ
|
||||
extern u8 IPAddr[4];//IP address
|
||||
extern u8 GWIPAddr[4];//Gateway IP address
|
||||
extern u8 IPMask[4];//subnet mask
|
||||
extern u8 DESIP[4];//destination IP address
|
||||
extern u16 desport;//destination port
|
||||
extern u16 srcport;//source port
|
||||
extern SystemDataRecord g_systemDataRecord;
|
||||
//extern ethDataDeal dataDeal;
|
||||
//extern iapFileHeader iapPara;
|
||||
extern u32 fileDataLen;
|
||||
extern u32 fileCheckSum;
|
||||
extern ENET_RxBuf ENET_RxBuf_1;
|
||||
extern CBL_CMD_LIST g_cmdList;
|
||||
extern volatile uint8_t g_canRxMsgFlag ;//<2F><><EFBFBD>յ<EFBFBD>CAN<41><4E><EFBFBD>ݺ<EFBFBD><DDBA>ı<EFBFBD>־
|
||||
extern uint16_t g_canAddr;
|
||||
extern uint8_t g_recvData[1028];
|
||||
extern uint32_t g_recvLen;
|
||||
extern uint32_t OTA_CANTxID ;//Ĭ<>Ϸ<EFBFBD><CFB7><EFBFBD>IDΪ0x02
|
||||
extern uint32_t OTA_CANRxID ;//Ĭ<>Ͻ<EFBFBD><CFBD><EFBFBD>IDΪ0x01
|
||||
extern uint32_t WDT_CANRxID ;//Ĭ<>Ͻ<EFBFBD><CFBD><EFBFBD>IDΪ0x03
|
||||
extern Flash_RxBuf Flash_RxBuf_1;
|
||||
extern Flash_RxBuf Flash_RxBuf_2;
|
||||
|
||||
extern bool WDTReFresh_flag;//busoff<66><66>־
|
||||
extern volatile uint16_t Eth_Rx_Flag;//<2F><><EFBFBD>յ<EFBFBD>CAN<41><4E><EFBFBD>ݺ<EFBFBD><DDBA>ı<EFBFBD>־
|
||||
extern uint8_t des_ipaddr[4];//<2F><><EFBFBD><EFBFBD>IP
|
||||
extern uint8_t flash_eth_time;//
|
||||
extern uint8_t ethCmdSTT;
|
||||
|
||||
//<2F>ⲿ<EFBFBD><E2B2BF><EFBFBD><EFBFBD>
|
||||
|
||||
void goToApp(void);
|
||||
u8 IAPCopyFlashDeal(void);
|
||||
void IAPParaInit(void);
|
||||
void saveUpdatedFile(void);
|
||||
void receUpdatedFile(u8 id);
|
||||
void IAPFileParaCheck(u8 id);
|
||||
uint16_t CAN_BootGetAddrData(void);
|
||||
void ReadUpgradeFlag(void);
|
||||
void IAP_EEPROM_ERASE_108k(u32 StartAddr);
|
||||
void IAP_EEPROM_READ( u32 StartAddr, u8 *Buffer, u32 Length );
|
||||
void IAP_EEPROM_ERASE(uint32_t Page_Address, u32 Length);
|
||||
void IAP_EEPROM_WRITE( u32 StartAddr, u8 *Buffer, u32 Length );
|
||||
int DataRecord_WriteUpgrade(uint8_t upgradeFlag);
|
||||
void WCHNET_HandleGlobalInt(void);
|
||||
|
||||
unsigned char rdbyte_24c02(unsigned int add);
|
||||
void wrbyte_24c02(unsigned int add,unsigned char dat);
|
||||
void initSpi();
|
||||
|
||||
|
||||
|
||||
#endif /* __IAP_TASK_H__ */
|
||||
Reference in New Issue
Block a user