183 lines
5.2 KiB
C
183 lines
5.2 KiB
C
/****************************************************************************
|
|
|
|
Copyright(c) 2019 by Aerospace C.Power (Chongqing) Microelectronics. ALL RIGHTS RESERVED.
|
|
|
|
This Information is proprietary to Aerospace C.Power (Chongqing) Microelectronics and MAY NOT
|
|
be copied by any method or incorporated into another program without
|
|
the express written consent of Aerospace C.Power. This Information or any portion
|
|
thereof remains the property of Aerospace C.Power. The Information contained herein
|
|
is believed to be accurate and Aerospace C.Power assumes no responsibility or
|
|
liability for its use in any way and conveys no license or title under
|
|
any patent or copyright and makes no representation or warranty that this
|
|
Information is free from patent or copyright infringement.
|
|
****************************************************************************/
|
|
#ifndef _ROM_H_
|
|
#define _ROM_H_
|
|
|
|
#include <stdint.h>
|
|
|
|
typedef unsigned int UINT32;
|
|
typedef unsigned short UINT16;
|
|
|
|
#ifndef NULL
|
|
#define NULL 0
|
|
#endif
|
|
|
|
#define REG32(a) (*((volatile UINT32 *)(a)))
|
|
|
|
#ifndef BIT
|
|
#define BIT(b) (1<<(b))
|
|
#endif
|
|
|
|
#define GET_PAGE_NUM(offset) ((offset)&0x00000F00)
|
|
|
|
#define ROM_HASH_IV_LEN 16
|
|
|
|
#define RAM_FLASH_READ_ID_ERR (1 << 0)
|
|
#define RAM_FLASH_SET_QUAD_ERR (1 << 1)
|
|
#define RAM_FLASH_ERASE_SECTOR_ERR (1 << 2)
|
|
#define RAM_FLASH_WRITE_SERIAL_ERR (1 << 3)
|
|
#define RAM_FLASH_WRITE_QUAD_ERR (1 << 4)
|
|
#define RAM_FLASH_READ_SERIAL_ERR (1 << 5)
|
|
#define RAM_FLASH_READ_QUAD_ERR (1 << 6)
|
|
#define RAM_XMODEM_NO_FRAME_ERR (1 << 7)
|
|
#define RAM_XMODEM_NO_START_ACK_ERR (1 << 8)
|
|
#define RAM_XMODEM_PKG_NUM_ERR (1 << 9)
|
|
#define RAM_XMODEM_CRC_OVERTIME_ERR (1 << 10)
|
|
#define RAM_SFC_BUSY_ERR (1 << 11)
|
|
#define RAM_IMAGE_CRC_ERR (1 << 12)
|
|
#define RAM_PKG_DATA_MISS_ERR (1 << 13)
|
|
#define RAM_TOO_MANY_IMAGE_ERR (1 << 14)
|
|
#define RAM_NO_IMAGE_ERR (1 << 15)
|
|
#define RAM_IMAGE_HEADER_ERR (1 << 16)
|
|
#define RAM_IMAGE_MISMATCH_ERR (1 << 17)
|
|
#define RAM_FLASH_FULL_TEST_ERR (1 << 18)
|
|
#define RAM_IMAGE_DECOMPRESS_ERR (1 << 19)
|
|
#define RAM_FLASH_SIZE_SUPPORT_ERR (1 << 20)
|
|
#define RAM_FLASH_EXT_ERASE_SECTOR_ERR (1 << 21)
|
|
#define RAM_FLASH_EXT_READ_SECTOR_ERR (1 << 22)
|
|
#define RAM_SFC_WIP_ERR (1 << 23)
|
|
#define RAM_CHECK_CHIP_SUBID_ERR (1 << 24)
|
|
#define RAM_WRITE_CHIP_SUBID_ERR (1 << 25)
|
|
#define RAM_EFUSE_BANK_CHIP_ERR (1 << 26)
|
|
#define RAM_FLASH_EXT_CHECK_ERR (1 << 27)
|
|
#define RAM_LOOKUP_CHIP_SUBID_ERR (1 << 28)
|
|
|
|
#define MANUFACTURER_NAME_LEN 32
|
|
|
|
#ifndef MANUFACTURER_INDEX
|
|
#define MANUFACTURER_INDEX 0
|
|
#endif
|
|
|
|
#define MANUFACTURER_HTZD "htzd"
|
|
#define MANUFACTURER_QJ "qj"
|
|
#define MANUFACTURER_FLX "flx"
|
|
#define MANUFACTURER_SPE "spe"
|
|
#define MANUFACTURER_GX "gx"
|
|
#define MANUFACTURER_DT "dt"
|
|
#define MANUFACTURER_YP "yp"
|
|
#define MANUFACTURER_WTZ "wtz"
|
|
#define MANUFACTURER_TCE "tce"
|
|
|
|
typedef struct
|
|
{
|
|
UINT16 dTpye;
|
|
UINT16 iTpye;
|
|
UINT32 sOff;
|
|
}flTb;
|
|
|
|
typedef struct ram_encrypt_t_
|
|
{
|
|
uint8_t encrypt_mode;
|
|
uint8_t encrypt_pattern;
|
|
uint32_t vender_id;
|
|
char manu[MANUFACTURER_NAME_LEN];
|
|
} ram_encrypt_t;
|
|
|
|
#define RAM_SHA_BUFFER_LEN 0x10000
|
|
|
|
char ramUartGetc(void);
|
|
void ramUartPutc(char c);
|
|
void ramUartClearRx(void);
|
|
int ramUartRxCnt(void);
|
|
|
|
enum
|
|
{
|
|
xmSOH = 0x01,
|
|
xmSTX = 0x02,
|
|
xmSTH = 0x03,
|
|
xmEOT = 0x04,
|
|
xmACK = 0x06,
|
|
xmNAK = 0x15,
|
|
xmCAN = 0x18,
|
|
xmCRC = 0x43, /* ASCII of 'C' */
|
|
};
|
|
|
|
enum
|
|
{
|
|
xmRT_Finish = 0,
|
|
xmRT_Error = -1,
|
|
};
|
|
|
|
#define RAM_DL_UART UART_PT0
|
|
|
|
#define uRX_RAEDY() ramUartRxCnt()
|
|
#define uGET_CHAR() ramUartGetc()
|
|
#define uPUT_CHAR(c) ramUartPutc(c)
|
|
#define CLEAR_FIFO() ramUartClearRx()
|
|
#define xmSTOP_NOW() uPUT_CHAR(xmCAN)
|
|
|
|
#define xmERROR_HANDER() do{xmSTOP_NOW(); return xmRT_Error;}while(0)
|
|
|
|
#define xm1ST_RETRY_TIME 200
|
|
|
|
#define xmFRMTYPE_128 128
|
|
#define xmFRMTYPE_1K 1024
|
|
#define xmFRMTYPE_16K 16384
|
|
|
|
#define xmCHECK_CHKSUM 0x01
|
|
#define xmCHECK_CRC16 0x02
|
|
|
|
#define xmTRY_CHECKSUM_MODE(t, l, m, c) do\
|
|
{\
|
|
l = 0x400000;\
|
|
CLEAR_FIFO();\
|
|
uPUT_CHAR(m);\
|
|
while((--l)&&(!uRX_RAEDY()));\
|
|
if(l)\
|
|
{\
|
|
c = uGET_CHAR();\
|
|
if((c ==xmSOH) || (c ==xmSTX) || (c ==xmSTH))\
|
|
{\
|
|
break;\
|
|
}\
|
|
}\
|
|
}while(--t)
|
|
|
|
#define xmTRY_CHECK_FRAME_START(t, l, m, c) do\
|
|
{\
|
|
l = 0x400000;\
|
|
while((--l)&&(!uRX_RAEDY()));\
|
|
if(l)\
|
|
{\
|
|
c = uGET_CHAR();\
|
|
if((c ==xmSOH) || (c ==xmSTX) || (c ==xmSTH) || (c ==xmEOT))\
|
|
{\
|
|
break;\
|
|
}\
|
|
}\
|
|
}while(--t)
|
|
|
|
#define RECIVE_CHAR(b, l) do{\
|
|
l = 0x4000;\
|
|
while((--l)&&(!uRX_RAEDY())) __asm volatile("nop\n");\
|
|
if(l) (b) = uGET_CHAR();\
|
|
}while(0)
|
|
|
|
#endif
|
|
|
|
#define FLASH_LAYOUT_INDEX_INVALID_VALUE (0xFF)
|
|
|
|
void ramReloadFlashBurnImageTable(uint8_t flash_size, uint8_t psram_flag,
|
|
uint8_t pkt_type, uint8_t layout_index);
|