Files
banban/ql-bootloader/common/inc/logo_table.h
T

150 lines
3.9 KiB
C

#ifndef __LOGO_TABLE_H__
#define __LOGO_TABLE_H__
#include "common.h"
/**********************CONFIG PARAMETER ****************************************
* CONFIG_ADD_LOGO_HEADER_TABLE_TEST_CASE: 1 --- add logo header table test case
* 0 --- remove logo header table test case
*******************************************************************************/
#define CONFIG_ADD_LOGO_HEADER_TABLE_TEST_CASE (0)
#define LOGO_VALID_MAGIC (0xBABE5F5F)
// - LOGO FUNCTION MAGIC
// - magic function definition:
// - aa_bb_cc_dd
// LOGO_FUNCTION_MAGIC_2 --- append dsp_adc.bin after updater.bin
#define LOGO_FUNCTION_MAGIC_2 ( 0x11111122 )
#define ENABLE_LOGO_DISPLAY_FLAG "[11]"
#define DISABLE_LOGO_DISPLAY_FLAG "[00]"
#define LOGO_INVALID_VALUE (0x4c4c554E) //NULL
#define LOGO_HEADER_TOTAL_SIZE (LOGO_IMAGE_HEADER_SIZE + LOGO_ENABLE_LOGO_AND_VIRATOR_FEEDBACK \
+ LOGO_VERSION_BLOCK_SIZE + LOADTABLELOGO_SYMBOL_SIZE)
//++++++++++++++++++++++++++++++++++++++++++++++++++
#define LOGO_HEADER_OFFSET_START ( 0 )
//AREA_1: LOGO_LOAD_BLOCK
#define LOGO_IMAGE_HEADER_SIZE 16
typedef union{
struct _ImageHeader{
UINT32 ImageMagic;
UINT32 ImageLoadAddr;
UINT32 ImageStartAddr;
UINT32 Logo_HeaderTableSize;
}ImageHeaderBlock;
UINT8 filer[LOGO_IMAGE_HEADER_SIZE];
}LOGO_IMAGE_HEADER_BLOCK;
//AREA_2: LOGO_FEEDBACK_BLOCK
#define LOGO_ENABLE_LOGO_AND_VIRATOR_FEEDBACK 16
typedef union{
struct _feedback_block{
char Description[11];
char LogoDisplayLogoFlag[5];
}feedback_block;
UINT8 filer[LOGO_ENABLE_LOGO_AND_VIRATOR_FEEDBACK];
}LOGO_FEEDBACK_BLOCK;
//AREA_3: LOGO_VERSION_BLOCK
#define LOGO_VERSION_BLOCK_SIZE 128
typedef union{
struct _logo_version_block{
char version_date[16];
char oem_lcd_type[48];
char COMPRESSED_ALGORITHM_SUPPORT[32];
char build_info_string[32];
}logo_version_block;
UINT8 filer[LOGO_VERSION_BLOCK_SIZE];
}LOGO_VERSION_BLOCK;
//AREA_4: ext*.bin info
#define LOADTABLELOGO_SYMBOL_SIZE ( 256 )
typedef struct{
char name[12];
unsigned int value;
}logo_symbol_item;
typedef struct {
// updater function magic
logo_symbol_item logo_function_magic;
//combine ext.bin
logo_symbol_item ext_combine_bin_size; // ext_partition size wihtout crc append
//updater.bin
logo_symbol_item ext_logo_size;
//dsp_adc.bin
logo_symbol_item ext_dsp_adc_exec_addr;
logo_symbol_item ext_dsp_adc_size;
}loadtable_logo_symbol_info;
typedef union{
loadtable_logo_symbol_info logo_symbol_info;
unsigned char filer[LOADTABLELOGO_SYMBOL_SIZE]; /* max size*/
}LOADTABLE_AREA_LOGO_SYMBOL;
typedef struct
{
LOGO_IMAGE_HEADER_BLOCK HeaderBlock;
LOGO_FEEDBACK_BLOCK FeedbackBlock;
LOGO_VERSION_BLOCK vb;
LOADTABLE_AREA_LOGO_SYMBOL symbol_info_union;
}LogoHeaderTableStruct;
typedef enum{
logo_no_function_magic = 0,
logo_reserved1_no_use,
logo_magic2_support_query_info_and_append_dsp_adc,
}LogoFunctionMagicType_Enum;
/****************************** external function declaration *******************************/
void logo_header_table_init(void);
LogoFunctionMagicType_Enum get_logo_function_magic_type(void);
BOOL IsLogoSupportQueryExtImgInfo(void);
BOOL IsLogoAppendDspAdc(void);
UINT32 logo_get_ext_combine_bin_size(void);
/**
* @Description: get logo flash addr,
* @Return Value: logo flash start address
*/
UINT32 get_logo_flash_start_addr(void);
UINT32 get_logo_flash_size(void);
UINT32 logo_get_ext_logo_size(void);
UINT32 logo_get_ext_dsp_adc_size(void);
UINT32 logo_get_ext_dsp_adc_flash_start_addr(void);
UINT32 logo_get_ext_dsp_adc_exec_addr(void);
#if (CONFIG_ADD_LOGO_HEADER_TABLE_TEST_CASE == 1)
void dump_logo_image_info(void);
void test_logo_header_table(void);
#endif
#endif