84 lines
2.6 KiB
C
84 lines
2.6 KiB
C
/********************************** (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__ */
|