⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 init.c

📁 MTK debug flash 兼容性的code
💻 C
📖 第 1 页 / 共 5 页
字号:
 * removed!
 * removed!
 * removed!
 * removed!
 * removed!
 * removed!
 * removed!
 * removed!
 * removed!
 * removed!
 * removed!
 * removed!
 * removed!
 * removed!
 * removed!
 * removed!
 * removed!
 * removed!
 * removed!
 * removed!
 * removed!
 * removed!
 * removed!
 * removed!
 * removed!
 * removed!
 * removed!
 * removed!
 * removed!
 * removed!
 * removed!
 * removed!
 * removed!
 * removed!
 *
 * removed!
 * removed!
 * removed!
 *
 * removed!
 * removed!
 * removed!
 *
 * removed!
 * removed!
 * removed!
 *
 * removed!
 * removed!
 * removed!
 *
 * removed!
 * removed!
 * removed!
 *
 * removed!
 * removed!
 * removed!
 *
 * removed!
 * removed!
 * removed!
 *
 * removed!
 * removed!
 *
 * removed!
 * removed!
 * removed!
 *
 * removed!
 * removed!
 *
 * removed!
 * removed!
 * removed!
 *
 * removed!
 * removed!
 * removed!
 *
 * removed!
 * removed!
 * removed!
 *
 * removed!
 * removed!
 * removed!
 *
 * removed!
 * removed!
 * removed!
 *
 * removed!
 * removed!
 * removed!
 *
 * removed!
 * removed!
 * removed!
 *
 * removed!
 * removed!
 * removed!
 *
 * removed!
 * removed!
 * removed!
 *
 * removed!
 * removed!
 * removed!
 *
 * removed!
 * removed!
 * removed!
 *
 * removed!
 * removed!
 * removed!
 *
 * removed!
 * removed!
 * removed!
 *
 * removed!
 * removed!
 * removed!
 *
 * removed!
 * removed!
 * removed!
 *
 * removed!
 * removed!
 * removed!
 *
 * removed!
 * removed!
 * removed!
 *
 * removed!
 * removed!
 * removed!
 *
 * removed!
 * removed!
 * removed!
 *
 * removed!
 * removed!
 * removed!
 *
 * removed!
 * removed!
 * removed!
 *
 * removed!
 * removed!
 * removed!
 *
 * removed!
 * removed!
 * removed!
 *
 * removed!
 * removed!
 *
 * removed!
 * removed!
 *
 * removed!
 * removed!
 *
 * removed!
 * removed!
 *
 * removed!
 * removed!
 *
 * removed!
 * removed!
 *
 * removed!
 * removed!
 *------------------------------------------------------------------------------
 * Upper this line, this part is controlled by PVCS VM. DO NOT MODIFY!!
 *============================================================================
 ****************************************************************************/

/*******************************************************************************
 * Include header files
 *******************************************************************************/

#include "kal_release.h"
#include "reg_base.h"
#include "init.h"
#include "intrCtrl.h"
#include "isrentry.h"
#include "custom_config.h"
#include "stack_buff_pool.h"
#include "fat_fs.h"
#include "drv_comm.h"
#include "bmt.h"
#include "pwic.h"
#include "wdt_sw.h"
#include "bl_MTK_BB_REG.h"
#include "drvpdn.h"
#include <stdio.h>
#include <string.h>
#include <rt_misc.h>   /* for __rt_lib_init() */
#include <stdlib.h>
#ifdef __CHIP_VERSION_CHECK__
#include "Uart_sw.h"
#endif /* __CHIP_VERSION_CHECK__ */

#if defined(MT6208)
#include "drv_comm.h"
#include "wdt_sw.h"
#endif /* MT6208 */

#ifdef __MULTI_BOOT__
#include "syscomp_config.h"
#include "multiboot_config.h"
#endif   /*__MULTI_BOOT__*/

#include "gpio_sw.h"


/*******************************************************************************
 * Define pragma
 *******************************************************************************/

#ifdef __ADS__
#if (!defined(MT6208) && !defined(MT6205B))
#pragma import __use_realtime_division
#endif   /* !MT6208 && MT6205B */
#else   /* __ADS__ */
#pragma import __use_realtime_division
#endif   /* __ADS__ */
#define MANUFACTURE_ID_ADDR 0x80030100//flash id is saved in DMA register
#define DEV_ID_ADDR 0x80030200
#define EXT_DEV1_ID_ADDR 0x80030104
#define EXT_DEV2_ID_ADDR 0x80030204
#define EMI_LOCATION_ADDR 0x80030300//FOR save flash location in the flash_timing_table(debug use)
#define TEST_MEMORY 0X1234ABCD//for caculate sram size
#ifdef REMAPPING
#define EXTRAM_32MADDR 0x00400400
#define EXTRAM_0MADDR  0X00000400
#else
#define EXTRAM_32MADDR 0x08400400
#define EXTRAM_0MADDR  0x08000400//for caculate sram size
#endif
extern kal_uint32 EMI_EXTSRAM_SIZE;
/*******************************************************************************
 * Define global data
 *******************************************************************************/

static kal_uint16 _boot_mode = 0 /* NORMAL Mode */;
kal_uint32 rand_num_seed;
static kal_uint16 _32khz_gpio_pin = 0xFFFF;
static kal_uint16 _32khz_gpio_data = 0xFFFF;
static kal_uint32 _32khz_user_cnt;
extern kal_uint16 gManufacture_code;
extern kal_uint16 gDev_code;
extern kal_uint16 gExt_dev_code1;
extern kal_uint16 gExt_dev_code2;
extern kal_uint32 gFatsize;
extern kal_uint32 gfat_base_addr;
extern kal_uint8 drv_dbg;//location of flash in initialize_fdd_table() flash_setting table  debug use
kal_uint8 emi_dbg;//location of flash in custom_setemi() timing table debug use
kal_uint8 flash_driver_dbg;//driver used in flash_amd_mtd.c    debug use

/*
 * Need to use a segment of internal RAM to generate randum number seed.
 * We pick up address 0x40002000 since it won't be modified by other
 * program such as bootloader.
 */
static const kal_uint32 RAND_GEN_START_ADDR = 0x40002000;


/*******************************************************************************
 * Declare import data
 *******************************************************************************/

extern BMTStruct BMT;          /* Main BMT struct */
extern boot_mode_type system_boot_mode;
extern kal_uint32 SYS_Stack_Pool[];


/*******************************************************************************
 * Declare import function prototype 
 *******************************************************************************/

static void systemIntialization(void);
static void HWDInitialization(void);
static void systemInitializeResource(void);

#if defined(KAL_ON_NUCLEUS) && defined(NU_DEBUG)
#define RTOS_DEBUG
#endif	/* KAL_ON_NUCLEUS && NU_DEBUG */

#if defined(KAL_ON_THREADX) && !defined(TX_DISABLE_ERROR_CHECKING)
#define RTOS_DEBUG
#endif	/* KAL_ON_THREADX && !TX_DISABLE_ERROR_CHECKING */

#if defined(KAL_ON_OSCAR)
#define RTOS_DEBUG
#endif  /* KAL_ON_OSCAR */

#define _SST_FUNCTION_ENABLE_

#ifdef _SST_FUNCTION_ENABLE_
/* under construction !*/
#endif  /* _SST_FUNCTION_ENABLE_ */

extern int  mainp(void);
extern void Drv_Init_Phase1(void);
extern void Drv_Init_Phase2(void);
extern int  stack_check_msgid_range(void);
extern void kal_initialize_mem(void);
extern void fatal_error_handler( kal_uint8 *, kal_int32, kal_int32);
extern kal_char *release_dsp_fw(void);
extern kal_char *release_dsp_ptch(void);
extern kal_char *release_verno(void);
extern kal_char *release_branch(void);
extern kal_char *release_hw_ver(void);

#ifdef _MAUI_SOFTWARE_LA_
/* under construction !*/
#endif /* _MAUI_SOFTWARE_LA_ */

#if !defined(__L1_STANDALONE__) && !defined(EMPTY_MMI)
extern void  MMICheckDiskDisplay(void);
#endif

#ifdef IDMA_DOWNLOAD
extern void idma_load(void);
#endif /* IDMA_DOWNLOAD */

#ifdef MTK_SLEEP_ENABLE
extern void L1SM_Init( void );
#endif

#ifndef L1_NOT_PRESENT
extern void L1D_SetInitMode( kal_int16 mode );
#endif /* !L1_NOT_PRESENT */

#if !defined(__MAUI_BASIC__)
extern void Initialize_FDD_tables(void);
extern int Check_NORFlash_Formatted(void);
#endif

#ifdef __USB_ENABLE__
extern kal_bool INT_USBBoot(void);
extern void isrCTIRQ1_USBPowerOn(void);
#endif /*__USB_ENABLE__*/

#if ( (defined(__MTK_TARGET__) || defined (MTK_KAL_MNT)) && !defined(__MAUI_BASIC__) && !defined(__L1_STANDALONE__)  && !defined(EMPTY_MMI) ) 
extern void InitializeResourceVariables(void);
#endif /* __MTK_TARGET__ || MTK_KAL_MNT */

#ifdef _NAND_FLASH_BOOTING_
extern kal_bool NFB_SecondaryImageLoaded;
extern void NFB_LoadingSecondaryMAUI(void);
extern void NFB_InitThirdROM(void);
#endif

#ifdef __CHIP_VERSION_CHECK__
extern void U_PutUARTByte(UART_PORT port, kal_uint8 data);
#endif /* __CHIP_VERSION_CHECK__ */


	
	



/*************************************************************************
* FUNCTION
*  INT_SetPLL
*
* DESCRIPTION
*  This function dedicates for PLL setting.
*
* CALLS
*  Non
*
* PARAMETERS
*
* RETURNS
*
* GLOBALS AFFECTED
*
*************************************************************************/
void INT_SetPLL(void)
{
#ifdef MT6205B

#if defined(EXT_26M)
   
   /*for DSP configuration*/
   *(volatile kal_uint16 *)PDN_CLR0 =  0x8000;			/* PDN_CON0 turn on DSP div by 2 */
   *(volatile kal_uint16 *)CLK_CON |= 0x0001;      /* DSP div by 2 */
    
#if defined(MCU_26M)
   *(volatile kal_uint16 *)MPLL = 0x0001;       /* MCU - MCU Frequency register on MT6205B */
#elif defined (MCU_13M) /* MCU_26M */
   *(volatile kal_uint16 *)PDN_CLR0 = 0x1000;			/* PDN_CON0 turn on MCU div by 2 */
   *(volatile kal_uint16 *)CLK_CON |= 0x0008;   /* MCU div by 2 */
   *(volatile kal_uint16 *)MPLL = 0x0000;       /* MCU - MCU Frequency register on MT6205B */
#endif /* MCU_26M */
      
#endif /* EXT_26M */
      
#ifndef __MAUI_BASIC__
   *(volatile kal_uint16*)PREFETCH_CON = 0x0003;
#endif /* !__MAUI_BASIC__ */

#endif   /* MT6205B */


#if defined(MT6208) && defined(EXT_13M)
{
   kal_uint32 delay;

   /* configuration for MT6208, which features 13, 26, 39 and 52MHz */
   *(volatile kal_uint16 *)PDN_SET0 = 0xa807;
   *(volatile kal_uint16 *)PDN_CLR0 = ~0xa807;

#ifdef MPLLX1
   *(volatile kal_uint16 *)MPLL = 0x0000;
#elif defined(MPLLX2)
   *(volatile kal_uint16 *)MPLL = 0x0001;
#elif defined(MPLLX3)
   *(volatile kal_uint16 *)MPLL = 0x0002;
#elif defined(MPLLX4)
   *(volatile kal_uint16 *)MPLL = 0x0003;
#endif /* MPLL */

   for (delay=0;delay<1000;delay++);

   *(volatile kal_uint16 *)CLK_CON = 0x0002;

#ifdef MPLLX1
#ifndef __MAUI_BASIC__
   /* For stability issue */
   *(volatile kal_uint16*)PREFETCH_CON = 0x0003;
#endif /* !__MAUI_BASIC__ */
#endif /* MPLLX1 */
}
#endif /* MT6208 && EXT_13M */


#if defined(MT6218) || defined(MT6218B) || defined(MT6219)
{
   kal_uint16 i;

#ifdef MCU_52M

#ifdef EXT_26M

   // Power on DSP_DIV2, MPLL, DPLL, MCU_DIV2, and CLKSQ
   *(volatile kal_uint16 *)PDN_CLR0   	= ~0x04ff;
   // Enable MCU clock divider
   *(volatile kal_uint16 *)0x80000108 = 0x0008;
   // Reset the MPLL and setting MPLL to 52MHz
   *(volatile kal_uint16 *)0x80000100 = 0x0083;
   *(volatile kal_uint16 *)0x80000100 = 0x0003;
   // delay until PLL is stable
   for (i=0;i<200;i++);
   // Enable MPLL output
   *(volatile kal_uint16 *)0x80000108 = 0x000a;

#elif defined (EXT_13M) /* EXT_26M */

   // Power on MPLL, DPLL and CLKSQ
   *(volatile kal_uint16 *)PDN_CLR0   	= ~0x94ff;
   // Reset the MPLL and setting MPLL to 52MHz
   *(volatile kal_uint16 *)0x80000100 = 0x0083;
   *(volatile kal_uint16 *)0x80000100 = 0x0003;
   // delay until PLL is stable
   for (i=0;i<200;i++);
   // Enable MPLL output
   *(volatile kal_uint16 *)0x80000108 = 0x0002;
   
#endif   /* EXT_26M */

#elif defined (MCU_26M) /* MCU_52M */

#ifdef EXT_26M

    // Power on DSP_DIV2, MPLL, DPLL, MCU_DIV2, and CLKSQ
    *(volatile kal_uint16 *)PDN_CLR0   	= ~0x04ff;
    // Enable MCU clock divider
    *(volatile kal_uint16 *)0x80000108 = 0x0008;
    // Reset the MPLL and setting MPLL to 26MHz
    *(volatile kal_uint16 *)0x80000100 = 0x0081;
    *(volatile kal_uint16 *)0x80000100 = 0x0001;
    // delay until PLL is stable
    for (i=0;i<200;i++);
    // Enable MPLL output
    *(volatile kal_uint16 *)0x80000108 = 0x000a;

#elif defined (EXT_13M) /* EXT_26M */

    // Power on CLKSQ
    *(volatile kal_uint16 *)PDN_CLR0   	= ~0x94ff;
    // Reset the MPLL and setting MPLL to 26MHz
    *(volatile kal_uint16 *)0x80000100 = 0x0081;
    *(volatile kal_uint16 *)0x80000100 = 0x0001;
    // delay until PLL is stable
    for (i=0;i<200;i++);
    // Enable MPLL output
    *(volatile kal_uint16 *)0x80000108 = 0x0002;
      
#endif   /* EXT_26M */

#endif   /* MCU_52M */
}
#endif   /* MT6218 || MT6218B || MT6219 */


#if defined(MT6217) || defined(MT6226) || defined(MT6227) || defined(MT6226M) || defined(MT6227D) || defined(MT6226D)
{
	kal_uint16 i;

#ifdef EXT_26M

   // Power on DSP_DIV2, MPLL, DPLL, MCU_DIV2, and CLKSQ
    *(volatile kal_uint16 *)PDN_CLR0   	= ~0x04ff;
   // Enable MCU clock divider
   *(volatile kal_uint16 *)0x80000108 = 0x0008;
   // Reset the MPLL and setting MPLL to 52MHz
#if defined(MT6217)
   *(volatile kal_uint16 *)0x80000100 = 0x0083;
   *(volatile kal_uint16 *)0x80000100 = 0x0003;
#else /* MT6217 */
   *(volatile kal_uint16 *)0x80000100 = 0x0084;
   *(volatile kal_uint16 *)0x80000100 = 0x0004;
#endif   /* MT6217 */

	// delay until PLL is stable
	for (i=0;i<200;i++);
   // Enable MPLL output
   *(volatile kal_uint16 *)0x80000108 = 0x000a;

#elif defined (EXT_13M) /* EXT_26M */

   // Power on MPLL, DPLL and CLKSQ
   *(volatile kal_uint16 *)PDN_CLR0   	= ~0x94ff;
   // Reset the MPLL and setting MPLL to 52MHz
#if defined(MT6217)
   *(volatile kal_uint16 *)0x80000100 = 0x0083;
   *(volatile kal_uint16 *)0x80000100 = 0x0003;
#else /* MT6217 */
   *(volatile kal_uint16 *)0x80000100 = 0x0084;
   *(volatile kal_uint16 *)0x80000100 = 0x0004;
#endif   /* MT6217 */
	// delay until PLL is stable
	for (i=0;i<200;i++);
   // Enable MPLL output
   *(volatile kal_uint16 *)0x80000108 = 0x0002;
   
#endif   /* EXT_26M */

#ifdef MCU_52M
   *(volatile kal_uint16 *)0x80000114 = 0x0003;
#elif defined (MCU_39M)
   *(volatile kal_uint16 *)0x80000114 = 0x0002;
#elif defined (MCU_26M)
   *(volatile kal_uint16 *)0x80000114 = 0x0001;
#elif defined (MCU_13M)
   *(volatile kal_uint16 *)0x80000114 = 0x0000;
#endif
}
#endif   /* MT6217 || MT6226 || MT6227 || MT6226M */

#if defined(MT6228) || defined(MT6229) || defined(MT6230)
{
	kal_uint16 i;

#ifdef EXT_26M
   // 1. Power on DSP_DIV2, MCU_DIV2, and CLKSQ
   *PDN_CLR0 = 0x9800;
   // 2. Enable MCU clock divider
   *CLK_CON = 0x0008;
#elif defined (EXT_13M)

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -