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

📄 am29xxxx.h

📁 motorola自己开发的针对coldfire 5272的Dbug bootloader程序
💻 H
📖 第 1 页 / 共 2 页
字号:
/*
 * File:		common/firmware/AM29XXXX.h
 * Purpose:		AMD29XXXX Flash memory device driver
 *
 * Supports:	AM29F010
 *				AM29F040
 *				AM29F080
 *				AM29F016
 *				AM29F800
 *				AM29LV004
 *				AM29PL160
 *				AM29LV160
 *				AM29LV160D
 */

#ifndef _COMMON_FIRMWARE_AM29XXXX_H
#define _COMMON_FIRMWARE_AM29XXXX_H

typedef struct FLASH
{
	void	**blockptr;
	int		sect;
	uint32	blocksz;
	uint32	numblocks;

}FLASH;
/********************************************************************/

/*
 * AM29F010
 */
#if		(defined(AM29XXXX_AM29F010))
#define AM29XXXX_SECTOR_SIZE		(16 * 1024)
#define AM29XXXX_SECTORS			(8)
#define AM29XXXX_device_code		(0x20)
/********************************************************************/

/*
 * AM29F040
 */
#elif	(defined(AM29XXXX_AM29F040))
#define AM29XXXX_SECTOR_SIZE		(64 * 1024)
#define AM29XXXX_SECTORS			(8)
#define AM29XXXX_device_code		(0xA4)
/********************************************************************/

/*
 * AM29F080
 */
#elif	(defined(AM29XXXX_AM29F080))
#define AM29XXXX_SECTOR_SIZE		(64 * 1024)
#define AM29XXXX_SECTORS			(16)
#define AM29XXXX_device_code		(0xD5)
/********************************************************************/

/*
 * AM29F016
 */
#elif	(defined(AM29XXXX_AM29F016))
#define AM29XXXX_SECTOR_SIZE		(64 * 1024)
#define AM29XXXX_SECTORS			(32)
#define AM29XXXX_device_code		(0xAD)
/********************************************************************/

/*
 * AM29F800B8 - Bottom boot block in 8-bit mode
 */
#elif	(defined(AM29XXXX_AM29F800B8))
#define AM29XXXX_SECTOR_SIZE		(64 * 1024)
#define AM29XXXX_SECTORS			(19)
#define AM29XXXX_sectors			(16)
#define AM29XXXX_device_code		(0x58)
#define AM29XXXX_VARIABLE_SECTOR
/#define AM29XXXX_sector_size(S,SZ)	\
	if (S == 0)      SZ = 0x00004000; 	\
	else if (S == 1) SZ = 0x00002000;	\
	else if (S == 2) SZ = 0x00002000;	\
	else if (S == 3) SZ = 0x00008000;	\
	else SZ = AM29XXXX_SECTOR_SIZE


/*
 * AM29F800B16 - Bottom boot block in 16-bit mode
 */
#elif	(defined(AM29XXXX_AM29F800B16))
#define AM29XXXX_SECTOR_SIZE		(64 * 1024)
#define AM29XXXX_SECTORS			(19)
#define AM29XXXX_sectors			(16)
#define AM29XXXX_device_code		(0x58)
#define AM29XXXX_VARIABLE_SECTOR
#define AM29XXXX_sector_index(S,I)	\
	if (S == 0)      I = 0x00000000;	\
	else if (S == 1) I = 0x00002000;	\
	else if (S == 2) I = 0x00003000;	\
	else if (S == 3) I = 0x00004000;	\
	else I = ((S - 3) * (AM29XXXX_SECTOR_SIZE >> 1))
#define AM29XXXX_sector_size(S,SZ)	\
	if (S == 0)      SZ = 0x00002000; 	\
	else if (S == 1) SZ = 0x00001000;	\
	else if (S == 2) SZ = 0x00001000;	\
	else if (S == 3) SZ = 0x00004000;	\
	else SZ = (AM29XXXX_SECTOR_SIZE>>1)

/*
 * AM29F800T8 - Top boot block in 8-bit mode
 */
#elif	(defined(AM29XXXX_AM29F800T8))
#define AM29XXXX_SECTOR_SIZE		(64 * 1024)
#define AM29XXXX_SECTORS			(19)
#define AM29XXXX_sectors			(16)
#define AM29XXXX_device_code		(0xD6)
#define AM29XXXX_VARIABLE_SECTOR
#define AM29XXXX_sector_index(S,I)	\
	if (S <= 15) I = (S * AM29XXXX_SECTOR_SIZE);		\
	else if (S == 16) I = 0x000F8000;	\
	else if (S == 17) I = 0x000FA000;	\
	else if (S == 18) I = 0x000FC000
#define AM29XXXX_sector_size(S,SZ)	\
	if (S == 18)      SZ = 0x00004000; 	\
	else if (S == 17) SZ = 0x00002000;	\
	else if (S == 16) SZ = 0x00002000;	\
	else if (S == 15) SZ = 0x00008000;	\
	else SZ = AM29XXXX_SECTOR_SIZE

/*
 * AM29F800T16 - Top boot block in 16-bit mode
 */
#elif	(defined(AM29XXXX_AM29F800T16))
#define AM29XXXX_SECTOR_SIZE		(64 * 1024)
#define AM29XXXX_SECTORS			(19)
#define AM29XXXX_sectors			(16)
#define AM29XXXX_device_code		(0xD6)
#define AM29XXXX_VARIABLE_SECTOR
#define AM29XXXX_sector_index(S,I)	\
	if (S <= 15) I = (S * (AM29XXXX_SECTOR_SIZE >> 1));		\
	else if (S == 16) I = 0x0007C000;	\
	else if (S == 17) I = 0x0007D000;	\
	else if (S == 18) I = 0x0007E000
#define AM29XXXX_sector_size(S,SZ)	\
	if (S == 18)      SZ = 0x00002000; 	\
	else if (S == 17) SZ = 0x00001000;	\
	else if (S == 16) SZ = 0x00001000;	\
	else if (S == 15) SZ = 0x00004000;	\
	else SZ = (AM29XXXX_SECTOR_SIZE>>1)
/********************************************************************/

/*
 * AM29LV800B8 - Bottom boot block in 8-bit mode
 */
#elif	(defined(AM29XXXX_AM29LV800B8))
#define AM29XXXX_SECTOR_SIZE		(64 * 1024)
#define AM29XXXX_SECTORS			(19)
#define AM29XXXX_sectors			(16)
#define AM29XXXX_device_code		(0x5B)
#define AM29XXXX_VARIABLE_SECTOR
#define AM29XXXX_sector_index(S,I)	\
	if (S == 0)      I = 0x00000000; 	\
	else if (S == 1) I = 0x00004000;	\
	else if (S == 2) I = 0x00006000;	\
	else if (S == 3) I = 0x00008000;	\
	else I = ((S - 3) * AM29XXXX_SECTOR_SIZE)
#define AM29XXXX_sector_size(S,SZ)	\
	if (S == 0)      SZ = 0x00004000; 	\
	else if (S == 1) SZ = 0x00002000;	\
	else if (S == 2) SZ = 0x00002000;	\
	else if (S == 3) SZ = 0x00008000;	\
	else SZ = AM29XXXX_SECTOR_SIZE

/*
 * AM29LV800B16 - Bottom boot block in 16-bit mode
 */
#elif	(defined(AM29XXXX_AM29LV800B16))
#define AM29XXXX_SECTOR_SIZE		(64 * 1024)
#define AM29XXXX_SECTORS			(19)
#define AM29XXXX_sectors			(16)
#define AM29XXXX_device_code		(0x5B)
#define AM29XXXX_VARIABLE_SECTOR
#define AM29XXXX_sector_index(S,I)	\
	if (S == 0)      I = 0x00000000;	\
	else if (S == 1) I = 0x00002000;	\
	else if (S == 2) I = 0x00003000;	\
	else if (S == 3) I = 0x00004000;	\
	else I = ((S - 3) * (AM29XXXX_SECTOR_SIZE >> 1))
#define AM29XXXX_sector_size(S,SZ)	\
	if (S == 0)      SZ = 0x00002000; 	\
	else if (S == 1) SZ = 0x00001000;	\
	else if (S == 2) SZ = 0x00001000;	\
	else if (S == 3) SZ = 0x00004000;	\
	else SZ = (AM29XXXX_SECTOR_SIZE>>1)

/*
 * AM29LV800T8 - Top boot block in 8-bit mode
 */
#elif	(defined(AM29XXXX_AM29LV800T8))
#define AM29XXXX_SECTOR_SIZE		(64 * 1024)
#define AM29XXXX_SECTORS			(19)
#define AM29XXXX_sectors			(16)
#define AM29XXXX_device_code		(0xDA)
#define AM29XXXX_VARIABLE_SECTOR
#define AM29XXXX_sector_index(S,I)	\
	if (S <= 15) I = (S * AM29XXXX_SECTOR_SIZE);		\
	else if (S == 16) I = 0x000F8000;	\
	else if (S == 17) I = 0x000FA000;	\
	else if (S == 18) I = 0x000FC000
#define AM29XXXX_sector_size(S,SZ)	\
	if (S == 18)      SZ = 0x00004000; 	\
	else if (S == 17) SZ = 0x00002000;	\
	else if (S == 16) SZ = 0x00002000;	\
	else if (S == 15) SZ = 0x00008000;	\
	else SZ = AM29XXXX_SECTOR_SIZE

/*
 * AM29LV800T16 - Top boot block in 16-bit mode
 */
#elif	(defined(AM29XXXX_AM29LV800T16))
#define AM29XXXX_SECTOR_SIZE		(64 * 1024)
#define AM29XXXX_SECTORS			(19)
#define AM29XXXX_sectors			(16)
#define AM29XXXX_device_code		(0xDA)
#define AM29XXXX_VARIABLE_SECTOR
#define AM29XXXX_sector_index(S,I)	\
	if (S <= 15) I = (S * (AM29XXXX_SECTOR_SIZE >> 1));		\
	else if (S == 16) I = 0x0007C000;	\
	else if (S == 17) I = 0x0007D000;	\
	else if (S == 18) I = 0x0007E000
#define AM29XXXX_sector_size(S,SZ)	\
	if (S == 18)      SZ = 0x00002000; 	\
	else if (S == 17) SZ = 0x00001000;	\
	else if (S == 16) SZ = 0x00001000;	\
	else if (S == 15) SZ = 0x00004000;	\
	else SZ = (AM29XXXX_SECTOR_SIZE>>1)
/********************************************************************/

/*
 * AM29LV004BB
 */
#elif	(defined(AM29XXXX_AM29LV004BB))
#define AM29XXXX_SECTOR_SIZE		(64 * 1024)
#define AM29XXXX_SECTORS			(11)
#define AM29XXXX_sectors			(8)
#define AM29XXXX_device_code		(0xB6)
#define AM29XXXX_VARIABLE_SECTOR
#define AM29XXXX_sector_index(S,I)	\
	if (S == 0)      I = 0x00000000; 	\
	else if (S == 1) I = (0x00004000);	\
	else if (S == 2) I = (0x00006000);	\
	else if (S == 3) I = (0x00008000);	\
	else I = ((S - 3) * AM29XXXX_SECTOR_SIZE)
#define AM29XXXX_sector_size(S,SZ)	\
	if (S == 0)      SZ = (0x00004000); 	\
	else if (S == 1) SZ = (0x00002000);	\
	else if (S == 2) SZ = (0x00002000);	\
	else if (S == 3) SZ = (0x00008000);	\
	else SZ = AM29XXXX_SECTOR_SIZE

/*
 * AM29LV004BT
 */
#elif	(defined(AM29XXXX_AM29LV004BT))
#define AM29XXXX_SECTOR_SIZE		(64 * 1024)
#define AM29XXXX_SECTORS			(11)
#define AM29XXXX_sectors			(8)
#define AM29XXXX_device_code		(0xB5)
#define AM29XXXX_VARIABLE_SECTOR
#define AM29XXXX_sector_index(S,I)	\
	if (S <= 7) I = (S * AM29XXXX_SECTOR_SIZE);		\
	else if (S == 8) I = (0x00078000);	\
	else if (S == 9) I = (0x0007A000);	\
	else if (S == 10) I = (0x0007C000)
#define AM29XXXX_sector_size(S,SZ)	\
	if (S == 10)      SZ = (0x00004000); \
	else if (S == 9) SZ = (0x00002000);	\
	else if (S == 8) SZ = (0x00002000);	\
	else if (S == 7) SZ = (0x00008000);	\
	else SZ = AM29XXXX_SECTOR_SIZE
/********************************************************************/

/*
 * AM29PL160CB8 - Bottom boot block in 8-bit mode
 */
#elif	(defined(AM29XXXX_AM29PL160CB8))
#define AM29XXXX_SECTOR_SIZE		(256 * 1024)
#define AM29XXXX_SECTORS			(11)
#define AM29XXXX_sectors			(8)
#define AM29XXXX_device_code		(0x45)
#define AM29XXXX_VARIABLE_SECTOR
#define AM29XXXX_sector_index(S,I)	\
	if (S == 0)      I = 0x00000000; 	\
	else if (S == 1) I = 0x00004000;	\
	else if (S == 2) I = 0x00006000;	\
	else if (S == 3) I = 0x00008000;	\
	else I = ((S - 3) * AM29XXXX_SECTOR_SIZE)
#define AM29XXXX_sector_size(S,SZ)	\
	if (S == 0)      SZ = 0x00004000; 	\
	else if (S == 1) SZ = 0x00002000;	\
	else if (S == 2) SZ = 0x00002000;	\
	else if (S == 3) SZ = 0x00040000;	\
	else SZ = AM29XXXX_SECTOR_SIZE

/*
 * AM29PL160CB16 - Bottom boot block in 16-bit mode
 */
#elif	(defined(AM29XXXX_AM29PL160CB16))
#define AM29XXXX_SECTOR_SIZE		(256 * 1024)
#define AM29XXXX_SECTORS			(11)
#define AM29XXXX_sectors			(8)
#define AM29XXXX_device_code		(0x45)
#define AM29XXXX_VARIABLE_SECTOR
#define AM29XXXX_sector_index(S,I)	\

⌨️ 快捷键说明

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