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