Files
2023-02-01 14:19:13 +08:00

84 lines
2.6 KiB
C
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
/********************************** (C) COPYRIGHT *******************************
* File Name : IAP_Task.h
* Author : WCH
* Version : V1.0.0
* Date : 2022/05/25
* Description : This file contains the headers of the IAP task.
*********************************************************************************
* Copyright (c) 2021 Nanjing Qinheng Microelectronics Co., Ltd.
* Attention: This software (modified or not) and binary are used for
* microcontroller manufactured by Nanjing Qinheng Microelectronics.
*******************************************************************************/
#ifndef __IAP_TASK_H__
#define __IAP_TASK_H__
#include "debug.h"
#include "ch32v20x_it.h"
/*
flash:128K
BIM area(Image Boot Manager):40K
USER area(用户代码区):44K
BACKUP area(代码备份区):44K
address assignment:
0x0 size:0xA000
0xA000 size:0xB000
0x15000 size:0xB000
*/
/*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 0xB000
#define BACKUP_IMAGE_START_ADD ((uint32_t) 0x08015000)
#define BACKUP_IMAGE_MAX_SIZE 0xB000
#define UPDATA_FLAG_STORAGE_ADD ((uint32_t) 0x0801FF00)
#define FLASH_BLOCK_SIZE 4096
#define READ_DATA_LEN 2048
#define FLASH_PAGE_SIZE 256
/*Flash operation information*/
#define BIN_INF_LEN 512
#define FILE_FLAG "WCHNET"
#define IMAGE_FLAG_UPDATE 0x57434820 //'W','C','H',' '
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;
extern ethDataDeal dataDeal;
extern iapFileHeader iapPara;
extern u32 fileDataLen;
extern u32 fileCheckSum;
extern u8 IAPCopyFlashDeal(void);
extern void IAPParaInit(void);
extern void saveUpdatedFile(void);
extern void receUpdatedFile(u8 socketid);
extern void IAPFileParaCheck(u8 socketid);
extern void IAP_EEPROM_ERASE_44k(u32 StartAddr);
extern void IAP_EEPROM_READ( u32 StartAddr, u8 *Buffer, u32 Length );
extern void IAP_EEPROM_ERASE(uint32_t Page_Address, u32 Length);
extern void IAP_EEPROM_WRITE( u32 StartAddr, u8 *Buffer, u32 Length );
#endif /* __IAP_TASK_H__ */