Example #1
0
void CpuSpeedFunc1(void)
{
    int i,j;
    i=0;
	
	LED_DISPLAY(0x3);

	//The following code should not use the stack memory.
    // because the stack memory is not DCache-locked.
    // It's should be checked using disassembly code.

	// chage refresh count.
    rREFRESH = (rREFRESH & ~0x3ff)  | 200;
    // Set clock frequency.
	ChangeClockDivider(1,1);		// 1:2:4
	//ChangeMPllValue(0xa1,0x3,0x1);	// FCLK=202.8MHz, refersh:473
	//ChangeMPllValue(0x66,0x1,0x1);	// FCLK=220MHz   
//	ChangeMPllValue(0x69,0x1,0x1);	// FCLK=226MHz       
	ChangeMPllValue(0x96,0x2,0x1);	// FCLK=237MHz, refresh:200


	// Set clock out pad.
	#if WHICH_CPU==5410
	//rGPDCON = (rGPDCON & ~(3<<30)) | (2<<30);	// GPD15  = CLKOUT.
	//rMISCCR = (rMISCCR & ~(7<<8)) | (2<<8);		// CLKOUT = FCLK
	#else	//2410
	rGPHCON = (rGPHCON & ~(3<<20)) | (2<<20);	// GPH10  = CLKOUT1.
	rMISCCR = (rMISCCR & ~(7<<8)) | (2<<8);		// CLKOUT1 = FCLK
	#endif
	
	// Start signal, Just for notification.
	#if 0
	rPWRSAV |= 1<<2;	// SDRAM1 self refresh.
	#endif
	
	LED_DISPLAY(0x4);
    for(i=0;i<9000000;i++);
    for(i=0;i<9000000;i++);

    while(1)
    {
        for(i=0;i<0x100;i+=4)
            *(volatile U32 *)(TEST_STADDR+i)=0x12345678*i+i;	// Write data.

        for(i=0;i<0x100;i+=4)
        {
            if(*(volatile U32 *)(TEST_STADDR+i)!=0x12345678*i+i)	// Error
            {
			// Display LED x101 and stop.
	        //rGPDDAT=rGPDDAT&~(0xf<<8)|(0x0<<8);
	        //rGPDDAT=rGPDDAT&~(0xf<<8)|(0x2<<8);
	        LED_DISPLAY(0x5);
	        

	        while(1);
            }
            *(volatile U32 *)(TEST_STADDR+i)=0x0;	// Clear memory.
        }

    //rGPDDAT=rGPDDAT&~(0xf<<8)|(0xf<<8);
    LED_DISPLAY(0xf);
	

        i=0;
        i++;
        i=i*0x12345678;	// i=1.
	if(i==0x12345678)
	    //rGPDDAT=rGPDDAT&~(0xf<<8)|(0x0<<8);	
		LED_DISPLAY(0x0);
	else
	    //rGPDDAT=rGPDDAT&~(0xf<<8)|(0x9<<8);
		LED_DISPLAY(0x3);
       
    }    
}
Example #2
0
void Dvs_Test(void)
{
	volatile int i, n;

	Uart_Printf("Dvs test.\n");

	rGPGCON = (rGPGCON & ~(3<<22)) | (1<<22);	// set GPG11 output for idle state.
	
	rBANKSIZE = (rBANKSIZE & ~(3<<4)) | (0<<4) | (1<<7);	//SCKE_EN, SCLK_EN = disable.

	Uart_Printf("Change core speed to 266MHz.\n");
	#if FIN==12000000
	ChangeClockDivider(13, 12);	// 1:3:6
		#if CPU2440A==1
		ChangeMPllValue(127,2,1);	// 406MHz
		#else						// 2440X
		ChangeMPllValue(127,2,0);	// 406MHz
		#endif
	#else	// 16.9344Mhz
		ChangeClockDivider(13, 12);
		#if CPU2440A==1
		ChangeMPllValue(110,3,1);	// 400MHz
		#else						// 2440X
		ChangeMPllValue(110,3,0);	// 400MHz
		#endif
	#endif
	
	Calc_Clock(1);
	
	UPDATE_REFRESH(Hclk);
	Uart_Init(Pclk, 115200);

	Uart_Printf("Check Clkout0:FCLK, Clkout1:HCLK.\n");
	// Clkout0: FCLK.	
	Clk0_Enable(2);
	// Clkout1: HCLK.
	Clk1_Enable(3);
	
	
#if ADS10==TRUE	
	srand(0);
#endif
	Led_Display(0);	// clear all leds.
	
	Timer_Setting();
	Set_Lcd_Tft_16Bit_240320_Dvs();

	Uart_Printf("Tcnt, Vcnt, Idle_flag.\n");
	Uart_Printf("%8d,%8d,%1d\n", Timer_cnt0, Vcount, Idle_flag);
	
	while(1) {
		//Uart_Printf("\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b");
		Uart_Printf("%8d,%8d,%1d\n", Timer_cnt0, Vcount, Idle_flag);
		for(i=0; i<1024*32; i+=4) {
			//*(U32 *)(XADDR+i) = i;
			//*(U32 *)(XADDR+i);
		}
		if(Uart_GetKey()==ESC_KEY) break;
	}

	rINTMSK = BIT_ALLMSK;
}
Example #3
0
void MeasurePowerConsumption(void)
{
    int i,j;
    volatile int a,b,c;

    Uart_Printf("[ Measure the power consumption of S3C2410 ]\n");
    Uart_Printf("FCLK is changed to %5.1lfMhz.\n",TMP_FCLK/1000000.);

    MMU_Init();
    ChangeClockDivider(1,1);	    // 1:2:4
//    ChangeClockDivider(0,1);	    // 1:1:2
#if TMP_FCLK==266000000
    ChangeMPllValue(125,4,0); // TMP_FCLK=237000000Hz
    Uart_Init(266000000/4,115200);
#endif
#if TMP_FCLK==237000000
    ChangeMPllValue(150,2,1); // TMP_FCLK=237000000Hz
    Uart_Init(237000000/4,115200);
#endif
#if TMP_FCLK==226000000
    ChangeMPllValue(105,1,1); // TMP_FCLK=226000000Hz
    Uart_Init(226000000/4,115200);
#endif
#if TMP_FCLK==214500000
    ChangeMPllValue(135,2,1); // TMP_FCLK=214500000Hz
    Uart_Init(214500000/4,115200);
#endif
#if TMP_FCLK==202800000
    ChangeMPllValue(161,3,1); // TMP_FCLK=202800000Hz
    Uart_Init(202800000/4,115200);
#endif
#if TMP_FCLK==180000000
    ChangeMPllValue(82,1,1);    // TMP_FCLK=180000000Hz
    Uart_Init(180000000/4,115200);
#endif
#if TMP_FCLK==152000000
    ChangeMPllValue(68,1,1); // TMP_FCLK=152000000Hz
    Uart_Init(152000000/4,115200);
#endif
#if TMP_FCLK==135000000
    ChangeMPllValue(82,2,1);  // FCLK=135000000Hz
    Uart_Init(135000000/4,115200);
#endif
#if TMP_FCLK==101250000
    ChangeMPllValue(127,2,2); // TMP_FCLK=101250000Hz
    Uart_Init(101250000/2,115200);
#endif
#if TMP_FCLK==50700000
    ChangeMPllValue(161,3,3); // TMP_FCLK=50700000Hz
    Uart_Init(50700000/4,115200);
#endif

    rGPHCON = rGPHCON&~(3<<18|3<<20)|(1<<18|1<<20);  //GPH9:CLKOUT0->OUT,GPH10:CLKOUT1->OUT

#if 0
    rGPHCON = rGPHCON&~(3<<18)|(2<<18); //CLKOUT0
    rMISCCR = rMISCCR&~(7<<4)|(4<<4);  //PCLK=45Mhz @FCLK=180Mhz
#endif

#if UNUSED_BLCOK_ON==0
    rCLKCON=rCLKCON&~(1<<18|1<<16|1<<12|1<<11|1<<9|1<<4); //SPI,IIC,UART1,2,SDI,NFC
#endif

#if DMA2_ON==1
    StartDmaMem2Mem();
#endif


    PWR_StartTimer();

    Uart_Printf("TFT-LCD 240x320 16bit is running.\n");
    Lcd_PowerEnable(0,1);
    PWR_Lcd_Tft_16Bit_240320_On();

    PWR_StartIIS();

#if CPU_WORK==QUICK_SORT
    Uart_Printf("CPU JOB : quick sort of 65536 intteger data.\n");
    //qsort;
    for(i=0; i<NUM_SORT_DATA; i++)dim2[i]=i;
    i=0;
    while(1)
    {
        qsort(dim2,NUM_SORT_DATA,sizeof(int),compare1);
        qsort(dim2,NUM_SORT_DATA,sizeof(int),compare2);
        Uart_Printf(",");
    }
#else
    Uart_Printf("CPU JOB : Dhrystone 2.1 code.\n");
    while(1)
    {
        dhrystone21();
        Uart_Printf(".");
    }

#endif
    Uart_Printf("End of the Measurement\n");
}