亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? dmc.c

?? 三星 s3c6400測試代碼
?? C
字號:
/**************************************************************************************
* 
*	Project Name : S3C6400 Validation
*
*	Copyright 2006 by Samsung Electronics, Inc.
*	All rights reserved.
*
*	Project Description :
*		This software is only for validating functions of the S3C6400.
*		Anybody can use this software without our permission.
*  
*--------------------------------------------------------------------------------------
* 
*	File Name : dmc.c
*  
*	File Description : This file implements the API functons for DRAM controller.
*
*	Author : Wonjoon Jang
*	Dept. : AP Development Team
*	Created Date : 2007/01/05
*	Version : 0.1 
* 
*	History
*	- Created(Wonjoon.jang 2007/01/05)
*   
**************************************************************************************/

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <ctype.h>

#include "def.h"
#include "option.h"
#include "library.h"
#include "sfr6400.h"
#include "system.h"
#include "intc.h"

#include "gpio.h"

#include "sysc.h"
#include "dmc.h"

#define 	DMC(__n) 		( ( volatile oDMC_REGS * ) ( g_DMCBase[__n] ) )
#define 	DMC_CONNUM			(2)

// define global variables
static void *			g_DMCBase[DMC_CONNUM];


//SFR
typedef struct tag_DMC_REGS
{
	u32 rMEMSTAT;		// 0x7E001000 (DMC1 Case)
	u32 rMEMCCMD;		// 0x7E001004
	u32 rDIRECTCMD;		// 0x7E001008
	u32 rMEMCFG;		// 0x7E00100C
	u32 rREFRESH;		// 0x7E001010
	u32 rCASLAT;		// 0x7E001014
	u32 rT_DQSS;		// 0x7E001018
	u32 rT_MRD;			// 0x7E00101C
	u32 rT_RAS;			// 0x7E001020
	u32 rT_RC;			// 0x7E001024
	u32 rT_RCD;			// 0x7E001028
	u32 rT_RFC;			// 0x7E00102C
	u32 rT_RP;			// 0x7E001030
	u32 rT_RRD;			// 0x7E001034
	u32 rT_WR;			// 0x7E001038
	u32 rT_WTR;			// 0x7E00103C
	u32 rT_XP;			// 0x7E001040
	u32 rT_XSR;			// 0x7E001044
	u32 rT_ESR;			// 0x7E001048
	u32 rMEMCFG2;		// 0x7E00104C

	u32 reserved1[44];

	u32 rID_0_CFG;		// 0x7E001100
	u32 rID_1_CFG;		// 0x7E001104
	u32 rID_2_CFG;		// 0x7E001108
	u32 rID_3_CFG;		// 0x7E00110C
	u32 rID_4_CFG;		// 0x7E001110
	u32 rID_5_CFG;		// 0x7E001104
	u32 rID_6_CFG;		// 0x7E001108
	u32 rID_7_CFG;		// 0x7E00110C
	u32 rID_8_CFG;		// 0x7E001120
	u32 rID_9_CFG;		// 0x7E001124
	u32 rID_10_CFG;		// 0x7E001128
	u32 rID_11_CFG;		// 0x7E00112C
	u32 rID_12_CFG;		// 0x7E001130
	u32 rID_13_CFG;		// 0x7E001134
	u32 rID_14_CFG;		// 0x7E001138
	u32 rID_15_CFG;		// 0x7E00113C

	u32 reserved2[48];

	u32 rCHIP_0_CFG;	// 0x7E001200
	u32 rCHIP_1_CFG;	// 0x7E001204

	u32 reserved3[62];

	u32 rUSER_STAT;		// 0x7E001300
	u32 rUSER_CFG;		// 0x7E001304
		
} 
oDMC_REGS;






	
//////////
// Function Name : DMC_Init
// Function Description : This function initializes a certain DMC Controller.(for SMDK6400)
//					  DMC0 => X16, mDDR (512Mb),  DMC1=> X16*2, mDDR (1025Mb)
// Input : 	uController - DMC Controller No. 
// Output : 	
//			
// Version : v0.1
void	DMC_Init(u8 uController, DMC_eStopCLK eStopClk, DMC_eAutoPD eAutoPD, u32 uPDprd )
{
	u32 uBaseAddress;
	u32 uPara_REF,uPara_RAS, uPara_RC, uPara_RCD, uScheduled_Para;
	u32 uPara_RFC, uPara_RP, uPara_RRD, uPara_WR, uPara_WTR, uPara_XSR;

	if(uController == 0)
	{
		uBaseAddress = DMC0_BASE;
	}
	else if(uController == 1)
	{
		uBaseAddress = DMC1_BASE;
	}
	else
	{
		
	}
	
	g_DMCBase[uController] = (void *)uBaseAddress;



	// Get system Clock Information.  g_HCLK
	SYSC_GetClkInform();

	//Enter the Configuration Mode
	Outp32(&DMC(uController)->rMEMCCMD, (0x4<<0));	// Memc_cmd = 0x4

	// Timing Parameter Setup
	uPara_REF = (((g_HCLK /1000 *eDDR_REF) -1)/1000000 + 1);	
	Outp32(&DMC(uController)->rREFRESH, uPara_REF);

	Outp32(&DMC(uController)->rCASLAT, (0x3<<1));	// CAS Latency = 3
	Outp32(&DMC(uController)->rT_DQSS, 0x1);			// mDDR = 0x1 (0.75 ~ 1.25)
	Outp32(&DMC(uController)->rT_MRD, 0x2);			// Mode Register Cmd Time
	uPara_RAS = (((g_HCLK /1000 *eDDR_RAS) -1)/1000000 + 1);
	Outp32(&DMC(uController)->rT_RAS, uPara_RAS);	// RAS(Row Active time) to Precharge delay , (min 45ns,  7@133MHz, margin:1 clock)
	uPara_RC = (((g_HCLK /1000 *eDDR_RC) -1)/1000000 + 1);
	Outp32(&DMC(uController)->rT_RC, uPara_RC);		// RC(Row Cycle time) : Active bank x to Active bank x delay (min. 67.5ns, 10@133MHz, margin: 1clock)
	uPara_RCD = (((g_HCLK /1000 *eDDR_RCD) -1)/1000000 + 1);
	if (uPara_RCD <4)
		{
			 uScheduled_Para = 3;
		}
	else
		{
			uScheduled_Para = uPara_RCD;
		}
	uPara_RCD = ((uScheduled_Para-3)<<3) | (uPara_RCD);
	Outp32(&DMC(uController)->rT_RCD, uPara_RCD);	// RAS to CAS Delay, (min 22.5ns, 4@133MHz, margin:1clock)
	uPara_RFC = (((g_HCLK /1000 *eDDR_RFC) -1)/1000000 + 1);
	if (uPara_RFC <4)
		{
			 uScheduled_Para = 3;
		}
	else
		{
			uScheduled_Para = uPara_RFC;
		}
	uPara_RFC = ((uScheduled_Para-3)<<3) | (uPara_RFC);		// Auto Refresh to cmd time(>=t_RC), (min 80ns, 11@133MHz)
	Outp32(&DMC(uController)->rT_RFC, uPara_RFC);
	uPara_RP = (((g_HCLK /1000 *eDDR_RP) -1)/1000000 + 1);
	if (uPara_RP <4)
		{
			 uScheduled_Para = 3;
		}
	else
		{
			uScheduled_Para = uPara_RP;
		}
	uPara_RP = ((uScheduled_Para-3)<<3) | (uPara_RP);
	Outp32(&DMC(uController)->rT_RP, uPara_RP);		// Precharge to RAS delay (Row Pre-charge time) (min 22.5ns, 4@133MHz, margin:1clock)
	uPara_RRD = (((g_HCLK /1000 *eDDR_RRD) -1)/1000000 + 1);
	Outp32(&DMC(uController)->rT_RRD, uPara_RRD);	//  Active bank x to Active bank y delay (min 15ns, 3@133MHz, margin:1clock)
	uPara_WR = (((g_HCLK /1000 *eDDR_WR) -1)/1000000 + 1);
	Outp32(&DMC(uController)->rT_WR, uPara_WR);		//  write to precharge delay (min 15ns, 3@133MHz, margin:1clock)
//	uPara_WTR= (((g_HCLK /1000 *eDDR_RP) -1)/1000000 + 1) + 2;
	uPara_WTR = 2;
	Outp32(&DMC(uController)->rT_WTR, uPara_WTR);		//  write to read delay (tDAL?) (2clk + tRP) // 犬牢 鞘夸 
	Outp32(&DMC(uController)->rT_XP, 2);				//  exit power down cmd time ( 1clk + 1.5ns)
	uPara_XSR= (((g_HCLK /1000 *eDDR_XSR) -1)/1000000 + 1) ;
	Outp32(&DMC(uController)->rT_XSR,uPara_XSR);		// exit self refresh cmd time, 
	Outp32(&DMC(uController)->rT_ESR,uPara_XSR);		// self refresh cmd time // 犬牢 鞘夸 

	
		if(uController == 0)
	{
		// Memory Configuration Register
		Outp32(&DMC(uController)->rMEMCFG,
			(0<<21) |		// 1chip
			(0<<18) |		// Qos master selection by ARID[3:0]
			(2<<15) |		// Burst 4
			(eStopClk<<14) |		// Disable Stop Mem Clock
			(eAutoPD<<13) |		// Disable Auto Power Down
			(uPDprd<<7)   |		// Auto Power Down Period
			(eAP_bit<<6)	|		// Auto Precharge bit in bit 10
			(eRow_bit<<3)	|		// 13bit Row bits
			(eCol_bit<<0) );		// 10bit Column bits

		// Memory Configuration Register 2
		Outp32(&DMC(uController)->rMEMCFG2,
			(1<<11) |		// Read delay 1 cycle from the Pad I/F ( 0x1 => mDDR)
			(3<<8)   |		// Memory Type (mDDR)
			(0<<6) |			// Width ( 16bit)
			(0<<4) |			// Bank bits = 2bit
			(0<<2) |			// DQM state
			(1<<0) );		// Sync. clock scheme

		// CHIP0 Configure
		Outp32(&DMC(uController)->rCHIP_0_CFG,  0x140fc); // Bank-Row-Column, 0x4000_0000 ~ 0x43ff_ffff ( 64MB)
			
	}
	else if(uController == 1)
	{
		// Memory Configuration Register
		Outp32(&DMC(uController)->rMEMCFG,
			(0<<31) |		// Disable Individul CKE Control
			(0<<21) |		// 1chip
			(0<<18) |		// Qos master selection by ARID[3:0]
			(2<<15) |		// Burst 4
			(eStopClk<<14) |		// Disable Stop Mem Clock ( 0)
			(eAutoPD<<13) |		// Disable Auto Power Down (0)
			(uPDprd<<7)   |		// Auto Power Down Period
			(eAP_bit<<6)	|		// Auto Precharge bit in bit 10
			(eRow_bit<<3)	|		// 13bit Row bits
			(eCol_bit<<0) );		// 10bit Column bits

		// Memory Configuration Register 2	
		Outp32(&DMC(uController)->rMEMCFG2,
			(1<<11) |		// Read delay 1 cycle from the Pad I/F ( 0x1 => mDDR)
			(3<<8)   |		// Memory Type (mDDR)
			(1<<6) |			// Width ( 32bit)
			(0<<4) |			// Bank bits = 2bit
			(0<<2) |			// DQM state
			(1<<0) );		// Sync. clock scheme

		// CHIP0 Configure
		Outp32(&DMC(uController)->rCHIP_0_CFG,  0x150f8); // Bank-Row-Column, 0x5000_0000 ~ 0x57ff_ffff ( 128MB)	
	}

	// Direct Command - External Memory Initialize

		// NOP	
		Outp32(&DMC(uController)->rDIRECTCMD,
			(0<<20) |		// Chip Address  - Chip 0
			(3<<18) );		// Command - NOP
		
		// Precharge All	
		Outp32(&DMC(uController)->rDIRECTCMD,
			(0<<20) |		// Chip Address  - Chip 0
			(0<<18) 	);		// Command - PALL	

		// AutoRefresh 2 times	
		Outp32(&DMC(uController)->rDIRECTCMD,
			(0<<20) |		// Chip Address  - Chip 0
			(1<<18) );		// Command - Autorefresh
				
		Outp32(&DMC(uController)->rDIRECTCMD,
			(0<<20) |		// Chip Address  - Chip 0
			(1<<18) );		// Command - Autorefresh

		// MRS	
		Outp32(&DMC(uController)->rDIRECTCMD,
			(0<<20) |		// Chip Address  - Chip 0
			(2<<18) |		// Command - MRS/EMRS
			(0<<16) |		// [17:16] - MRS ( 0 )
			(0x32<<0));		//  [6:4]- CAS Latency - 3, 
			   				// [3] - Burst Type (Sequential), [2:0] - Burst Length(4) -> 8
		
		// EMRS	
		Outp32(&DMC(uController)->rDIRECTCMD,
			(0<<20) |		// Chip Address  - Chip 0
			(2<<18) |		// Command - MRS/EMRS
			(2<<16) |		// [17:16] - EMRS (2)
			(0x0<<0));		// [6:5]- Full Strength, 
			   				// [2:0] - PASR - Full Array
			

		//'GO'  Mode
		Outp32(&DMC(uController)->rMEMCCMD, (0x0<<0));	// Go Command	

		// Check Controller State
		while((Inp32(&DMC(uController)->rMEMSTAT))&0x3 == 1  );
		
	
}




//////////
// Function Name : Test SPI
// Function Description : This function initializes a certain DMC Controller.(for SMDK6400)
//					  DMC0 => X16, mDDR (512Mb),  DMC1=> X16*2, mDDR (1025Mb)
// Input : 	uController - DMC Controller No. 
// Output : 	
//			
// Version : v0.1
void DMC_RdSTATUS (u8 uController)
{

	u32 uBaseAddress, uTemp;
	
	if(uController == 0)
	{
		uBaseAddress = DMC0_BASE;
	}
	else if(uController == 1)
	{
		uBaseAddress = DMC1_BASE;
	}
	else
	{
		
	}
	
	g_DMCBase[uController] = (void *)uBaseAddress;
	uTemp = Inp32(&DMC(uController)->rMEMSTAT);
	uTemp= uTemp & 0x3;

	DisplayLED(uTemp);
	
}




?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
精品国产露脸精彩对白| 福利电影一区二区| 国产精品一区二区黑丝| 国产不卡在线一区| 91老师片黄在线观看| 欧美日韩国产欧美日美国产精品| 91精品国产一区二区三区| 国产亚洲午夜高清国产拍精品| 亚洲欧美视频一区| 奇米影视一区二区三区小说| 成人免费视频一区| 欧美群妇大交群的观看方式| 久久青草欧美一区二区三区| 一区二区欧美视频| 精品在线免费观看| 色婷婷av久久久久久久| 日韩视频免费观看高清完整版在线观看| 国产视频一区二区三区在线观看| 亚洲日本青草视频在线怡红院| 日韩黄色一级片| 不卡高清视频专区| 日韩欧美国产一区二区在线播放 | 日本网站在线观看一区二区三区| 国产高清久久久| 欧美区在线观看| 久久久精品综合| 午夜欧美电影在线观看| 成人综合激情网| 欧美一区二区三区视频免费 | 成人污视频在线观看| 欧美丰满美乳xxx高潮www| 国产精品日日摸夜夜摸av| 视频一区欧美精品| av激情成人网| 久久综合一区二区| 日韩成人av影视| 91麻豆精品秘密| 久久久久久免费毛片精品| 天天影视色香欲综合网老头| 成人免费的视频| 久久蜜臀精品av| 水野朝阳av一区二区三区| av电影天堂一区二区在线| 久久视频一区二区| 日韩精品五月天| 欧美性感一区二区三区| 国产精品高清亚洲| 国产裸体歌舞团一区二区| 欧美精品视频www在线观看| 美腿丝袜在线亚洲一区| 欧美在线不卡视频| 中文字幕视频一区| 国产精品一区二区不卡| 日韩精品一区二区三区视频在线观看| 亚洲黄色av一区| 99视频精品在线| 国产精品丝袜久久久久久app| 久久精品国产成人一区二区三区 | 亚洲免费视频成人| 国产麻豆精品一区二区| 欧美mv和日韩mv国产网站| 日日摸夜夜添夜夜添精品视频 | 国产视频一区二区在线| 美女尤物国产一区| 欧美精品亚洲二区| 婷婷中文字幕一区三区| 欧美色图一区二区三区| 一区二区三区日本| 91丨porny丨国产入口| 亚洲国产精品黑人久久久| 国产在线播放一区二区三区| 日韩视频永久免费| 久久精品国产秦先生| 欧美一二三区在线观看| 天堂av在线一区| 91精品国产综合久久久久久久久久 | 国产亚洲欧洲一区高清在线观看| 蜜臂av日日欢夜夜爽一区| 日韩女优av电影| 精品一区二区综合| 精品成人一区二区三区四区| 久久国产生活片100| 精品国产免费一区二区三区香蕉| 免费成人小视频| 精品成人一区二区三区四区| 国产乱子伦视频一区二区三区 | 国产成人啪免费观看软件| 国产日韩精品一区二区三区| 成人av在线电影| 亚洲乱码一区二区三区在线观看| 色综合久久66| 天堂成人国产精品一区| 日韩西西人体444www| 精品一二三四区| 久久久99久久精品欧美| 丁香激情综合国产| 亚洲女同ⅹxx女同tv| 欧美日本一区二区| 久久er99精品| 国产亚洲1区2区3区| 91在线视频观看| 亚洲123区在线观看| 精品国产91亚洲一区二区三区婷婷| 极品美女销魂一区二区三区免费| 国产日韩三级在线| 色爱区综合激月婷婷| 日本成人中文字幕在线视频 | 国精产品一区一区三区mba视频| 中文字幕不卡在线观看| 欧美亚洲一区二区在线| 免费xxxx性欧美18vr| 久久久国际精品| 色综合色综合色综合色综合色综合 | 久久99精品国产.久久久久久| 欧美国产欧美综合| 欧美羞羞免费网站| 久久99国产精品久久| 国产精品人人做人人爽人人添 | 国产麻豆午夜三级精品| 亚洲私人黄色宅男| 91精品国产欧美一区二区| 国产成人在线看| 亚洲在线视频网站| 久久婷婷综合激情| 欧美做爰猛烈大尺度电影无法无天| 欧美aaaaaa午夜精品| 国产精品不卡在线观看| 欧美一卡在线观看| 成年人国产精品| 日本在线不卡视频| 亚洲欧美中日韩| 欧美大尺度电影在线| 色综合久久九月婷婷色综合| 麻豆视频一区二区| 亚洲猫色日本管| 久久欧美中文字幕| 欧美日韩国产综合视频在线观看| 国产精品888| 天堂午夜影视日韩欧美一区二区| 中文字幕欧美日韩一区| 欧美高清精品3d| 99精品视频在线观看| 美女任你摸久久| 亚洲制服丝袜av| 中文字幕乱码日本亚洲一区二区| 717成人午夜免费福利电影| 成人av先锋影音| 国产自产视频一区二区三区| 亚洲国产精品尤物yw在线观看| 国产亚洲精品久| 日韩一区二区三| 欧美日韩一区三区四区| 91在线视频在线| 国产一区在线看| 免费高清成人在线| 亚洲国产精品嫩草影院| 国产精品妹子av| 久久精品这里都是精品| 777xxx欧美| 欧美日韩精品免费观看视频| 97aⅴ精品视频一二三区| 国产精品77777| 美女久久久精品| 日韩av网站在线观看| 亚洲成a人在线观看| 国产精品视频看| 国产亚洲成aⅴ人片在线观看| 日韩视频免费观看高清完整版在线观看 | 大胆亚洲人体视频| 国产主播一区二区| 精品在线免费视频| 麻豆国产精品视频| 日韩1区2区3区| 香蕉久久夜色精品国产使用方法 | 8v天堂国产在线一区二区| 在线精品亚洲一区二区不卡| 91尤物视频在线观看| 成人激情电影免费在线观看| 国产精品中文有码| 激情欧美一区二区三区在线观看| 天堂精品中文字幕在线| 午夜欧美在线一二页| 午夜精品在线视频一区| 亚洲高清视频在线| 日一区二区三区| 日本不卡在线视频| 久久精品噜噜噜成人av农村| 日韩av不卡一区二区| 青青草一区二区三区| 蜜臀av国产精品久久久久| 丝袜美腿亚洲一区二区图片| 亚洲福利一区二区三区| 亚洲国产人成综合网站| 亚洲va韩国va欧美va精品| 同产精品九九九| 免费在线看一区| 麻豆91在线观看| 国产一区二区三区综合| 豆国产96在线|亚洲| 亚洲男人电影天堂|