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

📄 amd29f010.h

📁 motorola自己开发的针对coldfire 5272的Dbug bootloader程序
💻 H
字号:
/*
 * File:		amd29f010.h
 * Purpose:		Header file containing data definitions for the
 *				AMD 29F010 Flash memory device.  128Kx8
 *
 * Notes:
 *
 * Author:		Eric DeVolder
 * Date:		7-8-96
 *
 * Modifications:
 *
 */

#ifndef _AMD29F010_H
#define _AMD29F010_H

/*
 * The AMD29F010 FLASH devices.  These devices are 128K x 8 devices.
 */
#define AMD29F010_SECTOR_SIZE		(16 * 1024)
#define AMD29F010_SECTORS			(8)

#define AMD29F010_ADDR1				(0x5555)
#define AMD29F010_ADDR2				(0x2AAA)

#if (defined(AMD29F010_32BIT_WIDE))
typedef volatile uint32 AMD29F010_CELL;

#define AMD29F010_READ_CMD1			(0xAAAAAAAA)
#define AMD29F010_READ_CMD2			(0x55555555)
#define AMD29F010_READ_CMD3			(0xF0F0F0F0)

#define AMD29F010_AUTOSELECT_CMD1	(0xAAAAAAAA)
#define AMD29F010_AUTOSELECT_CMD2	(0x55555555)
#define AMD29F010_AUTOSELECT_CMD3	(0x90909090)

#define AMD29F010_BYTEPROG_CMD1		(0xAAAAAAAA)
#define AMD29F010_BYTEPROG_CMD2		(0x55555555)
#define AMD29F010_BYTEPROG_CMD3		(0xA0A0A0A0)

#define AMD29F010_CHIPERASE_CMD1	(0xAAAAAAAA)
#define AMD29F010_CHIPERASE_CMD2	(0x55555555)
#define AMD29F010_CHIPERASE_CMD3	(0x80808080)
#define AMD29F010_CHIPERASE_CMD4	(0xAAAAAAAA)
#define AMD29F010_CHIPERASE_CMD5	(0x55555555)
#define AMD29F010_CHIPERASE_CMD6	(0x10101010)

#define AMD29F010_SECTORERASE_CMD1	(0xAAAAAAAA)
#define AMD29F010_SECTORERASE_CMD2	(0x55555555)
#define AMD29F010_SECTORERASE_CMD3	(0x80808080)
#define AMD29F010_SECTORERASE_CMD4	(0xAAAAAAAA)
#define AMD29F010_SECTORERASE_CMD5	(0x55555555)
#define AMD29F010_SECTORERASE_CMD6	(0x30303030)

#define AMD29F010_AMD_CODE			(0x01010101)
#define AMD29F010_DEVICE_CODE		(0x20202020)
#define AMD29F010_SECTORERASE_DONE	(0x80808080)
#define AMD29F010_DATA_POLL_MASK	(0x80808080)
#define AMD29F010_TIME_EXCEEDED		(0x20202020)
#endif

#if (defined(AMD29F010_16BIT_WIDE))
typedef volatile uint16 AMD29F010_CELL;

#define AMD29F010_READ_CMD1			(0xAAAA)
#define AMD29F010_READ_CMD2			(0x5555)
#define AMD29F010_READ_CMD3			(0xF0F0)

#define AMD29F010_AUTOSELECT_CMD1	(0xAAAA)
#define AMD29F010_AUTOSELECT_CMD2	(0x5555)
#define AMD29F010_AUTOSELECT_CMD3	(0x9090)

#define AMD29F010_BYTEPROG_CMD1		(0xAAAA)
#define AMD29F010_BYTEPROG_CMD2		(0x5555)
#define AMD29F010_BYTEPROG_CMD3		(0xA0A0)

#define AMD29F010_CHIPERASE_CMD1	(0xAAAA)
#define AMD29F010_CHIPERASE_CMD2	(0x5555)
#define AMD29F010_CHIPERASE_CMD3	(0x8080)
#define AMD29F010_CHIPERASE_CMD4	(0xAAAA)
#define AMD29F010_CHIPERASE_CMD5	(0x5555)
#define AMD29F010_CHIPERASE_CMD6	(0x1010)

#define AMD29F010_SECTORERASE_CMD1	(0xAAAA)
#define AMD29F010_SECTORERASE_CMD2	(0x5555)
#define AMD29F010_SECTORERASE_CMD3	(0x8080)
#define AMD29F010_SECTORERASE_CMD4	(0xAAAA)
#define AMD29F010_SECTORERASE_CMD5	(0x5555)
#define AMD29F010_SECTORERASE_CMD6	(0x3030)

#define AMD29F010_AMD_CODE			(0x0101)
#define AMD29F010_DEVICE_CODE		(0x2020)
#define AMD29F010_SECTORERASE_DONE	(0x8080)
#define AMD29F010_DATA_POLL_MASK	(0x8080)
#define AMD29F010_TIME_EXCEEDED		(0x2020)
#endif

#if (defined(AMD29F010_8BIT_WIDE))
typedef volatile uint8 AMD29F010_CELL;

#define AMD29F010_READ_CMD1			(0xAA)
#define AMD29F010_READ_CMD2			(0x55)
#define AMD29F010_READ_CMD3			(0xF0)

#define AMD29F010_AUTOSELECT_CMD1	(0xAA)
#define AMD29F010_AUTOSELECT_CMD2	(0x55)
#define AMD29F010_AUTOSELECT_CMD3	(0x90)

#define AMD29F010_BYTEPROG_CMD1		(0xAA)
#define AMD29F010_BYTEPROG_CMD2		(0x55)
#define AMD29F010_BYTEPROG_CMD3		(0xA0)

#define AMD29F010_CHIPERASE_CMD1	(0xAA)
#define AMD29F010_CHIPERASE_CMD2	(0x55)
#define AMD29F010_CHIPERASE_CMD3	(0x80)
#define AMD29F010_CHIPERASE_CMD4	(0xAA)
#define AMD29F010_CHIPERASE_CMD5	(0x55)
#define AMD29F010_CHIPERASE_CMD6	(0x10)

#define AMD29F010_SECTORERASE_CMD1	(0xAA)
#define AMD29F010_SECTORERASE_CMD2	(0x55)
#define AMD29F010_SECTORERASE_CMD3	(0x80)
#define AMD29F010_SECTORERASE_CMD4	(0xAA)
#define AMD29F010_SECTORERASE_CMD5	(0x55)
#define AMD29F010_SECTORERASE_CMD6	(0x30)

#define AMD29F010_AMD_CODE			(0x01)
#define AMD29F010_DEVICE_CODE		(0x20)
#define AMD29F010_SECTORERASE_DONE	(0x80)
#define AMD29F010_DATA_POLL_MASK	(0x80)
#define AMD29F010_TIME_EXCEEDED		(0x20)
#endif

typedef enum
{
	AMD29F010_SECTOR_0 = 0,
	AMD29F010_SECTOR_1 = 1,
	AMD29F010_SECTOR_2 = 2,
	AMD29F010_SECTOR_3 = 3,
	AMD29F010_SECTOR_4 = 4,
	AMD29F010_SECTOR_5 = 5,
	AMD29F010_SECTOR_6 = 6,
	AMD29F010_SECTOR_7 = 7
} AMD29F010_SECTOR;

/*****************************************************************/
typedef volatile struct
{
	AMD29F010_CELL	manuf;
	AMD29F010_CELL	id;
	AMD29F010_CELL	dataA[AMD29F010_ADDR2 - 2];
	AMD29F010_CELL	cmdreg2;
	AMD29F010_CELL	dataB[AMD29F010_ADDR1 - AMD29F010_ADDR2 - 1];
	AMD29F010_CELL	cmdreg1;
} AMD29F010_DEVICE;

typedef volatile struct
{
	AMD29F010_CELL data[AMD29F010_SECTOR_SIZE];
} AMD29F010_SECTORDATA;

typedef volatile union
{
	AMD29F010_DEVICE		device;
	AMD29F010_SECTORDATA	sector[AMD29F010_SECTORS];

} AMD29F010;

/*****************************************************************/
int
amd29f010_id (AMD29F010 *);

int
amd29f010_sector_erase (AMD29F010 *, AMD29F010_SECTOR);

int
amd29f010_write (AMD29F010 *, void *, unsigned,
	AMD29F010_SECTOR, void (*)(void));
/*****************************************************************/

#endif /* _AMD29F010_H */

⌨️ 快捷键说明

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