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

📄 dm270.gel

📁 dm270 source code
💻 GEL
字号:

/* GEL file for DM270 EVM    */
/*  ARM initialization       */


#define REG             *(unsigned short*)
#define ARM_MXI         27000000

/*Clock Controllor */
#define	PLLA			0x30880
#define	PLLB			0x30882
#define	CLKC			0x30884
#define	SEL				0x30886
#define	DIV				0x30888
#define	BYP				0x3088A
#define	MOD0			0x30890
#define	MOD1			0x30892
#define	MOD2			0x30894

/* SDRAM Controllor */
#define SDMODE			0x309A6
#define REFCTL			0x309A8

/* External Memory Interface */
#define DPSTR0      0x30A4A //FLASH end address in units of 1 MB
#define DPSTR1      0x30A4C //SDRAM end address in units of 1 MB
#define DPSTR2      0x30A4E //CF end address in units of 1 MB
#define DPSTR3      0x30A50
#define DPSTR4      0x30A52
#define DPSTR5      0x30A54

/* SAMSUNG K4S281632e setting */
#define TRDL            1
#define SDRAM_BIT_WD	0           // 32-bit SDRAM
#define CAS_LAT         1           // cas latency 2:2 cycle, 1:1 cycle
#define BANK_NUM        1           // back number 0:2 bank, 1:4 bank
#define MEM_TYPE        2           // memory type 0:2k*256, 1:4k*256,
                                    //             2:4K*512, 3:8k*512
#define REF_EN          1           // refresh enable 0:disable, 1:enable
#define REF_CYCLE       0x40        // refresh cycle (REFNUM)
#define DMA_SELECT1     0           // External Memory I/F <-> SDRAM
#define DMA_SELECT2     4           // Serial I/F          <-> SDRAM
#define MRS             0x01        // mode register set
#define PREA            0x02        // precharge all
#define REF             0x04        // auto refresh


SDRAMCInit()
{
    unsigned short nMode;
    unsigned short refctl_value;
    int i;

    // set SDRAM mode
    nMode = (TRDL << 15) | (SDRAM_BIT_WD << 14) | (CAS_LAT << 10) | (BANK_NUM << 12)  | (MEM_TYPE << 8);
	refctl_value =	(DMA_SELECT1 << 13) | (DMA_SELECT2 << 10) | (REF_EN << 8) | (REF_CYCLE) ;

    REG SDMODE = nMode;
    REG REFCTL = refctl_value ;
    REG SDMODE = nMode | PREA;      // precharge
    for (i = 0; i < 8; i++) 
    {
        REG SDMODE = nMode | REF;   // auto refresh 8 times
    }

    REG SDMODE = nMode | MRS;       // mode register set
    REG SDMODE = (nMode &= ~0xbf);
}


EMIFInit()
{
/* make sure the following addresses do not overlap */
#define EMIF0_END_ADDRESS       0x09    // in 1MB unit
#define EMIF_SDRAM_END_ADDRESS  0x49
#define EMIF1_END_ADDRESS       0x61
#define EMIF2_END_ADDRESS       0x79
#define EMIF3_END_ADDRESS       0x91
#define EMIF4_END_ADDRESS       0xa9
    //memory map
    REG DPSTR0 = EMIF0_END_ADDRESS;
    REG DPSTR1 = EMIF_SDRAM_END_ADDRESS;
    REG DPSTR2 = EMIF1_END_ADDRESS;
    REG DPSTR3 = EMIF2_END_ADDRESS;
}


CLOCKCInit()
{
    unsigned long   buf0, buf1;
    
#define PLLA_PMA_DIV	9		//PLLAOUT = 27 * PLLA_PMA_DIV / PLLA_PNA_DIV 
#define PLLA_PNA_DIV	1        //        =  27 * 9 / 1 = 243 MHz
#define PLLB_PMA_DIV	15        //PLLBOUT = 27 * PLLB_PMA_DIV / PLLB_PNA_DIV 
#define PLLB_PNA_DIV	2        //        =  27 * 9 / 1 = 243 MHz          
                                            
#define ARM_CLK_DIV		2        //ARM_CLK = PLLA(B)OUT / ARM_CLK_DIV         
									//		  = 243 / 4 = 60.75 MHz
#define DSP_CLK_DIV		2        //DSP_CLK = PLLA(B)OUT / DSP_CLK_DIV         
									//		  = 243 / 3 = 81 MHz
#define SDR_CLK_DIV		2        //SDR_CLK = PLLA(B)OUT / SDR_CLK_DIV         
									//		  = 243 / 3 = 81 MHz
#define AXL_CLK_DIV		1        //AXL_CLK = PLLA(B)OUT / AXL_CLK_DIV 
									//		  = 243 / 3 = 81 MHz
#define CLK_SEL			0x1001		//AXL = A , SDR = B , DSP = A , ARM = A

#define PLLA_OUT_DIV	((PLLA_PMA_DIV - 1) << 4) | (PLLA_PNA_DIV - 1)
#define PLLB_OUT_DIV	((PLLB_PMA_DIV - 1) << 4) | (PLLB_PNA_DIV - 1)
#define DIV_VALUE		(ARM_CLK_DIV - 1) | ((DSP_CLK_DIV - 1) << 4) | ((SDR_CLK_DIV - 1) << 8) | ((AXL_CLK_DIV - 1) << 12)

	/**************/
	/* PLL BYPASS */
	/**************/
	REG	BYP		= 0x1111;				// Bypass Enable

    /***********************/
    /* Select Source Clock */
    /***********************/
    REG CLKC    = 0x23e8;

    /**********************************/
    /* Set PLL A & B */
    /**********************************/
    REG PLLA    = PLLA_OUT_DIV;
    REG PLLB    = PLLB_OUT_DIV;

    REG SEL     = CLK_SEL;
 
    /*********************/
    /* Set PLL DIV Value */
    /*********************/
    REG DIV     = DIV_VALUE;                            

	/****************************************/
	/* Lock Monitor for PLLA, PLLB and PLLC */
	/****************************************/
	do {
		buf0	= REG PLLA & 0x8000;	// Lock Monitor for PLLA
		buf1	= REG PLLB & 0x8000;	// Lock Monitor for PLLB
	} while(!buf0 || !buf1);	// If ALL PLL's Lock ON then pass.

	/**************/
	/* PLL BYPASS */
	/**************/
	REG	BYP		= 0x0000;				// Bypass Disable

	/*******************************/
	/* All peripheral Clock Enable */
	/*******************************/
	REG CLKC	= 0x23e8;
	REG MOD0 	= 0xffff;
	REG MOD1 	= 0xffff;
    REG MOD2    = 0xffff;
}

menuitem "EVM Reset"
hotmenu Reset_Restart(){
//	GEL_Reset();
	GEL_Restart();
}

menuitem "Init DM270 EVM"

Init_MemoryMap() {
#define FLASH_BASE	0x0100000
#define	FLASH_SIZE	0x0400000	/*4M Byte*/
#define SDRAM_BASE	0x0900000
#define SDRAM_SIZE	0x4000000	/*32M Byte*/
#define CF_BASE		0x4900000
#define CF_SIZE		0x1800000

        GEL_TextOut("Initializing Memory Map for Dm270 EVM, ");
        GEL_TextOut("Wait ... ");
        GEL_MapOn();
        GEL_MapReset();
        GEL_MapAddStr(0x0       , 0, 0x4      , "ROM"    , 0); // Reset vector ROM
        GEL_MapAddStr(0x4       , 0, 0x8000   , "RAM"    , 0); // ARM Internal RAM
        GEL_MapAddStr(0x30000   , 0, 0x1000   , "RAM|AS2", 0); // Internal peripherals
        GEL_MapAddStr(0x40000   , 0, 0x10000  , "RAM|AS2", 0); // DSP memmory
        GEL_MapAddStr(FLASH_BASE  , 0, FLASH_SIZE, "RAM"    , 0); // EMIF / SDRAM
        GEL_MapAddStr(SDRAM_BASE  , 0, SDRAM_SIZE, "RAM"    , 0); // EMIF / SDRAM
		GEL_MapAddStr(CF_BASE	, 0, CF_SIZE, "RAM" , 0 );
        GEL_TextOut("Done.\n");
}

hotmenu Init_Registers()
{
        /* Set Memory Map for DSC25 EVM */
        Init_MemoryMap();
		CLOCKCInit();
		EMIFInit();
		SDRAMCInit();
        GEL_TextOut("Initializing DM270 EVM Registers, ");
        GEL_TextOut("Wait ... ");

        GEL_TextOut("Done.\n\n");
}
hotmenu Init_mem()
{
		Init_MemoryMap();
}

StartUp() {
//        GEL_Reset();
//        Init_Registers();
}

menuitem "Open"
hotmenu open_API()
{
	GEL_ProjectLoad("D:\\Ferrari\\CMJ200\\SourceCode\\API\\api.pjt");
}

hotmenu open_Codec()
{
	GEL_ProjectLoad("D:\\Ferrari\\CMJ200\\SOURCECODE\\Codec\\codec.pjt");
}

hotmenu open_Driver()
{
	GEL_ProjectLoad("D:\\Ferrari\\CMJ200\\SourceCode\\Driver\\Driver.pjt");
}

hotmenu open_GUI()
{
	GEL_ProjectLoad("D:\\Ferrari\\CMJ200\\SOURCECODE\\GUI\\gui.pjt");
}

hotmenu open_IDE()
{
	GEL_ProjectLoad("D:\\Ferrari\\CMJ200\\SourceCode\\PrFile\\ESP\\ide_drv\\ide_drv.pjt");
}

hotmenu open_Kernel()
{
	GEL_ProjectLoad("D:\\Ferrari\\CMJ200\\SourceCode\\PrKernel\\kernel.pjt");
}

hotmenu open_Menu()
{
	GEL_ProjectLoad("D:\\Ferrari\\CMJ200\\SOURCECODE\\MNU\\mnu.pjt");
}

hotmenu open_PrFile()
{
	GEL_ProjectLoad("D:\\Ferrari\\CMJ200\\SourceCode\\PrFile\\PrFile.pjt");
}

hotmenu open_SD()
{
	GEL_ProjectLoad("D:\\Ferrari\\CMJ200\\SourceCode\\PrFile\\ESP\\sd_drv\\sd_drv.pjt");
}
hotmenu open_System()
{
	GEL_ProjectLoad("D:\\Ferrari\\CMJ200\\SourceCode\\User\\System.pjt");
	GEL_ProjectLoad("D:\\Ferrari\\CMJ200\\SourceCode\\User\\System_Upgrader.pjt");
	GEL_ProjectLoad("D:\\Ferrari\\CMJ200\\SourceCode\\User\\System_Sdram.pjt");
}

hotmenu open_All()
{
	GEL_ProjectLoad("D:\\Ferrari\\CMJ200\\SourceCode\\API\\api.pjt");
	GEL_ProjectLoad("D:\\Ferrari\\CMJ200\\SOURCECODE\\Codec\\codec.pjt");
	GEL_ProjectLoad("D:\\Ferrari\\CMJ200\\SourceCode\\Driver\\Driver.pjt");
	GEL_ProjectLoad("D:\\Ferrari\\CMJ200\\SOURCECODE\\GUI\\gui.pjt");
	GEL_ProjectLoad("D:\\Ferrari\\CMJ200\\SourceCode\\PrFile\\ESP\\ide_drv\\ide_drv.pjt");
	GEL_ProjectLoad("D:\\Ferrari\\CMJ200\\SourceCode\\PrKernel\\kernel.pjt");
	GEL_ProjectLoad("D:\\Ferrari\\CMJ200\\SOURCECODE\\MNU\\mnu.pjt");
	GEL_ProjectLoad("D:\\Ferrari\\CMJ200\\SourceCode\\PrFile\\PrFile.pjt");
	GEL_ProjectLoad("D:\\Ferrari\\CMJ200\\SourceCode\\PrFile\\ESP\\sd_drv\\sd_drv.pjt");
	GEL_ProjectLoad("D:\\Ferrari\\CMJ200\\SourceCode\\User\\System.pjt");
	GEL_ProjectLoad("D:\\Ferrari\\CMJ200\\SourceCode\\User\\System_Upgrader.pjt");
	GEL_ProjectLoad("D:\\Ferrari\\CMJ200\\SourceCode\\User\\System_Sdram.pjt");
	GEL_ProjectSetActive("D:\\Ferrari\\CMJ200\\SourceCode\\User\\System_Sdram.pjt");
}

menuitem "Close"

hotmenu close_API()
{
	GEL_ProjectClose("D:\\Ferrari\\CMJ200\\SourceCode\\API\\api.pjt");
}

hotmenu close_Codec()
{
	GEL_ProjectClose("D:\\Ferrari\\CMJ200\\SOURCECODE\\Codec\\codec.pjt");
}

hotmenu close_Driver()
{
	GEL_ProjectClose("D:\\Ferrari\\CMJ200\\SourceCode\\Driver\\Driver.pjt");
}

hotmenu close_GUI()
{
	GEL_ProjectClose("D:\\Ferrari\\CMJ200\\SOURCECODE\\GUI\\gui.pjt");
}

hotmenu close_IDE_Driver()
{
	GEL_ProjectClose("D:\\Ferrari\\CMJ200\\SourceCode\\PrFile\\ESP\\ide_drv\\ide_drv.pjt");
}

hotmenu close_Kernel()
{
	GEL_ProjectClose("D:\\Ferrari\\CMJ200\\SourceCode\\PrKernel\\kernel.pjt");
}

hotmenu close_Menu()
{
	GEL_ProjectClose("D:\\Ferrari\\CMJ200\\SOURCECODE\\MNU\\mnu.pjt");
}

hotmenu close_PrFile()
{
	GEL_ProjectClose("D:\\Ferrari\\CMJ200\\SourceCode\\PrFile\\PrFile.pjt");
}

hotmenu close_SD_Driver()
{
	GEL_ProjectClose("D:\\Ferrari\\CMJ200\\SourceCode\\PrFile\\ESP\\sd_drv\\sd_drv.pjt");
}

hotmenu close_System()
{
	GEL_ProjectClose("D:\\Ferrari\\CMJ200\\SourceCode\\User\\System.pjt");
	GEL_ProjectClose("D:\\Ferrari\\CMJ200\\SourceCode\\User\\System_Sdram.pjt");
	GEL_ProjectClose("D:\\Ferrari\\CMJ200\\SourceCode\\User\\System_Upgrader.pjt");
}

hotmenu close_All()
{
	GEL_ProjectClose("D:\\Ferrari\\CMJ200\\SourceCode\\API\\api.pjt");
	GEL_ProjectClose("D:\\Ferrari\\CMJ200\\SOURCECODE\\Codec\\codec.pjt");
	GEL_ProjectClose("D:\\Ferrari\\CMJ200\\SourceCode\\Driver\\Driver.pjt");
	GEL_ProjectClose("D:\\Ferrari\\CMJ200\\SOURCECODE\\GUI\\gui.pjt");
	GEL_ProjectClose("D:\\Ferrari\\CMJ200\\SourceCode\\PrFile\\ESP\\ide_drv\\ide_drv.pjt");
	GEL_ProjectClose("D:\\Ferrari\\CMJ200\\SourceCode\\PrKernel\\kernel.pjt");
	GEL_ProjectClose("D:\\Ferrari\\CMJ200\\SOURCECODE\\MNU\\mnu.pjt");
	GEL_ProjectClose("D:\\Ferrari\\CMJ200\\SourceCode\\PrFile\\PrFile.pjt");
	GEL_ProjectClose("D:\\Ferrari\\CMJ200\\SourceCode\\PrFile\\ESP\\sd_drv\\sd_drv.pjt");
	GEL_ProjectClose("D:\\Ferrari\\CMJ200\\SourceCode\\User\\System.pjt");
	GEL_ProjectClose("D:\\Ferrari\\CMJ200\\SourceCode\\User\\System_Sdram.pjt");
	GEL_ProjectClose("D:\\Ferrari\\CMJ200\\SourceCode\\User\\System_Upgrader.pjt");
}

menuitem "Project"

hotmenu OpenAll()
{
	GEL_ProjectLoad("D:\\Ferrari\\CMJ200\\SourceCode\\API\\api.pjt");
	GEL_ProjectLoad("D:\\Ferrari\\CMJ200\\SOURCECODE\\Codec\\codec.pjt");
	GEL_ProjectLoad("D:\\Ferrari\\CMJ200\\SourceCode\\Driver\\Driver.pjt");
	GEL_ProjectLoad("D:\\Ferrari\\CMJ200\\SOURCECODE\\GUI\\gui.pjt");
	GEL_ProjectLoad("D:\\Ferrari\\CMJ200\\SourceCode\\PrFile\\ESP\\ide_drv\\ide_drv.pjt");
	GEL_ProjectLoad("D:\\Ferrari\\CMJ200\\SourceCode\\PrKernel\\kernel.pjt");
	GEL_ProjectLoad("D:\\Ferrari\\CMJ200\\SOURCECODE\\MNU\\mnu.pjt");
	GEL_ProjectLoad("D:\\Ferrari\\CMJ200\\SourceCode\\PrFile\\PrFile.pjt");
	GEL_ProjectLoad("D:\\Ferrari\\CMJ200\\SourceCode\\PrFile\\ESP\\sd_drv\\sd_drv.pjt");
	GEL_ProjectLoad("D:\\Ferrari\\CMJ200\\SourceCode\\User\\System.pjt");
	GEL_ProjectLoad("D:\\Ferrari\\CMJ200\\SourceCode\\User\\System_Upgrader.pjt");
	GEL_ProjectLoad("D:\\Ferrari\\CMJ200\\SourceCode\\User\\System_Sdram.pjt");
	GEL_ProjectSetActive("D:\\Ferrari\\CMJ200\\SourceCode\\User\\System_Sdram.pjt");
}

hotmenu CloseAll()
{
	GEL_ProjectClose("D:\\Ferrari\\CMJ200\\SourceCode\\API\\api.pjt");
	GEL_ProjectClose("D:\\Ferrari\\CMJ200\\SOURCECODE\\Codec\\codec.pjt");
	GEL_ProjectClose("D:\\Ferrari\\CMJ200\\SourceCode\\Driver\\Driver.pjt");
	GEL_ProjectClose("D:\\Ferrari\\CMJ200\\SOURCECODE\\GUI\\gui.pjt");
	GEL_ProjectClose("D:\\Ferrari\\CMJ200\\SourceCode\\PrFile\\ESP\\ide_drv\\ide_drv.pjt");
	GEL_ProjectClose("D:\\Ferrari\\CMJ200\\SourceCode\\PrKernel\\kernel.pjt");
	GEL_ProjectClose("D:\\Ferrari\\CMJ200\\SOURCECODE\\MNU\\mnu.pjt");
	GEL_ProjectClose("D:\\Ferrari\\CMJ200\\SourceCode\\PrFile\\PrFile.pjt");
	GEL_ProjectClose("D:\\Ferrari\\CMJ200\\SourceCode\\PrFile\\ESP\\sd_drv\\sd_drv.pjt");
	GEL_ProjectClose("D:\\Ferrari\\CMJ200\\SourceCode\\User\\System.pjt");
	GEL_ProjectClose("D:\\Ferrari\\CMJ200\\SourceCode\\User\\System_Sdram.pjt");
	GEL_ProjectClose("D:\\Ferrari\\CMJ200\\SourceCode\\User\\System_Upgrader.pjt");
}


menuitem "Utility"

hotmenu Reload()
{
	GEL_Halt();
	GEL_Reset();
	GEL_Load("D:\\Ferrari\\CMJ200\\SourceCode\\User\\system.out");
}

hotmenu Relaod_and_Run()
{
	GEL_Halt();
	GEL_Reset();
	GEL_Load("D:\\Ferrari\\CMJ200\\SourceCode\\User\\system.out");
	GEL_Run();
}

hotmenu SDRAM_Relaod_and_Run()
{
	GEL_Halt();
	GEL_Reset();
	Init_Registers();
	GEL_Load("D:\\Ferrari\\CMJ200\\SourceCode\\User\\system_sdram.out");
	GEL_Run();
}
/*
hotmenu Loadcode()
{
	Init_Registers();
	GEL_Halt();
	GEL_Reset();
	GEL_Load("D:\\JaguarPlus\\JaguarPlus\\SourceCode\\project\\jaguar_flashburn.out");
}

hotmenu BurnFlash()
{
	GEL_Load("D:\\JaguarPlus\\JaguarPlus\\SourceCode\\project\\flashburn.out");
	GEL_Halt();
	GEL_Reset();
	GEL_Restart();
	GEL_Run();
}	
*/

⌨️ 快捷键说明

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