Files
kunlun/mfgtool/ram/inc/ram.h

183 lines
5.2 KiB
C
Raw Normal View History

2024-09-28 14:24:04 +08:00
/****************************************************************************
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"
2024-09-28 14:24:04 +08:00
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);