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);
 |