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

📄 amdflash.h

📁 norflash的文件系统。 用于中低端手机开发的参考
💻 H
字号:
/*****************************************************************************
 
  FILE NAME: amdflash.h

  DESCRIPTION:

    header file for dual bank AMD flash Driver

 Copyright (c) 2002, VIA Technologies, Inc.
*****************************************************************************/


#ifndef __AMD_FLASH_H__
#define __AMD_FLASH_H__

#include "fsmflash.h"


#define FLASH_ERASE_DATA		0xFFFF


/* Status bit masks */
#define DQ2_MASK                (0x04)
#define DQ3_MASK                (0x08)
#define DQ5_MASK                (0x20)
#define DQ6_MASK                (0x40)
#define DQ7_MASK                (0x80)

/*######################################################################
 *##
 *##
 *##
 *######################################################################*/

#define UNLOCK_ADDR_1	(/*LOWLVL_FLASH_START_ADDRESS +*/ (0x555 << 1))
#define UNLOCK_ADDR_2	(/*LOWLVL_FLASH_START_ADDRESS +*/ (0x2AA << 1))

#define UNLOCK_DATA_1	0xAA
#define UNLOCK_DATA_2	0x55

/* Flash commands */

/* Chip erase command */
#define FLASH_CHIP_ERASE_CMD            0x10    

/* Sector erase command */
#define FLASH_SECTOR_ERASE_CMD          0x30    

/* Unlock bypass mode, faster programming method */
#define FLASH_UNLOCK_BYPASS_CMD         0x20    

/* Program flash in bypass mode */
#define FLASH_UNLOCK_BYPASS_PROGRAM_CMD 0xA0    

/* Reset bypass mode */
#define FLASH_UNLOCK_BYPASS_RESET_CMD   0x90    

/* Reset bypass mode */
#define FLASH_UNLOCK_BYPASS_RESET_CMD_1 0x00    

/* Program command, write a word to flash */
#define FLASH_PROGRAM_SETUP_CMD         0xA0    

/* Erase setup command, used by erase */
#define FLASH_ERASE_SETUP_CMD           0x80    

/* Suspend erase */
#define FLASH_ERASE_SUSPEND_CMD         0xB0    

/* Resume erase */
#define FLASH_ERASE_RESUME_CMD          0x30    

/* Enter secured silicon sector command */
#define FLASH_ENTER_SECSI_CMD           0x88    

/* Exit secured silicon sector command */
#define FLASH_EXIT_SECSI_CMD            0x90    

/* AutoSelect Command, get dev id, man id, sector protect status */
#define FLASH_AUTOSELECT_CMD            0x90    

/* Reset command, places flash back in read mode */
#define FLASH_RESET_CMD                 0xF0    


#define WRITE_TO(address, data) \
	*((volatile FLASH_DATA *)(address)) = (data);


#define RESET_TO_READ(address) \
	WRITE_TO(address, FLASH_RESET_CMD);


#define WRITE_FLASH(address,data, start_addr) \
	WRITE_TO(UNLOCK_ADDR_1 + start_addr, UNLOCK_DATA_1); \
	WRITE_TO(UNLOCK_ADDR_2 + start_addr, UNLOCK_DATA_2); \
	WRITE_TO(UNLOCK_ADDR_1 + start_addr, FLASH_PROGRAM_SETUP_CMD); \
	WRITE_TO(address, data);


#define UNLOCK_BYPASS(start_addr) \
	WRITE_TO(UNLOCK_ADDR_1 + start_addr, UNLOCK_DATA_1); \
	WRITE_TO(UNLOCK_ADDR_2 + start_addr, UNLOCK_DATA_2); \
	WRITE_TO(UNLOCK_ADDR_1 + start_addr, FLASH_UNLOCK_BYPASS_CMD);


#define UNLOCK_BYPASS_WRITE_FLASH(address, data) \
	WRITE_TO(address, FLASH_UNLOCK_BYPASS_PROGRAM_CMD); \
	WRITE_TO(address, data);


#define UNLOCK_BYPASS_RESET(start_addr) \
	WRITE_TO(UNLOCK_ADDR_1 + start_addr, FLASH_UNLOCK_BYPASS_RESET_CMD); \
	WRITE_TO(UNLOCK_ADDR_1 + start_addr, FLASH_UNLOCK_BYPASS_RESET_CMD_1); 


#define ERASE_BLOCK(sector_addr, start_addr) \
	WRITE_TO(UNLOCK_ADDR_1 + start_addr, UNLOCK_DATA_1); \
	WRITE_TO(UNLOCK_ADDR_2 + start_addr, UNLOCK_DATA_2); \
	WRITE_TO(UNLOCK_ADDR_1 + start_addr, FLASH_ERASE_SETUP_CMD); \
	WRITE_TO(UNLOCK_ADDR_1 + start_addr, UNLOCK_DATA_1); \
	WRITE_TO(UNLOCK_ADDR_2 + start_addr, UNLOCK_DATA_2); \
	WRITE_TO(sector_addr, FLASH_SECTOR_ERASE_CMD);


#define ERASE_SUSPEND(bank_addr) \
	WRITE_TO(bank_addr, FLASH_ERASE_SUSPEND_CMD);


#define ERASE_RESUME(bank_addr) \
	WRITE_TO(bank_addr, FLASH_ERASE_RESUME_CMD);


typedef enum
{
	BANK_STATUS_READY = 0,
	BANK_STATUS_BUSY,
	BANK_STATUS_TIMEOUT
}  BANK_STATUS;

#endif /* __AMD_FLASH_H__ */

/*****************************************************************************
* $Log: amdflash.h $
* Revision 1.3  2004/03/17 12:58:00  zgy
* Revision 1.2  2004/03/16 15:56:20  jjs
* Revision 1.1  2003/10/27 09:48:36  jjs
* Initial revision
* Initial revision -- jjs
*****************************************************************************/





⌨️ 快捷键说明

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