1594 lines
59 KiB
C
1594 lines
59 KiB
C
/*------------------------------------------------------------
|
|
(C) Copyright [2006-2008] Marvell International Ltd.
|
|
All Rights Reserved
|
|
------------------------------------------------------------*/
|
|
|
|
/*--------------------------------------------------------------------------------------------------------------------
|
|
INTEL CONFIDENTIAL
|
|
Copyright 2006 Intel Corporation All Rights Reserved.
|
|
The source code contained or described herein and all documents related to the source code ("Material") are owned
|
|
by Intel Corporation or its suppliers or licensors. Title to the Material remains with Intel Corporation or
|
|
its suppliers and licensors. The Material contains trade secrets and proprietary and confidential information of
|
|
Intel or its suppliers and licensors. The Material is protected by worldwide copyright and trade secret laws and
|
|
treaty provisions. No part of the Material may be used, copied, reproduced, modified, published, uploaded, posted,
|
|
transmitted, distributed, or disclosed in any way without Intel's prior express written permission.
|
|
|
|
No license under any patent, copyright, trade secret or other intellectual property right is granted to or
|
|
conferred upon you by disclosure or delivery of the Materials, either expressly, by implication, inducement,
|
|
estoppel or otherwise. Any license under such intellectual property rights must be express and approved by
|
|
Intel in writing.
|
|
-------------------------------------------------------------------------------------------------------------------*/
|
|
|
|
/***************************************************************************
|
|
* MODULE IMPLEMENTATION FILE
|
|
****************************************************************************
|
|
*
|
|
* Filename: loadTable.c
|
|
*
|
|
* The OBM is responsible to copy image from flash to the DDR.
|
|
* It doesn't know about real image size and always copy the maximum 7MB.
|
|
* The problems:
|
|
* - long time for copying (about 2 sec),
|
|
* - all ERR/spy/debug buffers are overwriten.
|
|
*
|
|
* SOLUTION:
|
|
* Put the Image BEGIN and END address onto predefined area - offset_0x1C0 size 0x40
|
|
* Add the the text-signature to recognize are these addresses present in image or not.
|
|
* The signature is following the BEGIN/END and is next ":BEGIN:END:LOAD_TABLE_SIGNATURE"
|
|
* OBM should check signature in flash and if it is present MAY use the size=(END-BEGIN).
|
|
* If signature is invalid the default 7MB is used.
|
|
* The IMAGE_END region added into scatter file
|
|
*
|
|
******************************************************************************/
|
|
#define _LOAD_TABLE_C_
|
|
|
|
#include "global_types.h"
|
|
#include "hal_cfg.h"
|
|
|
|
#include <string.h>
|
|
#include "asserts.h"
|
|
#include "bsp_util.h"
|
|
#include "EE_Postmortem.h"
|
|
#include "loadTable.h"
|
|
#ifndef CRANE_MCU_DONGLE
|
|
#include "nvmClient_ttc.h"
|
|
#endif
|
|
#include "ptable.h"
|
|
#include "UART.h"
|
|
#include "quec_cust_feature.h"
|
|
|
|
// NOTICE: have to update LT_ANTI_ROLLBACK_VER once loadtable updated
|
|
// to force do anti-rollback check in boot33, avoid loadtable unmatch caused fatal issue
|
|
#define LT_ANTI_ROLLBACK_VER "20190904"
|
|
|
|
#ifdef RUN_XIP_MODE
|
|
#define LT_EXECUTE_MODE "XIP"
|
|
#else
|
|
#define LT_EXECUTE_MODE "PSRAM"
|
|
#endif
|
|
|
|
#if defined(ENABLE_CAT1_LG)
|
|
#define LT_PS_MODE "LTEGSM"
|
|
#ifdef CRANE_MCU_DONGLE
|
|
//DM
|
|
#if defined(LTEGSM_THIN)
|
|
#define LT_RF_LOAD_ADDR_Z2 (0x7E000000)
|
|
#define LT_RF_LOAD_ADDR_A0 (0x7E000000)
|
|
#else
|
|
#define LT_RF_LOAD_ADDR_Z2 (0x7E090000)
|
|
#define LT_RF_LOAD_ADDR_A0 (0x7E090000)
|
|
#endif
|
|
#else//CRANE_MCU_DONGLE
|
|
//FP
|
|
#define LT_RF_LOAD_ADDR_Z2 (0x7E090000)
|
|
#define LT_RF_LOAD_ADDR_A0 (0x7E090000)
|
|
#endif//CRANE_MCU_DONGLE
|
|
#else//ENABLE_CAT1_LG
|
|
#define LT_PS_MODE "LTEONLY"
|
|
#ifdef CRANE_MCU_DONGLE
|
|
//0x0004C000-------DSP Reduce Sulog Buffer Size[304KB] {128KB ITCM + 248KB RAM}, RF Address[0x7E000000]
|
|
//0x0003E000-------DSP Reduce Sulog Buffer Size[248KB] {248KB RAM }, RF Address[0x7E010000]
|
|
//0x00040800-------DSP Reduce Sulog Buffer Size[258KB] {258KB RAM }, RF Address[0x7E010000],craneLR + WifiScan ;RF Address[0x7E000000],craneLG
|
|
//0x00049000-------DSP Reduce Sulog Buffer Size[292KB] {292KB RAM }, RF Address[0x7E010000]
|
|
//0x00052000-------DSP Reduce Sulog Size[328KB] {328KB RAM }, RF Address[0x7E010000]
|
|
//0x00070000-------DSP ALLIN Size[448KB] {448KB RAM }, CraneL RF Address[0x7E065000],craneLS and craneLR RF Address[0x7E045000]
|
|
#if (defined(CRANEL_8MRAM) || defined(CRANEL_4MRAM))//for craneL
|
|
#if ((defined(SINGLE_SIM) && !defined(NOT_REDUCE_SULOG_DSP)) || defined(REDUCE_SULOG_IRBUF_DSP) || defined(CRANEL_AUDIOE_DSP))
|
|
#if (defined(CRANELG_SUPPORT) || defined(CRANELRH_SUPPORT))
|
|
#define LT_RF_LOAD_ADDR_Z2 (0x7E000000)//for reduce sulog dsp
|
|
#define LT_RF_LOAD_ADDR_A0 (0x7E000000)
|
|
#else
|
|
#define LT_RF_LOAD_ADDR_Z2 (0x7E010000)//for reduce sulog dsp
|
|
#define LT_RF_LOAD_ADDR_A0 (0x7E010000)
|
|
#endif
|
|
#else
|
|
#if (defined(CRANELS_SUPPORT) && defined(REDUCE_SULOG_IRBUF_DSP))
|
|
#define LT_RF_LOAD_ADDR_Z2 (0x7E010000)//for reduce sulog dsp
|
|
#define LT_RF_LOAD_ADDR_A0 (0x7E010000)
|
|
#elif (defined(CRANELS_SUPPORT) || defined(CRANELR_SUPPORT) || defined(CRANELG_SUPPORT))
|
|
#define LT_RF_LOAD_ADDR_Z2 (0x7E045000)
|
|
#define LT_RF_LOAD_ADDR_A0 (0x7E045000)
|
|
#else
|
|
#define LT_RF_LOAD_ADDR_Z2 (0x7E065000)
|
|
#define LT_RF_LOAD_ADDR_A0 (0x7E065000)
|
|
#endif
|
|
#endif
|
|
#else
|
|
#define LT_RF_LOAD_ADDR_Z2 (0x7E090000)
|
|
#define LT_RF_LOAD_ADDR_A0 (0x7E090000)
|
|
#endif//CRANEL
|
|
#else//CRANE_MCU_DONGLE
|
|
#define LT_RF_LOAD_ADDR_Z2 (0x7E0C7000)
|
|
#define LT_RF_LOAD_ADDR_A0 (0x7E0CB000)
|
|
#endif//CRANE_MCU_DONGLE
|
|
#endif
|
|
|
|
#ifdef _32MNORFLASH
|
|
#define FLASH_TRAIL (0x82000000)//32M flash
|
|
#define NVM_PSIZE (0x00200000)//2M NVM
|
|
#else
|
|
#ifdef _8MNORFLASH
|
|
#define FLASH_TRAIL (0x80800000)//8M flash
|
|
#define NVM_PSIZE (0x00080000)//512K NVM
|
|
#else
|
|
#define FLASH_TRAIL (0x81000000)//16M flash
|
|
#define NVM_PSIZE (0x00200000)//2M NVM
|
|
#endif
|
|
#endif
|
|
|
|
#define FACTORY_PSIZE (0x00010000)//64K
|
|
#define APN_START (0x80038000)//APN 32K
|
|
#define APN_PSIZE (0x00008000)
|
|
#define RD_START (0x80028000)//RD 64K
|
|
#define RD_PSIZE (0x00010000)
|
|
|
|
#if (defined(SINGLE_SIM) || defined(CRANELS_SUPPORT) || defined(CRANELG_SUPPORT))
|
|
#define OTA_MT (0x00000001)
|
|
#else
|
|
#define OTA_MT (0xFFFFFFFF)
|
|
#endif
|
|
|
|
extern void INT_Initialize(void);
|
|
#define LT_ENTRY_POINT (UINT32)&INT_Initialize
|
|
#define LT_BRANCH_TO_ENTRY_OPCODE 0xE51FF004 /* LDR PC,[PC,#-4]*/
|
|
|
|
extern UINT32 Load$$LOAD_TABLE$$Base;
|
|
#define LT_IMAGE_BEGIN (UINT32)(&Load$$LOAD_TABLE$$Base)
|
|
#ifndef RUN_XIP_MODE
|
|
extern UINT32 Load$$PSRAM_END$$Base;
|
|
#define LT_IMAGE_END (UINT32)(&Load$$PSRAM_END$$Base)
|
|
#else
|
|
#define LT_IMAGE_END (UINT32)(INVALID_ADDRESS)
|
|
#endif
|
|
|
|
#define LT_SIGNATURE_STRING LOAD_TABLE_SIGNATURE_STR
|
|
//#if defined (_TAVOR_HARBELL_) || defined(SILICON_PV2) /* TtC - SHARED MEMORY - TBD */
|
|
#if defined(SILICON_PV2) /* TtC - SHARED MEMORY - TBD */
|
|
extern UINT32 Image$$DDR_NONCACHE_REGION$$Base;
|
|
//extern UINT32 Image$$DDR_NONCACHE_REGION_AC_SHARE$$Base;
|
|
//extern UINT32 Image$$DDR_NONCACHE_REGION_AC_SHARE_ENDMARKER$$Base;
|
|
|
|
extern UINT32 Image$$DDR_RELIABLE_RO_AREA$$Base;
|
|
extern UINT32 Image$$DDR_RELIABLE_RO_AREA_ENDMARK$$Base;
|
|
extern UINT32 Image$$DDR_NONCACHE_REGION_ACIPC_OTHER_UL$$Base;
|
|
extern UINT32 Image$$DDR_NONCACHE_REGION_ACIPC_OTHER_DL_ENDMARKER$$Base;
|
|
|
|
|
|
//bchang
|
|
extern UINT32 Image$$DDR_RO_INIT_CODE$$Base;
|
|
extern UINT32 Image$$DDR_DSP_RO$$Base;
|
|
extern UINT32 Image$$DDR_DSP_RO_ENDMARK$$Base;
|
|
extern UINT32 Image$$INIT_DATA_ENDMARKER$$Base;
|
|
//extern UINT32 Image$$DDR_RW_DATA$$Base;
|
|
extern UINT32 Image$$MSA_IR_REGION$$Base;
|
|
|
|
extern UINT32 Image$$DDR_NONCACHE_REGION_ACIPC_PS_UL$$Base;
|
|
extern UINT32 Image$$DDR_NONCACHE_REGION_ACIPC_PS_UL_ENDMARKER$$Base;
|
|
extern UINT32 Image$$DDR_NONCACHE_REGION_ACIPC_PS_DL$$Base;
|
|
extern UINT32 Image$$DDR_NONCACHE_REGION_ACIPC_PS_DL_ENDMARKER$$Base;
|
|
extern UINT32 Image$$DDR_NONCACHE_REGION_ACIPC_OTHER_UL$$Base;
|
|
extern UINT32 Image$$DDR_NONCACHE_REGION_ACIPC_OTHER_UL_ENDMARKER$$Base;
|
|
extern UINT32 Image$$DDR_NONCACHE_REGION_ACIPC_OTHER_DL$$Base;
|
|
extern UINT32 Image$$DDR_NONCACHE_REGION_ACIPC_OTHER_DL_ENDMARKER$$Base;
|
|
extern UINT32 Image$$DDR_NONCACHE_REGION_ACIPC_PS_KeySection$$Base;
|
|
extern UINT32 Image$$DDR_NONCACHE_REGION_ACIPC_PS_KeySection_ENDMARKER$$Base;
|
|
extern UINT32 Image$$DDR_NONCACHE_REGION_ACIPC_OTHER_KeySection$$Base;
|
|
extern UINT32 Image$$DDR_NONCACHE_REGION_ACIPC_OTHER_KeySection_ENDMARKER$$Base;
|
|
extern UINT32 Image$$DDR_DDR_PRIVATE_RW_AREA_ENDMARK$$Base;
|
|
extern UINT32 Image$$DDR_NONCACHE_REGION_MEMLOG$$Base;
|
|
|
|
extern UINT32 Image$$DDR_NONCACHE_REGION_ACIPC_DIAG_UL$$Base;
|
|
extern UINT32 Image$$DDR_NONCACHE_REGION_ACIPC_DIAG_UL_ENDMARKER$$Base;
|
|
extern UINT32 Image$$DDR_NONCACHE_REGION_ACIPC_DIAG_DL$$Base;
|
|
extern UINT32 Image$$DDR_NONCACHE_REGION_ACIPC_DIAG_DL_ENDMARKER$$Base;
|
|
extern UINT32 Image$$DDR_NONCACHE_REGION_ACIPC_DIAG_KeySection$$Base;
|
|
extern UINT32 Image$$DDR_NONCACHE_REGION_ACIPC_DIAG_KeySection_ENDMARKER$$Base;
|
|
|
|
extern UINT32 Image$$DDR_RFBIN_RO$$Base;
|
|
|
|
extern UINT32 Image$$DDR_RFS_AREA$$Base;
|
|
extern UINT32 Image$$DDR_RFS_AREA_ENDMARK$$Base;
|
|
|
|
#ifdef OPENCPU_SUPPORT
|
|
extern UINT32 Image$$DDR_HEAP_GUARD$$Base;
|
|
extern UINT32 Image$$DDR_HEAP_GUARD_ENDMARKER$$Base;
|
|
extern UINT32 Image$$DDR_HEAP_GUARD$$Length;
|
|
#define DDR_APP_IMAGE_BASE_ADDR (UINT32)(&Image$$DDR_HEAP_GUARD$$Base)
|
|
#define DDR_APP_IMAGE_END_ADDR (UINT32)(&Image$$DDR_HEAP_GUARD_ENDMARKER$$Base)
|
|
#define DDR_APP_IMAGE_LENGTH (UINT32)(&Image$$DDR_HEAP_GUARD$$Length)
|
|
#endif
|
|
|
|
extern UINT32 Image$$NVMBUF$$Base;
|
|
|
|
extern UINT32 _diagIntIfQPtrData;
|
|
extern UINT32 _diagIntIfReportsList;
|
|
|
|
//xiaoke@20190303 - external LZOP RW compress
|
|
//DDR_RW_DATA
|
|
extern UINT32 Image$$DDR_RW_DATA$$Base;
|
|
extern UINT32 Load$$DDR_RW_DATA$$Base;
|
|
extern UINT32 Image$$DDR_RW_DATA$$Length;
|
|
#define DDR_RW_DATA_IMAGE_ADDR (UINT32)(&Image$$DDR_RW_DATA$$Base)
|
|
#define DDR_RW_DATA_LOAD_ADDR (UINT32)(&Load$$DDR_RW_DATA$$Base)
|
|
#define DDR_RW_DATA_LENGTH (UINT32)(&Image$$DDR_RW_DATA$$Length)
|
|
|
|
extern UINT32 Image$$DDR_HEAP_GUARD$$Base;
|
|
extern UINT32 Image$$DDR_HEAP_ENDMARK$$Base;
|
|
|
|
#define DDR_HEAP_GUARD_ADDR (UINT32)(&Image$$DDR_HEAP_GUARD$$Base)
|
|
#define DDR_HEAP_GUARD_END_ADDR (UINT32)(&Image$$DDR_HEAP_ENDMARK$$Base)
|
|
|
|
extern UINT32 Image$$PS_NONCACHE_DATA$$ZI$$Base;
|
|
#define DDR_NONCACHE_RF_BK_ADDR (UINT32)(&Image$$PS_NONCACHE_DATA$$ZI$$Base)
|
|
|
|
|
|
//MMI_DATA
|
|
#ifdef PROJ_ASR_APP_001
|
|
extern UINT32 Image$$MMI_DATA$$Base;
|
|
extern UINT32 Load$$MMI_DATA$$Base;
|
|
extern UINT32 Image$$MMI_DATA$$Length;
|
|
|
|
extern UINT32 Image$$DDR_MMI_RO_EXEC$$Base;
|
|
extern UINT32 Image$$DDR_MMI_RO_EXEC$$Length;
|
|
|
|
#define MMI_DATA_IMAGE_ADDR (UINT32)(&Image$$MMI_DATA$$Base)
|
|
#define MMI_DATA_LOAD_ADDR (UINT32)(&Load$$MMI_DATA$$Base)
|
|
#define MMI_DATA_LENGTH (UINT32)(&Image$$MMI_DATA$$Length)
|
|
#endif
|
|
//PS_NONCACHE_DATA
|
|
extern UINT32 Image$$PS_NONCACHE_DATA$$Base;
|
|
extern UINT32 Load$$PS_NONCACHE_DATA$$Base;
|
|
extern UINT32 Image$$PS_NONCACHE_DATA$$Length;
|
|
#define PS_NONCACHE_DATA_IMAGE_ADDR (UINT32)(&Image$$PS_NONCACHE_DATA$$Base)
|
|
#define PS_NONCACHE_DATA_LOAD_ADDR (UINT32)(&Load$$PS_NONCACHE_DATA$$Base)
|
|
#define PS_NONCACHE_DATA_LENGTH (UINT32)(&Image$$PS_NONCACHE_DATA$$Length)
|
|
//DDR_NONCACHE_USB
|
|
extern UINT32 Image$$DDR_NONCACHE_USB$$Base;
|
|
extern UINT32 Load$$DDR_NONCACHE_USB$$Base;
|
|
extern UINT32 Image$$DDR_NONCACHE_USB$$Length;
|
|
#define DDR_NONCACHE_USB_IMAGE_ADDR (UINT32)(&Image$$DDR_NONCACHE_USB$$Base)
|
|
#define DDR_NONCACHE_USB_LOAD_ADDR (UINT32)(&Load$$DDR_NONCACHE_USB$$Base)
|
|
#define DDR_NONCACHE_USB_LENGTH (UINT32)(&Image$$DDR_NONCACHE_USB$$Length)
|
|
//PS_CODE_IN_PSRAM
|
|
|
|
#ifdef RUN_XIP_MODE
|
|
extern UINT32 Image$$PS_CODE_IN_PSRAM$$Base;
|
|
extern UINT32 Load$$PS_CODE_IN_PSRAM$$Base;
|
|
extern UINT32 Image$$PS_CODE_IN_PSRAM$$Length;
|
|
#define PS_CODE_IN_PSRAM_IMAGE_ADDR (UINT32)(&Image$$PS_CODE_IN_PSRAM$$Base)
|
|
#define PS_CODE_IN_PSRAM_LOAD_ADDR (UINT32)(&Load$$PS_CODE_IN_PSRAM$$Base)
|
|
#define PS_CODE_IN_PSRAM_LENGTH (UINT32)(&Image$$PS_CODE_IN_PSRAM$$Length)
|
|
|
|
|
|
extern UINT32 Image$$DDR_ITCM$$Base;
|
|
extern UINT32 Load$$DDR_ITCM$$Base;
|
|
extern UINT32 Image$$DDR_ITCM$$Length;
|
|
#define DDR_ITCM_IMAGE_ADDR (UINT32)(&Image$$DDR_ITCM$$Base)
|
|
#define DDR_ITCM_LOAD_ADDR (UINT32)(&Load$$DDR_ITCM$$Base)
|
|
#define DDR_ITCM_LENGTH (UINT32)(&Image$$DDR_ITCM$$Length)
|
|
#define DDR_ITCM_BACKUP_ADDR (UINT32)(&Image$$DDR_NONCACHE_USB$$Base)
|
|
|
|
#ifdef CRANE_MCU_DONGLE
|
|
#if (defined(LTEONLY_THIN_SINGLE_SIM_2MFLASH) || defined(CRANELS_8MRAM4MFLASH_MULTI_LOADTABLE))
|
|
extern UINT32 Image$$PSB_CODE_IN_PSRAM$$Base;
|
|
extern UINT32 Load$$PSB_CODE_IN_PSRAM$$Base;
|
|
extern UINT32 Image$$PSB_CODE_IN_PSRAM$$Length;
|
|
#define PSB_CODE_IN_PSRAM_IMAGE_ADDR (UINT32)(&Image$$PSB_CODE_IN_PSRAM$$Base)
|
|
#define PSB_CODE_IN_PSRAM_LOAD_ADDR (UINT32)(&Load$$PSB_CODE_IN_PSRAM$$Base)
|
|
#define PSB_CODE_IN_PSRAM_LENGTH (UINT32)(&Image$$PSB_CODE_IN_PSRAM$$Length)
|
|
|
|
extern UINT32 Image$$PSC_CODE_IN_PSRAM$$Base;
|
|
extern UINT32 Load$$PSC_CODE_IN_PSRAM$$Base;
|
|
extern UINT32 Image$$PSC_CODE_IN_PSRAM$$Length;
|
|
#define PSC_CODE_IN_PSRAM_IMAGE_ADDR (UINT32)(&Image$$PSC_CODE_IN_PSRAM$$Base)
|
|
#define PSC_CODE_IN_PSRAM_LOAD_ADDR (UINT32)(&Load$$PSC_CODE_IN_PSRAM$$Base)
|
|
#define PSC_CODE_IN_PSRAM_LENGTH (UINT32)(&Image$$PSC_CODE_IN_PSRAM$$Length)
|
|
|
|
extern UINT32 Image$$PSD_CODE_IN_PSRAM$$Base;
|
|
extern UINT32 Load$$PSD_CODE_IN_PSRAM$$Base;
|
|
extern UINT32 Image$$PSD_CODE_IN_PSRAM$$Length;
|
|
#define PSD_CODE_IN_PSRAM_IMAGE_ADDR (UINT32)(&Image$$PSD_CODE_IN_PSRAM$$Base)
|
|
#define PSD_CODE_IN_PSRAM_LOAD_ADDR (UINT32)(&Load$$PSD_CODE_IN_PSRAM$$Base)
|
|
#define PSD_CODE_IN_PSRAM_LENGTH (UINT32)(&Image$$PSD_CODE_IN_PSRAM$$Length)
|
|
|
|
extern UINT32 Image$$PSE_CODE_IN_PSRAM$$Base;
|
|
extern UINT32 Load$$PSE_CODE_IN_PSRAM$$Base;
|
|
extern UINT32 Image$$PSE_CODE_IN_PSRAM$$Length;
|
|
#define PSE_CODE_IN_PSRAM_IMAGE_ADDR (UINT32)(&Image$$PSE_CODE_IN_PSRAM$$Base)
|
|
#define PSE_CODE_IN_PSRAM_LOAD_ADDR (UINT32)(&Load$$PSE_CODE_IN_PSRAM$$Base)
|
|
#define PSE_CODE_IN_PSRAM_LENGTH (UINT32)(&Image$$PSE_CODE_IN_PSRAM$$Length)
|
|
|
|
extern UINT32 Image$$PSF_CODE_IN_PSRAM$$Base;
|
|
extern UINT32 Load$$PSF_CODE_IN_PSRAM$$Base;
|
|
extern UINT32 Image$$PSF_CODE_IN_PSRAM$$Length;
|
|
#define PSF_CODE_IN_PSRAM_IMAGE_ADDR (UINT32)(&Image$$PSF_CODE_IN_PSRAM$$Base)
|
|
#define PSF_CODE_IN_PSRAM_LOAD_ADDR (UINT32)(&Load$$PSF_CODE_IN_PSRAM$$Base)
|
|
#define PSF_CODE_IN_PSRAM_LENGTH (UINT32)(&Image$$PSF_CODE_IN_PSRAM$$Length)
|
|
|
|
|
|
extern UINT32 Image$$PLA_CODE_IN_PSRAM$$Base;
|
|
extern UINT32 Load$$PLA_CODE_IN_PSRAM$$Base;
|
|
extern UINT32 Image$$PLA_CODE_IN_PSRAM$$Length;
|
|
#define PLA_CODE_IN_PSRAM_IMAGE_ADDR (UINT32)(&Image$$PLA_CODE_IN_PSRAM$$Base)
|
|
#define PLA_CODE_IN_PSRAM_LOAD_ADDR (UINT32)(&Load$$PLA_CODE_IN_PSRAM$$Base)
|
|
#define PLA_CODE_IN_PSRAM_LENGTH (UINT32)(&Image$$PLA_CODE_IN_PSRAM$$Length)
|
|
|
|
extern UINT32 Image$$PLB_CODE_IN_PSRAM$$Base;
|
|
extern UINT32 Load$$PLB_CODE_IN_PSRAM$$Base;
|
|
extern UINT32 Image$$PLB_CODE_IN_PSRAM$$Length;
|
|
#define PLB_CODE_IN_PSRAM_IMAGE_ADDR (UINT32)(&Image$$PLB_CODE_IN_PSRAM$$Base)
|
|
#define PLB_CODE_IN_PSRAM_LOAD_ADDR (UINT32)(&Load$$PLB_CODE_IN_PSRAM$$Base)
|
|
#define PLB_CODE_IN_PSRAM_LENGTH (UINT32)(&Image$$PLB_CODE_IN_PSRAM$$Length)
|
|
|
|
extern UINT32 Image$$PLC_CODE_IN_PSRAM$$Base;
|
|
extern UINT32 Load$$PLC_CODE_IN_PSRAM$$Base;
|
|
extern UINT32 Image$$PLC_CODE_IN_PSRAM$$Length;
|
|
#define PLC_CODE_IN_PSRAM_IMAGE_ADDR (UINT32)(&Image$$PLC_CODE_IN_PSRAM$$Base)
|
|
#define PLC_CODE_IN_PSRAM_LOAD_ADDR (UINT32)(&Load$$PLC_CODE_IN_PSRAM$$Base)
|
|
#define PLC_CODE_IN_PSRAM_LENGTH (UINT32)(&Image$$PLC_CODE_IN_PSRAM$$Length)
|
|
|
|
#elif defined(CRANELG_4MRAM4MFLASH_SINGLE_SIM_SMS)|| defined(LTEGSM_THIN) //quectel pony add ltegsm_thin for ims fota
|
|
extern UINT32 Image$$PSB_CODE_IN_PSRAM$$Base;
|
|
extern UINT32 Load$$PSB_CODE_IN_PSRAM$$Base;
|
|
extern UINT32 Image$$PSB_CODE_IN_PSRAM$$Length;
|
|
#define PSB_CODE_IN_PSRAM_IMAGE_ADDR (UINT32)(&Image$$PSB_CODE_IN_PSRAM$$Base)
|
|
#define PSB_CODE_IN_PSRAM_LOAD_ADDR (UINT32)(&Load$$PSB_CODE_IN_PSRAM$$Base)
|
|
#define PSB_CODE_IN_PSRAM_LENGTH (UINT32)(&Image$$PSB_CODE_IN_PSRAM$$Length)
|
|
|
|
#elif defined(SUPPORT_VOLTE_4MPSRAM4MFLASH)
|
|
extern UINT32 Image$$PSB_CODE_IN_PSRAM$$Base;
|
|
extern UINT32 Load$$PSB_CODE_IN_PSRAM$$Base;
|
|
extern UINT32 Image$$PSB_CODE_IN_PSRAM$$Length;
|
|
#define PSB_CODE_IN_PSRAM_IMAGE_ADDR (UINT32)(&Image$$PSB_CODE_IN_PSRAM$$Base)
|
|
#define PSB_CODE_IN_PSRAM_LOAD_ADDR (UINT32)(&Load$$PSB_CODE_IN_PSRAM$$Base)
|
|
#define PSB_CODE_IN_PSRAM_LENGTH (UINT32)(&Image$$PSB_CODE_IN_PSRAM$$Length)
|
|
|
|
extern UINT32 Image$$PSC_CODE_IN_PSRAM$$Base;
|
|
extern UINT32 Load$$PSC_CODE_IN_PSRAM$$Base;
|
|
extern UINT32 Image$$PSC_CODE_IN_PSRAM$$Length;
|
|
#define PSC_CODE_IN_PSRAM_IMAGE_ADDR (UINT32)(&Image$$PSC_CODE_IN_PSRAM$$Base)
|
|
#define PSC_CODE_IN_PSRAM_LOAD_ADDR (UINT32)(&Load$$PSC_CODE_IN_PSRAM$$Base)
|
|
#define PSC_CODE_IN_PSRAM_LENGTH (UINT32)(&Image$$PSC_CODE_IN_PSRAM$$Length)
|
|
|
|
extern UINT32 Image$$PSD_CODE_IN_PSRAM$$Base;
|
|
extern UINT32 Load$$PSD_CODE_IN_PSRAM$$Base;
|
|
extern UINT32 Image$$PSD_CODE_IN_PSRAM$$Length;
|
|
#define PSD_CODE_IN_PSRAM_IMAGE_ADDR (UINT32)(&Image$$PSD_CODE_IN_PSRAM$$Base)
|
|
#define PSD_CODE_IN_PSRAM_LOAD_ADDR (UINT32)(&Load$$PSD_CODE_IN_PSRAM$$Base)
|
|
#define PSD_CODE_IN_PSRAM_LENGTH (UINT32)(&Image$$PSD_CODE_IN_PSRAM$$Length)
|
|
|
|
extern UINT32 Image$$PSE_CODE_IN_PSRAM$$Base;
|
|
extern UINT32 Load$$PSE_CODE_IN_PSRAM$$Base;
|
|
extern UINT32 Image$$PSE_CODE_IN_PSRAM$$Length;
|
|
#define PSE_CODE_IN_PSRAM_IMAGE_ADDR (UINT32)(&Image$$PSE_CODE_IN_PSRAM$$Base)
|
|
#define PSE_CODE_IN_PSRAM_LOAD_ADDR (UINT32)(&Load$$PSE_CODE_IN_PSRAM$$Base)
|
|
#define PSE_CODE_IN_PSRAM_LENGTH (UINT32)(&Image$$PSE_CODE_IN_PSRAM$$Length)
|
|
|
|
#else
|
|
#if !defined(LZOP_SUPPORT) && !defined(LTEONLY_8M8M) && !defined(CRANEL_4MRAM)
|
|
|
|
extern UINT32 Image$$PSB_CODE_IN_PSRAM$$Base;
|
|
extern UINT32 Load$$PSB_CODE_IN_PSRAM$$Base;
|
|
extern UINT32 Image$$PSB_CODE_IN_PSRAM$$Length;
|
|
#define PSB_CODE_IN_PSRAM_IMAGE_ADDR (UINT32)(&Image$$PSB_CODE_IN_PSRAM$$Base)
|
|
#define PSB_CODE_IN_PSRAM_LOAD_ADDR (UINT32)(&Load$$PSB_CODE_IN_PSRAM$$Base)
|
|
#define PSB_CODE_IN_PSRAM_LENGTH (UINT32)(&Image$$PSB_CODE_IN_PSRAM$$Length)
|
|
|
|
extern UINT32 Image$$PL_CODE_IN_PSRAM$$Base;
|
|
extern UINT32 Load$$PL_CODE_IN_PSRAM$$Base;
|
|
extern UINT32 Image$$PL_CODE_IN_PSRAM$$Length;
|
|
#define PL_CODE_IN_PSRAM_IMAGE_ADDR (UINT32)(&Image$$PL_CODE_IN_PSRAM$$Base)
|
|
#define PL_CODE_IN_PSRAM_LOAD_ADDR (UINT32)(&Load$$PL_CODE_IN_PSRAM$$Base)
|
|
#define PL_CODE_IN_PSRAM_LENGTH (UINT32)(&Image$$PL_CODE_IN_PSRAM$$Length)
|
|
|
|
|
|
extern UINT32 Image$$NON_OTA_CODE_IN_PSRAM$$Base;
|
|
extern UINT32 Load$$NON_OTA_CODE_IN_PSRAM$$Base;
|
|
extern UINT32 Image$$NON_OTA_CODE_IN_PSRAM$$Length;
|
|
#define NON_OTA_CODE_IN_PSRAM_IMAGE_ADDR (UINT32)(&Image$$NON_OTA_CODE_IN_PSRAM$$Base)
|
|
#define NON_OTA_CODE_IN_PSRAM_LOAD_ADDR (UINT32)(&Load$$NON_OTA_CODE_IN_PSRAM$$Base)
|
|
#define NON_OTA_CODE_IN_PSRAM_LENGTH (UINT32)(&Image$$NON_OTA_CODE_IN_PSRAM$$Length)
|
|
#endif
|
|
#endif
|
|
#endif
|
|
|
|
#endif
|
|
//xiaoke@20190303
|
|
|
|
#if (defined(CRANEM_SS_16MRAM) && defined(LTEGSM_THIN))
|
|
extern UINT32 Image$$PSB_CODE_IN_PSRAM$$Base;
|
|
extern UINT32 Load$$PSB_CODE_IN_PSRAM$$Base;
|
|
extern UINT32 Image$$PSB_CODE_IN_PSRAM$$Length;
|
|
#define PSB_CODE_IN_PSRAM_IMAGE_ADDR (UINT32)(&Image$$PSB_CODE_IN_PSRAM$$Base)
|
|
#define PSB_CODE_IN_PSRAM_LOAD_ADDR (UINT32)(&Load$$PSB_CODE_IN_PSRAM$$Base)
|
|
#define PSB_CODE_IN_PSRAM_LENGTH (UINT32)(&Image$$PSB_CODE_IN_PSRAM$$Length)
|
|
|
|
extern UINT32 Image$$PSC_CODE_IN_PSRAM$$Base;
|
|
extern UINT32 Load$$PSC_CODE_IN_PSRAM$$Base;
|
|
extern UINT32 Image$$PSC_CODE_IN_PSRAM$$Length;
|
|
#define PSC_CODE_IN_PSRAM_IMAGE_ADDR (UINT32)(&Image$$PSC_CODE_IN_PSRAM$$Base)
|
|
#define PSC_CODE_IN_PSRAM_LOAD_ADDR (UINT32)(&Load$$PSC_CODE_IN_PSRAM$$Base)
|
|
#define PSC_CODE_IN_PSRAM_LENGTH (UINT32)(&Image$$PSC_CODE_IN_PSRAM$$Length)
|
|
|
|
|
|
extern UINT32 Image$$PL_CODE_IN_PSRAM$$Base;
|
|
extern UINT32 Load$$PL_CODE_IN_PSRAM$$Base;
|
|
extern UINT32 Image$$PL_CODE_IN_PSRAM$$Length;
|
|
#define PL_CODE_IN_PSRAM_IMAGE_ADDR (UINT32)(&Image$$PL_CODE_IN_PSRAM$$Base)
|
|
#define PL_CODE_IN_PSRAM_LOAD_ADDR (UINT32)(&Load$$PL_CODE_IN_PSRAM$$Base)
|
|
#define PL_CODE_IN_PSRAM_LENGTH (UINT32)(&Image$$PL_CODE_IN_PSRAM$$Length)
|
|
|
|
extern UINT32 Image$$PLB_CODE_IN_PSRAM$$Base;
|
|
extern UINT32 Load$$PLB_CODE_IN_PSRAM$$Base;
|
|
extern UINT32 Image$$PLB_CODE_IN_PSRAM$$Length;
|
|
#define PLB_CODE_IN_PSRAM_IMAGE_ADDR (UINT32)(&Image$$PLB_CODE_IN_PSRAM$$Base)
|
|
#define PLB_CODE_IN_PSRAM_LOAD_ADDR (UINT32)(&Load$$PLB_CODE_IN_PSRAM$$Base)
|
|
#define PLB_CODE_IN_PSRAM_LENGTH (UINT32)(&Image$$PLB_CODE_IN_PSRAM$$Length)
|
|
#endif
|
|
|
|
#define LT_COPY_RW_AREA_ADDR (UINT32)(&loadTableRWcopy)
|
|
#define LT_EE_POSTMORTEM_ADDR (UINT32)(&EE_PostmortemDesc)
|
|
#define LT_SHARED_FREE_BEGIN 0 //(UINT32)(&Image$$DDR_NONCACHE_REGION_AC_SHARE$$Base)
|
|
#define LT_SHARED_FREE_END 0 //(UINT32)(&Image$$DDR_NONCACHE_REGION_AC_SHARE_ENDMARKER$$Base)
|
|
|
|
#ifndef SS_FEATURE
|
|
#define LT_RAW_RW_BEGIN (UINT32)(&Image$$DDR_RW_DATA$$Base)
|
|
#define LT_RAW_RW_END (UINT32)(&Image$$DDR_DDR_PRIVATE_RW_AREA_ENDMARK$$Base)
|
|
#else
|
|
#define LT_RAW_RW_BEGIN (UINT32)(&Image$$DDR_RO_INIT_CODE$$Base) // pxxiong, modify to dump more DDR memory
|
|
#define LT_RAW_RW_END (UINT32)(&Image$$MSA_IR_REGION$$Base) // pxxiong, modify to dump more DDR memory
|
|
#endif
|
|
|
|
|
|
#define LT_RDATA_RO_BEGIN (UINT32)(&Image$$DDR_RELIABLE_RO_AREA$$Base)
|
|
#define LT_RDATA_RO_END (UINT32)(&Image$$DDR_RELIABLE_RO_AREA_ENDMARK$$Base)
|
|
#if 0
|
|
#define LT_ACIPC_BEGIN (UINT32)(&Image$$DDR_NONCACHE_REGION_ACIPC_OTHER_UL$$Base)
|
|
#define LT_ACIPC_END (UINT32)(&Image$$DDR_NONCACHE_REGION_ACIPC_OTHER_DL_ENDMARKER$$Base)
|
|
#else
|
|
#define LT_ACIPC_BEGIN ((UINT32)INVALID_ADDRESS)
|
|
#define LT_ACIPC_END ((UINT32)INVALID_ADDRESS)
|
|
#endif
|
|
#define LT_CP_LOAD_ADDR (UINT32)(&Image$$DDR_RO_INIT_CODE$$Base)
|
|
|
|
#define LT_MSA_ADDR_BEGIN (UINT32)(&Image$$DDR_DSP_RO$$Base)
|
|
#define LT_MSA_ADDR_END (UINT32)(&Image$$DDR_DSP_RO_ENDMARK$$Base)
|
|
|
|
#define LT_ACIPC_PS_UL_BEGIN (UINT32)(&Image$$DDR_NONCACHE_REGION_ACIPC_PS_UL$$Base)
|
|
#define LT_ACIPC_PS_UL_END (UINT32)(&Image$$DDR_NONCACHE_REGION_ACIPC_PS_UL_ENDMARKER$$Base)
|
|
#define LT_ACIPC_PS_DL_BEGIN (UINT32)(&Image$$DDR_NONCACHE_REGION_ACIPC_PS_DL$$Base)
|
|
#define LT_ACIPC_PS_DL_END (UINT32)(&Image$$DDR_NONCACHE_REGION_ACIPC_PS_DL_ENDMARKER$$Base)//(UINT32)(LT_ACIPC_PS_DL_BEGIN+0x100000-4)
|
|
|
|
#if 0
|
|
#define LT_ACIPC_OTHER_UL_BEGIN (UINT32)(&Image$$DDR_NONCACHE_REGION_ACIPC_OTHER_UL$$Base)
|
|
#define LT_ACIPC_OTHER_UL_END (UINT32)(&Image$$DDR_NONCACHE_REGION_ACIPC_OTHER_UL_ENDMARKER$$Base)
|
|
#define LT_ACIPC_OTHER_DL_BEGIN (UINT32)(&Image$$DDR_NONCACHE_REGION_ACIPC_OTHER_DL$$Base)
|
|
#define LT_ACIPC_OTHER_DL_END (UINT32)(&Image$$DDR_NONCACHE_REGION_ACIPC_OTHER_DL_ENDMARKER$$Base)
|
|
#define LT_ACIPC_PS_KS_BEGIN (UINT32)(&Image$$DDR_NONCACHE_REGION_ACIPC_PS_KeySection$$Base)
|
|
#define LT_ACIPC_PS_KS_END (UINT32)(&Image$$DDR_NONCACHE_REGION_ACIPC_PS_KeySection_ENDMARKER$$Base)
|
|
#define LT_ACIPC_OTHER_KS_BEGIN (UINT32)(&Image$$DDR_NONCACHE_REGION_ACIPC_OTHER_KeySection$$Base)
|
|
#define LT_ACIPC_OTHER_KS_END (UINT32)(&Image$$DDR_NONCACHE_REGION_ACIPC_OTHER_KeySection_ENDMARKER$$Base)
|
|
#define LT_ACIPC_DIAG_UL_BEGIN (UINT32)(&Image$$DDR_NONCACHE_REGION_ACIPC_DIAG_UL$$Base)
|
|
#define LT_ACIPC_DIAG_UL_END (UINT32)(&Image$$DDR_NONCACHE_REGION_ACIPC_DIAG_UL_ENDMARKER$$Base)
|
|
#define LT_ACIPC_DIAG_DL_BEGIN (UINT32)(&Image$$DDR_NONCACHE_REGION_ACIPC_DIAG_DL$$Base)
|
|
#define LT_ACIPC_DIAG_DL_END (UINT32)(&Image$$DDR_NONCACHE_REGION_ACIPC_DIAG_DL_ENDMARKER$$Base)
|
|
#define LT_ACIPC_DIAG_KS_BEGIN (UINT32)(&Image$$DDR_NONCACHE_REGION_ACIPC_DIAG_KeySection$$Base)
|
|
#define LT_ACIPC_DIAG_KS_END (UINT32)(&Image$$DDR_NONCACHE_REGION_ACIPC_DIAG_KeySection_ENDMARKER$$Base)
|
|
#else
|
|
#define LT_ACIPC_OTHER_UL_BEGIN ((UINT32)INVALID_ADDRESS)
|
|
#define LT_ACIPC_OTHER_UL_END ((UINT32)INVALID_ADDRESS)
|
|
#define LT_ACIPC_OTHER_DL_BEGIN ((UINT32)INVALID_ADDRESS)
|
|
#define LT_ACIPC_OTHER_DL_END ((UINT32)INVALID_ADDRESS)
|
|
#define LT_ACIPC_PS_KS_BEGIN ((UINT32)INVALID_ADDRESS)
|
|
#define LT_ACIPC_PS_KS_END ((UINT32)INVALID_ADDRESS)
|
|
#define LT_ACIPC_OTHER_KS_BEGIN ((UINT32)INVALID_ADDRESS)
|
|
#define LT_ACIPC_OTHER_KS_END ((UINT32)INVALID_ADDRESS)
|
|
#define LT_ACIPC_DIAG_UL_BEGIN ((UINT32)INVALID_ADDRESS)
|
|
#define LT_ACIPC_DIAG_UL_END ((UINT32)INVALID_ADDRESS)
|
|
#define LT_ACIPC_DIAG_DL_BEGIN ((UINT32)INVALID_ADDRESS)
|
|
#define LT_ACIPC_DIAG_DL_END ((UINT32)INVALID_ADDRESS)
|
|
#define LT_ACIPC_DIAG_KS_BEGIN ((UINT32)INVALID_ADDRESS)
|
|
#define LT_ACIPC_DIAG_KS_END ((UINT32)INVALID_ADDRESS)
|
|
#endif
|
|
#define LT_MEMLOG_BEGIN ((UINT32)(&Image$$DDR_NONCACHE_REGION_MEMLOG$$Base))
|
|
#define LT_MEMLOG_END (LT_MEMLOG_BEGIN + 16 * 1024)
|
|
|
|
#if 0
|
|
#define LT_RFBIN_BEGIN ((UINT32)(&Image$$DDR_RFBIN_RO$$Base))
|
|
#define LT_RFBIN_END (LT_RFBIN_BEGIN + 256 * 1024)
|
|
#else
|
|
#define LT_RFBIN_BEGIN ((UINT32)INVALID_ADDRESS)
|
|
#define LT_RFBIN_END ((UINT32)INVALID_ADDRESS)
|
|
#endif
|
|
|
|
#if 0
|
|
#define LT_RFS_BEGIN ((UINT32)(&Image$$DDR_RFS_AREA$$Base))
|
|
#define LT_RFS_END ((UINT32)(&Image$$DDR_RFS_AREA_ENDMARK$$Base))
|
|
#else
|
|
#define LT_RFS_BEGIN ((UINT32)INVALID_ADDRESS)
|
|
#define LT_RFS_END ((UINT32)INVALID_ADDRESS)
|
|
#endif
|
|
|
|
#define LT_NVM_OTA_BEGIN ((UINT32)(&Image$$NVMBUF$$Base))
|
|
#define LT_NVM_OTA_END ((UINT32)(&Image$$NVMBUF$$Base)+0x8000-4)
|
|
|
|
#define LT_MEP_OTA_BEGIN ((UINT32)(&Image$$NVMBUF$$Base))
|
|
#define LT_MEP_OTA_END ((UINT32)(&Image$$NVMBUF$$Base)+0x8000-4)
|
|
|
|
|
|
#ifdef PHS_SW_TTC_CPONLY
|
|
#define DIAG_PTR2PTR_Q (UINT32)INVALID_ADDRESS
|
|
#define DIAG_PTR2PTR_REPORT (UINT32)INVALID_ADDRESS
|
|
#else
|
|
#define DIAG_PTR2PTR_Q (UINT32)(&_diagIntIfQPtrData)
|
|
#define DIAG_PTR2PTR_REPORT (UINT32)(&_diagIntIfReportsList)
|
|
#endif
|
|
|
|
|
|
#endif
|
|
//add for fota on psram use mmipool
|
|
|
|
#ifdef DLDATA_IN_PSRAM
|
|
extern unsigned char mmiPool[];
|
|
extern const unsigned int mmiPoolSize;
|
|
#define MMIPOOL_BEGIN ((UINT32)(&mmiPool))
|
|
#define MMIPOOL_SIZE_ADDR ((UINT32)(&mmiPoolSize))
|
|
#else
|
|
#define MMIPOOL_BEGIN ((UINT32)(INVALID_ADDRESS))
|
|
#define MMIPOOL_SIZE_ADDR ((UINT32)(INVALID_ADDRESS))
|
|
#endif
|
|
|
|
#ifdef CRANE_MCU_DONGLE
|
|
extern UINT32 Image$$DDR_RO_EXEC$$Base;
|
|
extern UINT32 Image$$DDR_RO_EXEC$$Length;
|
|
#define DDR_RO_EXEC_ADDR ((UINT32)(&Image$$DDR_RO_EXEC$$Base))
|
|
#define DDR_RO_EXEC_SIZE_ADDR ((UINT32)(&Image$$DDR_RO_EXEC$$Length))
|
|
#else
|
|
#define DDR_RO_EXEC_ADDR ((UINT32)(INVALID_ADDRESS))
|
|
#define DDR_RO_EXEC_SIZE_ADDR ((UINT32)(INVALID_ADDRESS))
|
|
#endif
|
|
const LoadTableType loadTable =
|
|
{
|
|
//++++++++++++++++++++++++++++++++++++++++++++++++++
|
|
//AREA_1: LOADTABLE_HEADER
|
|
{
|
|
{
|
|
(UINT32)LT_BRANCH_TO_ENTRY_OPCODE,
|
|
(UINT32)LT_ENTRY_POINT
|
|
}
|
|
},
|
|
//++++++++++++++++++++++++++++++++++++++++++++++++++
|
|
//AREA_2: VERSION & SIGNATURE
|
|
{
|
|
{
|
|
LT_ANTI_ROLLBACK_VER,
|
|
LT_EXECUTE_MODE,
|
|
LT_PS_MODE,
|
|
"IMAGE_GENERAL_INFO" // filled by external script
|
|
}
|
|
},
|
|
//++++++++++++++++++++++++++++++++++++++++++++++++++
|
|
//AREA_3: RW COMPRESS REGION SYMBOL
|
|
#if (defined(SINGLE_SIM) || defined(CRANELS_8MRAM4MFLASH_MULTI_LOADTABLE))
|
|
{
|
|
{
|
|
EXTERNAL_RW_REGION_PRE_STRING,'1',"DDR_RW_\0", DDR_RW_DATA_IMAGE_ADDR, DDR_RW_DATA_LOAD_ADDR, DDR_RW_DATA_LENGTH, (UINT32)0 //DDR_RW_DATA
|
|
,EXTERNAL_RW_REGION_PRE_STRING,'2',"PS_NCAH\0", PS_NONCACHE_DATA_IMAGE_ADDR, PS_NONCACHE_DATA_LOAD_ADDR, PS_NONCACHE_DATA_LENGTH, (UINT32)0 //PS_NONCACHE_DATA
|
|
,EXTERNAL_RW_REGION_PRE_STRING,'3',"ITCM \0", DDR_ITCM_BACKUP_ADDR, DDR_ITCM_LOAD_ADDR, DDR_ITCM_LENGTH, (UINT32)0 //DDR_ITCM
|
|
,EXTERNAL_RW_REGION_PRE_STRING,'4',"CODE_PS\0", PS_CODE_IN_PSRAM_IMAGE_ADDR, PS_CODE_IN_PSRAM_LOAD_ADDR, PS_CODE_IN_PSRAM_LENGTH, (UINT32)0 //PS_CODE_IN_PSRAM
|
|
#if (defined(LTEONLY_THIN_SINGLE_SIM_2MFLASH) || defined(CRANELS_8MRAM4MFLASH_MULTI_LOADTABLE))
|
|
#if (defined(QUECTEL_MINIFOTA_SUPPORT) || defined(QUEC_NOTA_EXT_FLASH_SUPPORT))//@20240511 修复BDA 2M项目外挂flash,开机无法运行问题
|
|
|
|
,EXTERNAL_RW_REGION_PRE_STRING,'5',"CODEPSB\0", PSB_CODE_IN_PSRAM_IMAGE_ADDR, PSB_CODE_IN_PSRAM_LOAD_ADDR, PSB_CODE_IN_PSRAM_LENGTH, (UINT32)0 //PS_CODE_IN_PSRAM
|
|
,EXTERNAL_RW_REGION_PRE_STRING,'6',"CODEPSC\0", PSC_CODE_IN_PSRAM_IMAGE_ADDR, PSC_CODE_IN_PSRAM_LOAD_ADDR, PSC_CODE_IN_PSRAM_LENGTH, (UINT32)0 //PS_CODE_IN_PSRAM
|
|
,EXTERNAL_RW_REGION_PRE_STRING,'7',"CODEPSD\0", PSD_CODE_IN_PSRAM_IMAGE_ADDR, PSD_CODE_IN_PSRAM_LOAD_ADDR, PSD_CODE_IN_PSRAM_LENGTH, (UINT32)0 //PS_CODE_IN_PSRAM
|
|
,EXTERNAL_RW_REGION_PRE_STRING,'8',"CODEPSE\0", PSE_CODE_IN_PSRAM_IMAGE_ADDR, PSE_CODE_IN_PSRAM_LOAD_ADDR, PSE_CODE_IN_PSRAM_LENGTH, (UINT32)0 //PS_CODE_IN_PSRAM
|
|
,EXTERNAL_RW_REGION_PRE_STRING,'9',"CODEPSF\0", PSF_CODE_IN_PSRAM_IMAGE_ADDR, PSF_CODE_IN_PSRAM_LOAD_ADDR, PSF_CODE_IN_PSRAM_LENGTH, (UINT32)0 //PS_CODE_IN_PSRAM
|
|
,EXTERNAL_RW_REGION_PRE_STRING,'A',"CODE_PL\0", PLA_CODE_IN_PSRAM_IMAGE_ADDR, PLA_CODE_IN_PSRAM_LOAD_ADDR, PLA_CODE_IN_PSRAM_LENGTH, (UINT32)0 //PL_CODE_IN_PSRAM
|
|
,EXTERNAL_RW_REGION_PRE_STRING,'B',"CODEPLB\0", PLB_CODE_IN_PSRAM_IMAGE_ADDR, PLB_CODE_IN_PSRAM_LOAD_ADDR, PLB_CODE_IN_PSRAM_LENGTH, (UINT32)0 //PL_CODE_IN_PSRAM
|
|
,EXTERNAL_RW_REGION_PRE_STRING,'C',"CODEPLC\0", PLC_CODE_IN_PSRAM_IMAGE_ADDR, PLC_CODE_IN_PSRAM_LOAD_ADDR, PLC_CODE_IN_PSRAM_LENGTH, (UINT32)0 //PL_CODE_IN_PSRAM
|
|
#endif
|
|
|
|
#elif defined(SUPPORT_VOLTE_4MPSRAM4MFLASH)
|
|
,EXTERNAL_RW_REGION_PRE_STRING,'5',"CODEPSB\0", PSB_CODE_IN_PSRAM_IMAGE_ADDR, PSB_CODE_IN_PSRAM_LOAD_ADDR, PSB_CODE_IN_PSRAM_LENGTH, (UINT32)0 //PS_CODE_IN_PSRAM
|
|
,EXTERNAL_RW_REGION_PRE_STRING,'6',"CODEPSC\0", PSC_CODE_IN_PSRAM_IMAGE_ADDR, PSC_CODE_IN_PSRAM_LOAD_ADDR, PSC_CODE_IN_PSRAM_LENGTH, (UINT32)0 //PS_CODE_IN_PSRAM
|
|
,EXTERNAL_RW_REGION_PRE_STRING,'7',"CODEPSD\0", PSD_CODE_IN_PSRAM_IMAGE_ADDR, PSD_CODE_IN_PSRAM_LOAD_ADDR, PSD_CODE_IN_PSRAM_LENGTH, (UINT32)0 //PS_CODE_IN_PSRAM
|
|
,EXTERNAL_RW_REGION_PRE_STRING,'8',"CODEPSE\0", PSE_CODE_IN_PSRAM_IMAGE_ADDR, PSE_CODE_IN_PSRAM_LOAD_ADDR, PSE_CODE_IN_PSRAM_LENGTH, (UINT32)0 //PS_CODE_IN_PSRAM
|
|
#elif (defined(CRANEM_SS_16MRAM) && defined(LTEGSM_THIN))
|
|
,EXTERNAL_RW_REGION_PRE_STRING,'5',"CODEPSB\0", PSB_CODE_IN_PSRAM_IMAGE_ADDR, PSB_CODE_IN_PSRAM_LOAD_ADDR, PSB_CODE_IN_PSRAM_LENGTH, (UINT32)0 //AP_CODE_IN_PSRAM
|
|
,EXTERNAL_RW_REGION_PRE_STRING,'6',"CODEPSC\0", PSC_CODE_IN_PSRAM_IMAGE_ADDR, PSC_CODE_IN_PSRAM_LOAD_ADDR, PSC_CODE_IN_PSRAM_LENGTH, (UINT32)0 //PS_CODE_IN_PSRAM
|
|
,EXTERNAL_RW_REGION_PRE_STRING,'7',"CODE_PL\0", PL_CODE_IN_PSRAM_IMAGE_ADDR, PL_CODE_IN_PSRAM_LOAD_ADDR, PL_CODE_IN_PSRAM_LENGTH, (UINT32)0 //PL_CODE_IN_PSRAM
|
|
,EXTERNAL_RW_REGION_PRE_STRING,'8',"CODEPLB\0", PLB_CODE_IN_PSRAM_IMAGE_ADDR, PLB_CODE_IN_PSRAM_LOAD_ADDR, PLB_CODE_IN_PSRAM_LENGTH, (UINT32)0 //PL_CODE_IN_PSRAM
|
|
#elif defined(CRANELG_4MRAM4MFLASH_SINGLE_SIM_SMS) || defined(LTEGSM_THIN) //quectel pony add ltegsm_thin for ims fota
|
|
,EXTERNAL_RW_REGION_PRE_STRING,'5',"CODEPSB\0", PSB_CODE_IN_PSRAM_IMAGE_ADDR, PSB_CODE_IN_PSRAM_LOAD_ADDR, PSB_CODE_IN_PSRAM_LENGTH, (UINT32)0 //PS_CODE_IN_PSRAM
|
|
#endif
|
|
}
|
|
},
|
|
#else
|
|
{
|
|
{
|
|
EXTERNAL_RW_REGION_PRE_STRING,'1',"DDR_RW_\0", DDR_RW_DATA_IMAGE_ADDR, DDR_RW_DATA_LOAD_ADDR, DDR_RW_DATA_LENGTH, (UINT32)0 //DDR_RW_DATA
|
|
,EXTERNAL_RW_REGION_PRE_STRING,'2',"PS_NCAH\0", PS_NONCACHE_DATA_IMAGE_ADDR, PS_NONCACHE_DATA_LOAD_ADDR, PS_NONCACHE_DATA_LENGTH, (UINT32)0 //PS_NONCACHE_DATA
|
|
#if (defined(CRANEL_4MRAM) || defined(CRANEL_8MRAM) || defined(LTEGSM_THIN))
|
|
,EXTERNAL_RW_REGION_PRE_STRING,'3',"ITCM\0", DDR_ITCM_BACKUP_ADDR, DDR_ITCM_LOAD_ADDR, DDR_ITCM_LENGTH, (UINT32)0 //DDR_ITCM
|
|
#else
|
|
,EXTERNAL_RW_REGION_PRE_STRING,'3',"USBNCAH\0", DDR_NONCACHE_USB_IMAGE_ADDR, DDR_NONCACHE_USB_LOAD_ADDR, DDR_NONCACHE_USB_LENGTH, (UINT32)0 //DDR_NONCACHE_USB
|
|
#endif
|
|
#ifdef RUN_XIP_MODE
|
|
,EXTERNAL_RW_REGION_PRE_STRING,'4',"CODE_PS\0", PS_CODE_IN_PSRAM_IMAGE_ADDR, PS_CODE_IN_PSRAM_LOAD_ADDR, PS_CODE_IN_PSRAM_LENGTH, (UINT32)0 //PS_CODE_IN_PSRAM
|
|
#endif
|
|
#ifdef CRANE_MCU_DONGLE
|
|
#if (!defined(LZOP_SUPPORT) && !defined(LTEONLY_8M8M) && !defined(CRANEL_4MRAM) && !defined(LTEGSM_THIN))
|
|
,EXTERNAL_RW_REGION_PRE_STRING,'5',"CODEPSB\0", PSB_CODE_IN_PSRAM_IMAGE_ADDR, PSB_CODE_IN_PSRAM_LOAD_ADDR, PSB_CODE_IN_PSRAM_LENGTH, (UINT32)0 //AP_CODE_IN_PSRAM
|
|
,EXTERNAL_RW_REGION_PRE_STRING,'6',"CODE_PL\0", PL_CODE_IN_PSRAM_IMAGE_ADDR, PL_CODE_IN_PSRAM_LOAD_ADDR, PL_CODE_IN_PSRAM_LENGTH, (UINT32)0 //PL_CODE_IN_PSRAM
|
|
,EXTERNAL_RW_REGION_PRE_STRING,'7',"NON_OTA\0", NON_OTA_CODE_IN_PSRAM_IMAGE_ADDR, NON_OTA_CODE_IN_PSRAM_LOAD_ADDR, NON_OTA_CODE_IN_PSRAM_LENGTH, (UINT32)0 //DDR_NONCACHE_USB
|
|
|
|
#endif
|
|
#endif
|
|
}
|
|
},
|
|
#endif
|
|
//++++++++++++++++++++++++++++++++++++++++++++++++++
|
|
//AREA_4: ARMLINKE SYMBOL LIST
|
|
{
|
|
{
|
|
//cp.bin
|
|
{"CP_EXEC\0", (UINT32)(&Image$$DDR_RO_INIT_CODE$$Base)}, // "CP_EXEC" bind with /tavor/Arbel/build/external_rw_region_compress.pl base address detect. should not change.
|
|
{"CP_LOAD\0", (UINT32)(INVALID_ADDRESS)},
|
|
{"IMG_END\0", LT_IMAGE_END},
|
|
{"BIN_SIZE\0", (UINT32)(INVALID_ADDRESS)}, //filled by external perl script after image build
|
|
//dsp.bin
|
|
{"DSP_BEGIN\0", (UINT32)(&Image$$DDR_DSP_RO$$Base)},
|
|
{"DSP_END\0", (UINT32)(&Image$$DDR_DSP_RO_ENDMARK$$Base)},
|
|
//rf.bin
|
|
{"RF_ADDR_Z2\0", LT_RF_LOAD_ADDR_Z2}, //RF.bin psram load address for Z2
|
|
{"RF_ADDR_A0\0", LT_RF_LOAD_ADDR_A0}, //RF.bin psram load address for A0
|
|
//rd.bin
|
|
{"RD_BEGIN\0", (UINT32)(RD_START)},
|
|
{"RD_END\0", (UINT32)(RD_START + RD_PSIZE)},
|
|
//apn.bin
|
|
{"APN_BEGIN\0", (UINT32)(APN_START)},
|
|
{"APN_END\0", (UINT32)(APN_START + APN_PSIZE)},
|
|
//fota_param
|
|
{"FOTA_PRM_S\0", (UINT32)(INVALID_ADDRESS)},
|
|
{"FOTA_PRM_E\0", (UINT32)(INVALID_ADDRESS)},
|
|
//updater
|
|
{"UPDATER_S\0", (UINT32)(INVALID_ADDRESS)},
|
|
{"UPDATER_E\0", (UINT32)(INVALID_ADDRESS)},
|
|
//fota_pkg
|
|
{"FOTA_PKG_S\0", (UINT32)(INVALID_ADDRESS)},
|
|
{"FOTA_PKG_E\0", (UINT32)(INVALID_ADDRESS)},
|
|
//nvm
|
|
{"NVM_BEGIN\0", (UINT32)(INVALID_ADDRESS)},
|
|
{"NVM_END\0", (UINT32)(INVALID_ADDRESS)},
|
|
//factory_a
|
|
{"F_A_START\0", (UINT32)(FLASH_TRAIL - FACTORY_PSIZE*2)},
|
|
{"F_A_END\0", (UINT32)(FLASH_TRAIL - FACTORY_PSIZE)},
|
|
#if (defined(CRANEL_4MRAM) || defined(CRANEL_8MRAM) || defined(LTEGSM_THIN))
|
|
{"OTA_MT\0", (UINT32)(OTA_MT)},
|
|
{"F_B_END\0", (UINT32)(FLASH_TRAIL)},
|
|
#else
|
|
//factory_b
|
|
{"F_B_START\0", (UINT32)(FLASH_TRAIL - FACTORY_PSIZE)},
|
|
{"F_B_END\0", (UINT32)(FLASH_TRAIL)},
|
|
#endif
|
|
#ifdef CRANE_MCU_DONGLE
|
|
//DDR_RO_EXEC
|
|
{"DDR_RO_ADD\0", (UINT32)(DDR_RO_EXEC_ADDR)},
|
|
{"DDR_RO_LEN\0", (UINT32)(DDR_RO_EXEC_SIZE_ADDR)},
|
|
#else
|
|
//MMIPOOL
|
|
{"MMIPOOL_BG\0", (UINT32)(MMIPOOL_BEGIN)},
|
|
{"MMIPOOL_SZ\0", (UINT32)(MMIPOOL_SIZE_ADDR)},
|
|
#endif
|
|
|
|
#if (defined(CRANEL_4MRAM) || defined(CRANEL_8MRAM))
|
|
#if defined(SINGLE_SIM)
|
|
#if (defined(CRANEL_AUDIOE_DSP))
|
|
//for dsp audio optimized baseon reduce sulog irbuf
|
|
//for 760K ddr DSP
|
|
{"HEAP_GU_BG\0", DDR_HEAP_GUARD_ADDR},
|
|
{"RF_BACKUP\0", DDR_NONCACHE_RF_BK_ADDR},
|
|
{"DSPBK_SIZE\0", CRANEL_AUDIOE_DSP_SIZE},
|
|
#elif defined(REDUCE_SULOG_IRBUF_DSP)
|
|
//for reduce sulog irbuf dsp
|
|
//for 292K DSP
|
|
{"HEAP_GU_BG\0", DDR_HEAP_GUARD_ADDR},
|
|
{"RF_BACKUP\0", DDR_NONCACHE_RF_BK_ADDR},
|
|
#if ((defined(CRANELR_SUPPORT) && defined(L1_WIFI_LOCATION)) || defined(CRANELG_SUPPORT) || defined(CRANELRH_SUPPORT))
|
|
{"DSPBK_SIZE\0", 0x0003E000+0x00002800},//craneLR reduce sulog irbuf DSP,support WIFI scan,DSP size 258K
|
|
#elif (defined(CRANELR_SUPPORT) || defined(CRANELS_SUPPORT))
|
|
{"DSPBK_SIZE\0", 0x0003E000},////craneLR and craneLS reduce sulog irbuf DSP,craneLR not support WIFI scan,DSP size 248K
|
|
#else
|
|
{"DSPBK_SIZE\0", 0x0004C000},//craneL reduce sulog irbuf DSP,DSP size 248K,but have ITCM header,total 304KB
|
|
#endif
|
|
#elif !defined(NOT_REDUCE_SULOG_DSP)
|
|
//for reduce sulog dsp
|
|
//for 328K DSP
|
|
{"HEAP_GU_BG\0", DDR_HEAP_GUARD_ADDR},
|
|
{"RF_BACKUP\0", DDR_NONCACHE_RF_BK_ADDR},
|
|
{"DSPBK_SIZE\0", 0x00052000},//dsp size 328K
|
|
#else
|
|
//for 448K DSP
|
|
{"HEAP_GU_BG\0", DDR_HEAP_GUARD_ADDR},
|
|
{"RF_BACKUP\0", DDR_HEAP_GUARD_END_ADDR},
|
|
{"DSPBK_SIZE\0", 0x00070000},//dsp size 448K
|
|
#endif
|
|
|
|
#else
|
|
#if (defined(CRANEL_AUDIOE_DSP))
|
|
//for dsp audio optimized baseon reduce sulog irbuf
|
|
//for 760K ddr DSP
|
|
{"HEAP_GU_BG\0", 0x7E0E0000},
|
|
{"RF_BACKUP\0", DDR_NONCACHE_RF_BK_ADDR},
|
|
{"DSPBK_SIZE\0", CRANEL_AUDIOE_DSP_SIZE},
|
|
#elif defined(REDUCE_SULOG_IRBUF_DSP)
|
|
#if defined(CRANELS_SUPPORT)
|
|
//for 248K DSP
|
|
{"HEAP_GU_BG\0", 0x7E0E0000},//0x7E0E0000 is logo.bin end address
|
|
{"RF_BACKUP\0", DDR_NONCACHE_RF_BK_ADDR},
|
|
{"DSPBK_SIZE\0", 0x0003E000},//dsp size 248K
|
|
#else
|
|
//for 304K DSP
|
|
{"HEAP_GU_BG\0", 0x7E0E0000},//0x7E0E0000 is logo.bin end address
|
|
{"RF_BACKUP\0", DDR_NONCACHE_PS_DL_LOAD_ADDR},
|
|
{"DSPBK_SIZE\0", 0x0004C000},//dsp size 304K
|
|
#endif
|
|
#else
|
|
//for 448K DSP
|
|
{"HEAP_GU_BG\0", 0x7E0E0000},//0x7E0E0000 is logo.bin end address
|
|
{"HEAP_GU_ED\0", DDR_HEAP_GUARD_END_ADDR},
|
|
{"DSPBK_SIZE\0", 0x00070000},//dsp size 448K
|
|
#endif
|
|
#endif
|
|
#else
|
|
#if defined(LTEGSM_THIN)
|
|
//for 2.25M DSP, yqian
|
|
{"HEAP_GU_BG\0", DDR_HEAP_GUARD_ADDR},
|
|
{"RF_BACKUP\0", DDR_NONCACHE_RF_BK_ADDR},
|
|
{"DSPBK_SIZE\0", 0x100000},
|
|
#else
|
|
//for 2.25M DSP, yqian
|
|
{"HEAP_GU_BG\0", DDR_HEAP_GUARD_ADDR},
|
|
{"HEAP_GU_ED\0", DDR_HEAP_GUARD_END_ADDR},
|
|
{"DSPBK_SIZE\0", 0x100000},
|
|
#endif
|
|
#endif
|
|
|
|
|
|
}
|
|
},
|
|
//++++++++++++++++++++++++++++++++++++++++++++++++++
|
|
//AREA_5: FUNCTIONAL VAL
|
|
{
|
|
{
|
|
{"VERGIN\0", 0xFFFFFFFF}, //vergin by default , boot33 may update this field.
|
|
{"BOOTCOUNT\0", 0xFFFFFFFF}, //disable auto bootcount++ to avoid boot33 qspi erase & write.
|
|
{"UART_PRT\0", 1}, //uart_print_enable by default, boot33 may update this field.
|
|
{"FATAL_PRT\0", 1}, //fatal_print_enable by default, boot33 may update this field.
|
|
{"DEF_FREQ\0", 0xFFFFFFFF}, //default freq. TODO:further porting
|
|
{"CORE_VOL\0", 0xFFFFFFFF}, //default host voltage. TODO: further porting
|
|
}
|
|
}
|
|
};
|
|
|
|
LoadTableType *pLoadTable = (LoadTableType*)INVALID_ADDRESS;
|
|
|
|
|
|
UINT32 get_mmipool_start_address(void)
|
|
{
|
|
#ifdef CRANE_MCU_DONGLE
|
|
return 0;
|
|
#else
|
|
return pLoadTable->lt_area_armlink_symbol.armlink_symbol_info.mmipool_start_address.value;
|
|
#endif
|
|
}
|
|
|
|
UINT32 get_mmipool_end_address(void)
|
|
{
|
|
#ifdef CRANE_MCU_DONGLE
|
|
return 0;
|
|
#else
|
|
return (UINT32)( pLoadTable->lt_area_armlink_symbol.armlink_symbol_info.mmipool_start_address.value
|
|
+ (UINT32)(*(UINT32 *)(pLoadTable->lt_area_armlink_symbol.armlink_symbol_info.mmipool_size_address.value)));
|
|
#endif
|
|
}
|
|
|
|
BOOL is_partition_internal_flash(const char *name){
|
|
|
|
_ptflash tmp = ptable_get_flash_type(name);
|
|
|
|
return (tmp == pt_flash_internal);
|
|
}
|
|
|
|
UINT32 get_nvm_start_address(void)
|
|
{
|
|
#if 1
|
|
_ptentry * nvm_start_Entry= ptable_find_entry("nvm");
|
|
|
|
if(is_partition_internal_flash("nvm"))
|
|
return nvm_start_Entry->start; /* 3601s internal spi nor flash */
|
|
else
|
|
return nvm_start_Entry->vstart; /* 3601 or external */
|
|
#else
|
|
return pLoadTable->lt_area_armlink_symbol.armlink_symbol_info.nvm_start_address.value;
|
|
#endif
|
|
}
|
|
|
|
UINT32 get_nvm_end_address(void)
|
|
{
|
|
#if 1
|
|
_ptentry * nvm_end_Entry= ptable_find_entry("nvm");
|
|
|
|
if(is_partition_internal_flash("nvm"))
|
|
return nvm_end_Entry->start+nvm_end_Entry->size;
|
|
else
|
|
return nvm_end_Entry->vstart+nvm_end_Entry->size;
|
|
#else
|
|
return pLoadTable->lt_area_armlink_symbol.armlink_symbol_info.nvm_end_address.value;
|
|
#endif
|
|
}
|
|
|
|
UINT32 get_nvm_bin_size(void)
|
|
{
|
|
_ptentry * nvm_begin_Entry= ptable_find_entry("nvm");
|
|
return nvm_begin_Entry->vsize;
|
|
}
|
|
#ifdef QUEC_NVM_IN_EXT_FLASH
|
|
UINT32 get_cust_nvm_start_address(void)
|
|
{
|
|
#if 1
|
|
_ptentry * nvm_start_Entry= ptable_find_entry("cust_nvm");
|
|
|
|
if(is_partition_internal_flash("cust_nvm"))
|
|
return nvm_start_Entry->start;
|
|
else
|
|
return nvm_start_Entry->vstart;
|
|
#else
|
|
return pLoadTable->lt_area_armlink_symbol.armlink_symbol_info.nvm_start_address.value;
|
|
#endif
|
|
}
|
|
|
|
UINT32 get_cust_nvm_end_address(void)
|
|
{
|
|
#if 1
|
|
_ptentry * nvm_end_Entry= ptable_find_entry("cust_nvm");
|
|
|
|
if(is_partition_internal_flash("cust_nvm"))
|
|
return nvm_end_Entry->start+nvm_end_Entry->size;
|
|
else
|
|
return nvm_end_Entry->vstart+nvm_end_Entry->size;
|
|
#else
|
|
return pLoadTable->lt_area_armlink_symbol.armlink_symbol_info.nvm_end_address.value;
|
|
#endif
|
|
}
|
|
|
|
UINT32 get_cust_nvm_bin_size(void)
|
|
{
|
|
_ptentry * nvm_begin_Entry= ptable_find_entry("cust_nvm");
|
|
return nvm_begin_Entry->vsize;
|
|
}
|
|
#endif
|
|
UINT32 get_rd_begin_address(void)
|
|
{
|
|
#if 1
|
|
_ptentry * rd_begin_Entry= ptable_find_entry("rd");
|
|
return rd_begin_Entry->vstart;
|
|
#else
|
|
return pLoadTable->lt_area_armlink_symbol.armlink_symbol_info.rd_begin_addr.value;
|
|
#endif
|
|
}
|
|
|
|
UINT32 get_rd_end_address(void)
|
|
{
|
|
#if 1
|
|
_ptentry * rd_end_Entry= ptable_find_entry("rd");
|
|
return rd_end_Entry->vstart+rd_end_Entry->size;
|
|
#else
|
|
return pLoadTable->lt_area_armlink_symbol.armlink_symbol_info.rd_end_addr.value;
|
|
#endif
|
|
}
|
|
|
|
// BT_SUPPORT
|
|
UINT32 get_btbin_begin_address(void)
|
|
{
|
|
_ptentry * btbin_begin_Entry = ptable_find_entry("btbin");
|
|
return btbin_begin_Entry->vstart;
|
|
}
|
|
|
|
UINT32 get_btbin_end_address(void)
|
|
{
|
|
_ptentry * btbin_end_Entry = ptable_find_entry("btbin");
|
|
return btbin_end_Entry->vstart + btbin_end_Entry->size;
|
|
}
|
|
|
|
UINT32 get_btbin_bin_size(void)
|
|
{
|
|
_ptentry * btbin_begin_Entry = ptable_find_entry("btbin");
|
|
return btbin_begin_Entry->vsize;
|
|
}
|
|
|
|
UINT32 get_btlst_begin_address(void)
|
|
{
|
|
_ptentry * btlst_begin_Entry = ptable_find_entry("btlst");
|
|
return btlst_begin_Entry->vstart;
|
|
}
|
|
|
|
UINT32 get_btlst_end_address(void)
|
|
{
|
|
_ptentry * btlst_end_Entry = ptable_find_entry("btlst");
|
|
return btlst_end_Entry->vstart + btlst_end_Entry->size;
|
|
}
|
|
|
|
UINT32 get_btlst_bin_size(void)
|
|
{
|
|
_ptentry * btlst_begin_Entry = ptable_find_entry("btlst");
|
|
return btlst_begin_Entry->vsize;
|
|
}
|
|
|
|
UINT32 get_apn_begin_address(void)
|
|
{
|
|
#if 1
|
|
_ptentry * apn_begin_Entry= ptable_find_entry("apn");
|
|
if (apn_begin_Entry)
|
|
return apn_begin_Entry->vstart;
|
|
else
|
|
return 0;
|
|
#else
|
|
return pLoadTable->lt_area_armlink_symbol.armlink_symbol_info.apn_begin_addr.value;
|
|
#endif
|
|
}
|
|
|
|
UINT32 get_apn_end_address(void)
|
|
{
|
|
#if 1
|
|
_ptentry * apn_end_Entry= ptable_find_entry("apn");
|
|
if (apn_end_Entry)
|
|
return apn_end_Entry->vstart+apn_end_Entry->size;
|
|
else
|
|
return 0;
|
|
#else
|
|
return pLoadTable->lt_area_armlink_symbol.armlink_symbol_info.apn_end_addr.value;
|
|
#endif
|
|
}
|
|
|
|
UINT32 get_apn_bin_size(void)
|
|
{
|
|
_ptentry * apn_begin_Entry= ptable_find_entry("apn");
|
|
if (apn_begin_Entry)
|
|
return apn_begin_Entry->vsize;
|
|
else
|
|
return 0;
|
|
}
|
|
|
|
UINT32 get_apn_ex_begin_address(void)
|
|
{
|
|
_ptentry * apn_begin_Entry= ptable_find_entry("apn_ex");
|
|
if (apn_begin_Entry)
|
|
return apn_begin_Entry->vstart;
|
|
else
|
|
return 0;
|
|
}
|
|
|
|
UINT32 get_apn_ex_end_address(void)
|
|
{
|
|
_ptentry * apn_end_Entry= ptable_find_entry("apn_ex");
|
|
if (apn_end_Entry)
|
|
return apn_end_Entry->vstart+apn_end_Entry->size;
|
|
else
|
|
return 0;
|
|
}
|
|
|
|
UINT32 get_apn_ex_bin_size(void)
|
|
{
|
|
_ptentry * apn_begin_Entry= ptable_find_entry("apn_ex");
|
|
if (apn_begin_Entry)
|
|
return apn_begin_Entry->vsize;
|
|
else
|
|
return 0;
|
|
}
|
|
|
|
UINT32 get_legabin_begin_address(void)
|
|
{
|
|
#if 1
|
|
_ptentry * legabin_begin_Entry= ptable_find_entry("legabin");
|
|
return legabin_begin_Entry->vstart;
|
|
#else
|
|
return pLoadTable->lt_area_armlink_symbol.armlink_symbol_info.legabin_begin_addr.value;
|
|
#endif
|
|
}
|
|
|
|
UINT32 get_legabin_end_address(void)
|
|
{
|
|
#if 1
|
|
_ptentry * legabin_end_Entry= ptable_find_entry("legabin");
|
|
return legabin_end_Entry->vstart+legabin_end_Entry->size;
|
|
#else
|
|
return pLoadTable->lt_area_armlink_symbol.armlink_symbol_info.legabin_end_addr.value;
|
|
#endif
|
|
}
|
|
|
|
|
|
UINT32 get_factory_a_start_address(void)
|
|
{
|
|
#if 1
|
|
_ptentry * factory_a_begin_Entry= ptable_find_entry("factory_a");
|
|
return factory_a_begin_Entry->vstart;
|
|
#else
|
|
return pLoadTable->lt_area_armlink_symbol.armlink_symbol_info.factory_a_start_address.value;
|
|
#endif
|
|
|
|
}
|
|
|
|
UINT32 get_factory_a_end_address(void)
|
|
{
|
|
#if 1
|
|
_ptentry * factory_a_end_Entry= ptable_find_entry("factory_a");
|
|
return factory_a_end_Entry->vstart+factory_a_end_Entry->size;
|
|
#else
|
|
return pLoadTable->lt_area_armlink_symbol.armlink_symbol_info.factory_a_end_address.value;
|
|
#endif
|
|
|
|
}
|
|
|
|
UINT32 get_factory_b_start_address(void)
|
|
{
|
|
#if 1
|
|
_ptentry * factory_b_begin_Entry= ptable_find_entry("factory_b");
|
|
return factory_b_begin_Entry->vstart;
|
|
#else
|
|
return pLoadTable->lt_area_armlink_symbol.armlink_symbol_info.factory_b_start_address.value;
|
|
#endif
|
|
|
|
}
|
|
UINT32 get_factory_a_bin_size(void)
|
|
{
|
|
_ptentry * factory_a_begin_Entry= ptable_find_entry("factory_a");
|
|
return factory_a_begin_Entry->vsize;
|
|
}
|
|
|
|
|
|
UINT32 get_factory_b_end_address(void)
|
|
{
|
|
#if 1
|
|
_ptentry * factory_b_end_Entry= ptable_find_entry("factory_b");
|
|
return factory_b_end_Entry->vstart+factory_b_end_Entry->size;
|
|
#else
|
|
return pLoadTable->lt_area_armlink_symbol.armlink_symbol_info.factory_b_end_address.value;
|
|
#endif
|
|
|
|
}
|
|
|
|
UINT32 get_fota_param_start_address(void)
|
|
{
|
|
#if 1
|
|
_ptentry * fota_param_begin_Entry= ptable_find_entry("fota_param");
|
|
return fota_param_begin_Entry->vstart;
|
|
#else
|
|
return pLoadTable->lt_area_armlink_symbol.armlink_symbol_info.fota_param_start_address.value;
|
|
#endif
|
|
}
|
|
|
|
UINT32 get_fota_param_end_address(void)
|
|
{
|
|
#if 1
|
|
_ptentry * fota_param_end_Entry= ptable_find_entry("fota_param");
|
|
return fota_param_end_Entry->vstart+fota_param_end_Entry->size;
|
|
#else
|
|
return pLoadTable->lt_area_armlink_symbol.armlink_symbol_info.fota_param_end_address.value;
|
|
#endif
|
|
}
|
|
|
|
UINT32 get_fota_pkg_start_address(void)
|
|
{
|
|
#if 1
|
|
_ptentry * fota_pkg_begin_Entry= ptable_find_entry("fota_pkg");
|
|
return fota_pkg_begin_Entry->vstart;
|
|
#else
|
|
return pLoadTable->lt_area_armlink_symbol.armlink_symbol_info.fota_pkg_start_address.value;
|
|
#endif
|
|
}
|
|
|
|
UINT32 get_fota_pkg_end_address(void)
|
|
{
|
|
#if 1
|
|
_ptentry * fota_pkg_end_Entry= ptable_find_entry("fota_pkg");
|
|
return fota_pkg_end_Entry->vstart+fota_pkg_end_Entry->size;
|
|
#else
|
|
return pLoadTable->lt_area_armlink_symbol.armlink_symbol_info.fota_param_end_address.value;
|
|
#endif
|
|
}
|
|
UINT32 get_system_start_address(void)
|
|
{
|
|
#if 1
|
|
_ptentry * fota_pkg_begin_Entry= ptable_find_entry("system");
|
|
return fota_pkg_begin_Entry->vstart;
|
|
#else
|
|
return pLoadTable->lt_area_armlink_symbol.armlink_symbol_info.fota_pkg_start_address.value;
|
|
#endif
|
|
}
|
|
|
|
UINT32 get_system_end_address(void)
|
|
{
|
|
#if 1
|
|
_ptentry * fota_pkg_end_Entry= ptable_find_entry("system");
|
|
return fota_pkg_end_Entry->vstart+fota_pkg_end_Entry->size;
|
|
#else
|
|
return pLoadTable->lt_area_armlink_symbol.armlink_symbol_info.fota_param_end_address.value;
|
|
#endif
|
|
}
|
|
|
|
UINT32 get_updater_start_address(void)
|
|
{
|
|
_ptentry * fota_pkg_begin_Entry= ptable_find_entry("updater");
|
|
if(fota_pkg_begin_Entry)
|
|
return fota_pkg_begin_Entry->vstart;
|
|
else
|
|
return NULL;
|
|
}
|
|
|
|
UINT32 get_updater_end_address(void)
|
|
{
|
|
_ptentry * fota_pkg_end_Entry= ptable_find_entry("updater");
|
|
if(fota_pkg_end_Entry)
|
|
return fota_pkg_end_Entry->vstart + fota_pkg_end_Entry->size;
|
|
else
|
|
return NULL;
|
|
}
|
|
|
|
|
|
UINT32 get_updater_backup_start_address(void)
|
|
{
|
|
_ptentry * fota_pkg_begin_Entry= ptable_find_entry("updater_bak");
|
|
if(fota_pkg_begin_Entry)
|
|
return fota_pkg_begin_Entry->vstart;
|
|
else
|
|
return NULL;
|
|
}
|
|
|
|
UINT32 get_updater_backup_end_address(void)
|
|
{
|
|
_ptentry * fota_pkg_end_Entry= ptable_find_entry("updater_bak");
|
|
if(fota_pkg_end_Entry)
|
|
return fota_pkg_end_Entry->vstart + fota_pkg_end_Entry->size;
|
|
else
|
|
return NULL;
|
|
}
|
|
|
|
UINT32 get_updater_copy_size(void)
|
|
{
|
|
_ptentry * fota_pkg_Entry= ptable_find_entry("updater");
|
|
if(fota_pkg_Entry)
|
|
return fota_pkg_Entry->size;
|
|
else
|
|
return 0;
|
|
}
|
|
|
|
|
|
UINT32 get_cp_binary_size(void){
|
|
return pLoadTable->lt_area_armlink_symbol.armlink_symbol_info.binary_size.value;
|
|
}
|
|
|
|
UINT32 get_dsp_copy_size(void)
|
|
{
|
|
return pLoadTable->lt_area_armlink_symbol.armlink_symbol_info.dsp_end_addr.value - pLoadTable->lt_area_armlink_symbol.armlink_symbol_info.dsp_begin_addr.value + 0x04;
|
|
}
|
|
|
|
UINT32 get_ddr_heap_size(void)
|
|
{
|
|
return pLoadTable->lt_area_armlink_symbol.armlink_symbol_info.ddr_heap_guard_end_addr.value - pLoadTable->lt_area_armlink_symbol.armlink_symbol_info.ddr_heap_guard_begin_addr.value + 0x04;
|
|
}
|
|
|
|
UINT32 get_dsp_backup_addr(void)
|
|
{
|
|
return pLoadTable->lt_area_armlink_symbol.armlink_symbol_info.ddr_heap_guard_begin_addr.value;
|
|
}
|
|
|
|
UINT32 get_dsp_backup_size(void)
|
|
{
|
|
return pLoadTable->lt_area_armlink_symbol.armlink_symbol_info.dsp_bk_size.value;
|
|
}
|
|
|
|
|
|
|
|
UINT32 get_dsp_start_address(void)
|
|
{
|
|
_ptentry * dsp_begin_Entry= ptable_find_entry("dsp");
|
|
|
|
if(is_partition_internal_flash("dsp"))
|
|
return dsp_begin_Entry->start; /* 3601s internal spi nor flash */
|
|
else
|
|
return dsp_begin_Entry->vstart; /* 3601 or external */
|
|
}
|
|
|
|
UINT32 get_dsp_partition_size(void)
|
|
{
|
|
_ptentry * dsp_begin_Entry= ptable_find_entry("dsp");
|
|
return dsp_begin_Entry->size;
|
|
}
|
|
|
|
UINT32 get_dsp_bin_size(void)
|
|
{
|
|
_ptentry * dsp_begin_Entry= ptable_find_entry("dsp");
|
|
return dsp_begin_Entry->vsize;
|
|
}
|
|
|
|
UINT32 get_rf_start_address(void)
|
|
{
|
|
_ptentry * rf_begin_Entry= ptable_find_entry("rfbin");
|
|
|
|
if(is_partition_internal_flash("rfbin"))
|
|
return rf_begin_Entry->start; /* 3601s internal spi nor flash */
|
|
else
|
|
return rf_begin_Entry->vstart; /* 3601 or external */
|
|
}
|
|
|
|
UINT32 get_rf_partition_size(void)
|
|
{
|
|
_ptentry * rf_begin_Entry= ptable_find_entry("rfbin");
|
|
return rf_begin_Entry->size;
|
|
}
|
|
|
|
UINT32 get_rf_bin_size(void)
|
|
{
|
|
_ptentry * rf_begin_Entry= ptable_find_entry("rfbin");
|
|
return rf_begin_Entry->vsize;
|
|
}
|
|
|
|
#ifdef OPENCPU_SUPPORT
|
|
UINT32 get_app_begin_address(void)
|
|
{
|
|
_ptentry * apn_begin_Entry= ptable_find_entry("app");
|
|
return apn_begin_Entry->vstart;
|
|
}
|
|
|
|
UINT32 get_app_end_address(void)
|
|
{
|
|
_ptentry * apn_end_Entry= ptable_find_entry("app");
|
|
return apn_end_Entry->vstart+apn_end_Entry->size;
|
|
}
|
|
|
|
UINT32 get_app_bin_size(void)
|
|
{
|
|
_ptentry * apn_begin_Entry= ptable_find_entry("app");
|
|
return apn_begin_Entry->vsize;
|
|
}
|
|
|
|
UINT32 get_app_load_addr(void)
|
|
{
|
|
return DDR_APP_IMAGE_BASE_ADDR;
|
|
}
|
|
|
|
UINT32 get_app_area_length(void)
|
|
{
|
|
return (DDR_APP_IMAGE_END_ADDR - DDR_APP_IMAGE_BASE_ADDR);
|
|
}
|
|
#endif
|
|
|
|
//xiaokeweng@20191008 flash cache_line auto config
|
|
//for partition table , the XIP code part should be cacheable
|
|
//but the NVM/factory/fota_pkg should always be noncache ,
|
|
//so implement solution to detect the cache_line address
|
|
//aligned inside [dsp_start_addr ~ reserved_end_addr] for C-code MPU audo reconfig
|
|
//
|
|
UINT32 get_dsp_start_address_offset(void)
|
|
{
|
|
_ptentry * dsp_begin_Entry= ptable_find_entry("dsp");
|
|
return dsp_begin_Entry->start;//Entry->start addr as expection
|
|
}
|
|
|
|
|
|
UINT32 get_reserved_start_address(void)
|
|
{
|
|
_ptentry * reserved_end_Entry= ptable_find_entry("reserved");
|
|
return reserved_end_Entry->vstart;
|
|
|
|
}
|
|
|
|
UINT32 get_reserved_end_address(void)
|
|
{
|
|
_ptentry * reserved_end_Entry= ptable_find_entry("reserved");
|
|
return reserved_end_Entry->vstart + reserved_end_Entry->vsize;
|
|
|
|
}
|
|
|
|
|
|
UINT32 get_reserved_end_address_offset(void)
|
|
{
|
|
#if 1
|
|
_ptentry * reserved_end_Entry= ptable_find_entry("reserved");
|
|
return reserved_end_Entry->start+reserved_end_Entry->size;
|
|
#else
|
|
ASSERT(0);
|
|
#endif
|
|
}
|
|
#ifdef QUECTEL_PROJECT_CUST
|
|
|
|
unsigned int get_bootloader_end_address(void)
|
|
{
|
|
#if 1
|
|
_ptentry * bootloader_end_Entry= ptable_find_entry("bootloader");
|
|
return bootloader_end_Entry->vstart + bootloader_end_Entry->vsize;
|
|
#else
|
|
return pLoadTable->lt_area_armlink_symbol.armlink_symbol_info.factory_b_start_address.value;
|
|
#endif
|
|
}
|
|
|
|
|
|
|
|
#endif
|
|
|
|
#ifdef QUECTEL_OPEN_CPU
|
|
UINT32 get_flash_cache_end_address_offset(void)
|
|
{
|
|
_ptentry * reserved_end_Entry= ptable_find_entry("customer_app");
|
|
if((reserved_end_Entry == NULL)||((unsigned int)reserved_end_Entry->vstart >= 0x90000000))/*���customer_app���������flash�ͷ���reserve��ַ*/
|
|
{
|
|
reserved_end_Entry= ptable_find_entry("reserved");
|
|
if(reserved_end_Entry == NULL)
|
|
ASSERT(0);
|
|
}
|
|
return reserved_end_Entry->start+reserved_end_Entry->size;
|
|
}
|
|
#endif
|
|
|
|
UINT32 get_rf_load_addr(void)
|
|
{
|
|
UINT32 rf_load_addr;
|
|
|
|
rf_load_addr = pLoadTable->lt_area_armlink_symbol.armlink_symbol_info.rf_load_addr_a0.value;
|
|
|
|
return rf_load_addr;
|
|
}
|
|
|
|
|
|
|
|
|
|
UINT32 getCommImageBaseAddr(void)
|
|
{
|
|
#if 1 //LOADTABLE_REFACTOR@xiaokeweng_20190423
|
|
return(LT_IMAGE_BEGIN);
|
|
#endif //LOADTABLE_REFACTOR@xiaokeweng_20190423
|
|
}
|
|
|
|
void getAppComShareMemAddr(UINT32* begin, UINT32* end)
|
|
{
|
|
#if 1 //LOADTABLE_REFACTOR@xiaokeweng_20190423
|
|
*begin = INVALID_ADDRESS;
|
|
*end = INVALID_ADDRESS;
|
|
#endif //LOADTABLE_REFACTOR@xiaokeweng_20190423
|
|
}
|
|
|
|
void getAppCom_RDATA_MemAddr(UINT32* begin, UINT32* end)
|
|
{
|
|
*begin=get_factory_a_start_address();
|
|
*end=get_factory_a_end_address()-4-0x1000;
|
|
}
|
|
|
|
void getAppCom_RDATA_Bak_MemAddr(UINT32* begin, UINT32* end)
|
|
{
|
|
*begin=get_factory_b_start_address();
|
|
*end=get_factory_b_end_address()-4-0x1000;
|
|
}
|
|
|
|
|
|
|
|
|
|
void getAppCom_APRDATA_MemAddr(UINT32* begin, UINT32* end)
|
|
{
|
|
*begin=get_rd_begin_address();
|
|
*end=get_rd_end_address()-4;
|
|
}
|
|
|
|
|
|
void commImageTableInit(void)
|
|
{
|
|
pLoadTable = (LoadTableType*)&loadTable;
|
|
}
|
|
|
|
//xiaoke@20190303 ++ external LZOP RW compress
|
|
BOOL whether_RW_region_compressed(void){
|
|
BOOL ret = FALSE;
|
|
char tmp_pre_string[] = EXTERNAL_RW_REGION_PRE_STRING;
|
|
ASSERT((UINT32)pLoadTable != INVALID_ADDRESS);//commImageTableInit not available
|
|
|
|
rw_region_item tmp_cur_item;
|
|
|
|
//check the first item only
|
|
tmp_cur_item = pLoadTable->lt_area_rw_cpz_info.compress_rw_region_list[0];
|
|
|
|
if(!memcmp(tmp_cur_item.RW_REGION_MARK, tmp_pre_string, (sizeof(tmp_pre_string)-1) )){
|
|
//RW_REGION_MARK detected inside loadtable
|
|
if(tmp_cur_item.RW_REGION_COMPRESSED_ADDR == EXTERNAL_RW_REGION_COMPRESS_ADD_NULL){
|
|
//not compressed by external script, only do RW copy from Load_addr to Exec_addr
|
|
ret = FALSE;
|
|
}else{
|
|
//compressed image
|
|
ret = TRUE;
|
|
}
|
|
}
|
|
return ret;
|
|
}
|
|
//xiaoke@20190303 --
|
|
|
|
UINT32 getCommNumOfLife(void)
|
|
{
|
|
UINT32 numOfLife =0;
|
|
#if 0 //LOADTABLE_REFACTOR@xiaokeweng_20190423 for build pass
|
|
if((UINT32)pLoadTable != INVALID_ADDRESS)
|
|
numOfLife = pLoadTable->u.stLoadTable.numOfLife;
|
|
#endif
|
|
return (numOfLife);
|
|
}
|
|
|
|
BOOL StrtupIsPowerup(void)
|
|
{
|
|
return (getCommNumOfLife()<=1);
|
|
}
|
|
|
|
void incrementCommNumOfLife(void)
|
|
{
|
|
#if 0 //LOADTABLE_REFACTOR@xiaokeweng_20190423 for build pass
|
|
pLoadTable->u.stLoadTable.numOfLife++;
|
|
#endif
|
|
}
|
|
|
|
UINT32 get_rw_cpz_struct_addr(void)
|
|
{
|
|
return (unsigned int)pLoadTable->lt_area_rw_cpz_info.compress_rw_region_list;
|
|
}
|
|
|
|
UINT32 get_gpsfw_begin_addr(void)
|
|
{
|
|
_ptentry *gpsfw_begin_Entry = ptable_find_entry("jacana_fw");
|
|
|
|
if( gpsfw_begin_Entry ){
|
|
return gpsfw_begin_Entry->vstart;
|
|
}else{
|
|
return NULL;
|
|
}
|
|
}
|
|
|
|
UINT32 get_gpsfw_bin_size(void)
|
|
{
|
|
_ptentry *gpsfw_begin_Entry = ptable_find_entry("jacana_fw");
|
|
|
|
if( gpsfw_begin_Entry ){
|
|
return gpsfw_begin_Entry->vsize;
|
|
}else{
|
|
return NULL;
|
|
}
|
|
}
|
|
|
|
UINT32 get_gpspvt_begin_addr(void)
|
|
{
|
|
_ptentry *gpspvt_begin_Entry = ptable_find_entry("jacana_pvt");
|
|
|
|
if( gpspvt_begin_Entry ){
|
|
return gpspvt_begin_Entry->vstart;
|
|
}else{
|
|
return NULL;
|
|
}
|
|
}
|
|
|
|
UINT32 get_gpspvt_bin_size(void)
|
|
{
|
|
_ptentry *gpspvt_begin_Entry = ptable_find_entry("jacana_pvt");
|
|
|
|
if( gpspvt_begin_Entry ){
|
|
return gpspvt_begin_Entry->vsize;
|
|
}else{
|
|
return NULL;
|
|
}
|
|
}
|
|
|
|
BOOL IsHeapMemory(UINT8* pMem)
|
|
{
|
|
if(((UINT32)pMem >= (UINT32)(&Image$$DDR_HEAP_GUARD$$Base)) &&
|
|
((UINT32)pMem < (UINT32)(&Image$$DDR_HEAP_ENDMARK$$Base)))
|
|
{
|
|
return TRUE;
|
|
}
|
|
else
|
|
{
|
|
return FALSE;
|
|
}
|
|
}
|
|
#ifdef QUECTEL_PROJECT_CUST
|
|
UINT32 quec_get_patition_start_address(const char *patition_name)
|
|
{
|
|
#if 1
|
|
_ptentry * get_patition_start_Entry= ptable_find_entry(patition_name);
|
|
if(get_patition_start_Entry==NULL)
|
|
return 0;
|
|
return get_patition_start_Entry->vstart;
|
|
#else
|
|
return pLoadTable->lt_area_armlink_symbol.armlink_symbol_info.nvm_start_address.value;
|
|
#endif
|
|
}
|
|
|
|
UINT32 quec_get_patition_end_address(const char *patition_name)
|
|
{
|
|
#if 1
|
|
_ptentry * get_patition_end_Entry= ptable_find_entry(patition_name);
|
|
if(get_patition_end_Entry==NULL)
|
|
return 0;
|
|
return get_patition_end_Entry->vstart+get_patition_end_Entry->size;
|
|
#else
|
|
return pLoadTable->lt_area_armlink_symbol.armlink_symbol_info.nvm_end_address.value;
|
|
#endif
|
|
}
|
|
|
|
UINT32 quec_get_customer_fs_start_address(void)
|
|
{
|
|
#if 1
|
|
_ptentry * customer_fs_start_Entry= ptable_find_entry("customer_fs");
|
|
if(customer_fs_start_Entry==NULL)
|
|
return 0;
|
|
return customer_fs_start_Entry->vstart;
|
|
#else
|
|
return pLoadTable->lt_area_armlink_symbol.armlink_symbol_info.nvm_start_address.value;
|
|
#endif
|
|
}
|
|
|
|
UINT32 quec_get_customer_fs_end_address(void)
|
|
{
|
|
#if 1
|
|
_ptentry * customer_fs_end_Entry= ptable_find_entry("customer_fs");
|
|
if(customer_fs_end_Entry==NULL)
|
|
return 0;
|
|
return customer_fs_end_Entry->vstart+customer_fs_end_Entry->size;
|
|
#else
|
|
return pLoadTable->lt_area_armlink_symbol.armlink_symbol_info.nvm_end_address.value;
|
|
#endif
|
|
}
|
|
|
|
UINT32 quec_get_customer_backup_fs_start_address(void)
|
|
{
|
|
#if 1
|
|
_ptentry * customer_backup_fs_start_Entry= ptable_find_entry("customer_backup_fs");
|
|
if(customer_backup_fs_start_Entry==NULL)
|
|
return 0;
|
|
return customer_backup_fs_start_Entry->vstart;
|
|
#else
|
|
return pLoadTable->lt_area_armlink_symbol.armlink_symbol_info.nvm_start_address.value;
|
|
#endif
|
|
}
|
|
|
|
UINT32 quec_get_customer_backup_fs_end_address(void)
|
|
{
|
|
#if 1
|
|
_ptentry * customer_backup_fs_end_Entry= ptable_find_entry("customer_backup_fs");
|
|
if(customer_backup_fs_end_Entry==NULL)
|
|
return 0;
|
|
return customer_backup_fs_end_Entry->vstart+customer_backup_fs_end_Entry->size;
|
|
#else
|
|
return pLoadTable->lt_area_armlink_symbol.armlink_symbol_info.nvm_end_address.value;
|
|
#endif
|
|
}
|
|
|
|
#endif
|
|
|
|
|
|
|