///////////////////////////////////////////////////////////////////////////
// SDRAMのdefine関連
//
// 2015/11/16
///////////////////////////////////////////////////////////////////////////
#ifndef __U_SDRAMDEFINE_H__
//[[[
#define __U_SDRAMDEFINE_H__

#undef EXTERN
#ifndef MONITOR_DEF_SDRAM
#define EXTERN extern
#else
#define EXTERN
#endif

// The starting and ending address for the 64MB SDRAM chip (32Meg x 16bits) on the SDRAM daughter board.
// サンプルは64MBだが、Monitorは8MB（64Mbits）のため範囲を小さくする（0x003FFFFF まで）
#define	SDRAM_START_ADDRESS					(0x00000000)
//#define	SDRAM_END_ADDRESS						(0x01FFFFFF)
#define	SDRAM_END_ADDRESS						(0x003FFFFF)

// The Mapping address space for the EPI SDRAM.
#define	SDRAM_MAPPING_ADDRESS				(0x60000000)

//extern	WORD	*gwarrSDRAM;													// SDRAMにアクセスするためのポインター
//static	volatile	WORD	*gwarrSDRAM;
// ex.gwarrSDRAM[SDRAM_END_ADDRESS] = 0x1234;

bool	SDramInit(DWORD dwSysClock);										// 初期化関数
WORD*	GetSDRAMBaseAddress(void);											// アドレスの取得
WORD*	GetSDRAMFatBufAddress(void);										// FatFs用バッファーのアドレス取得

WORD*	GetSDRAMLCDBufAddressA(void);										// LCD用
WORD*	GetSDRAMLCDBufAddressB(void);										// LCD用

bool	SDRAM_FatBufClr(void);													// FatFs用バッファーのクリア
bool	SDRAM_FatBufSave(BYTE* pbDat);									// 4kバッファーへのセーブ
bool	SDRAM_FatBufLoad(BYTE* pbDat);									// 4kバッファーからのロード
bool	SDRAM_FatBufByteSave(WORD wStart, WORD wLength, BYTE* pbDat);		// 指定バイト数のセーブ

#endif
//]]]
