📄 flash_drv_amd.h
字号:
// AMD Enter Auto-Select Mode
#define AMD_ENTER_AUTOSELECT_MODE_DATA1 0xAA
#define AMD_ENTER_AUTOSELECT_MODE_DATA2 0x55
#define AMD_ENTER_AUTOSELECT_MODE_DATA3 0x90
// AMD Device ID Read Address
#define AMD_MANUFACTURE_ID_ADDR 0x00
#define AMD_DEVICE_CODE_ADDR 0x01
#define AMD_EXT_DEVICE_CODE1_ADDR 0x0E
#define AMD_EXT_DEVICE_CODE2_ADDR 0x0F
// AMD Enter CFI
#define AMD_ENTER_CFI_ADDR 0x55
#define AMD_ENTER_CFI_DATA 0x98
// AMD CFI Boot Sector Flag
#define AMD_CFI_BOOT_SECTOR_FLAG_ADDR 0x4F
#define AMD_CFI_UNIFORM_DEV 0x0000
#define AMD_CFI_TOP_BOTTOM_WP_DEV 0x0001
#define AMD_CFI_BOTTOM_DEV 0x0002
#define AMD_CFI_TOP_DEV 0x0003
#define AMD_CFI_TOP_BOTTOM_DEV 0x0004
#define AMD_CFI_BANK_A_REGION_INFO_ADDR 0x58
// AMD Reset
#define AMD_RESET_TO_READ_MODE_DATA1 0xF0
// AMD Sector Erase
#define AMD_SECTOR_ERASE_DATA1 0xAA
#define AMD_SECTOR_ERASE_DATA2 0x55
#define AMD_SECTOR_ERASE_DATA3 0x80
#define AMD_SECTOR_ERASE_DATA4 0xAA
#define AMD_SECTOR_ERASE_DATA5 0x55
#define AMD_SECTOR_ERASE_DATA6 0x30
// AMD Enter Unlock Bypass Mode
#define AMD_ENTER_UNLOCK_BYPASS_DATA1 0xAA
#define AMD_ENTER_UNLOCK_BYPASS_DATA2 0x55
#define AMD_ENTER_UNLOCK_BYPASS_DATA3 0x20
// AMD Unlock Bypass Mode Program
#define AMD_UNLOCK_BYPASS_PGM_DATA1 0xA0
// AMD Exit Unlock Bypass Mode
#define AMD_EXIT_UNLOCK_BYPASS_DATA1 0x90
#define AMD_EXIT_UNLOCK_BYPASS_DATA2 0x00
// AMD Word Program
#define AMD_WORD_PGM_DATA1 0xAA
#define AMD_WORD_PGM_DATA2 0x55
#define AMD_WORD_PGM_DATA3 0xA0
// AMD Buffer Program
#define AMD_BUF_PGM_DATA1 0xAA
#define AMD_BUF_PGM_DATA2 0x55
#define AMD_BUF_PGM_DATA3 0x25
#define AMD_BUF_PGM_LAST 0x29
// AMD Polling Status Bits
#define AMD_DQ7_POLL_BIT 0x0080
#define AMD_DQ6_TOGGLE_BIT 0x0040
#define AMD_DQ5_TIMEOUT_ERR_BIT 0x0020
// AMD Sector Protection Command Address
#define AMD_PROTECT_WP_ADDR 0x02 // 00000010
#define AMD_PROTECT_EP_ADDR AMD_PROTECT_WP_ADDR
#define AMD_PROTECT_PL_ADDR 0x0A // 00001010
#define AMD_PROTECT_SL_ADDR 0x12 // 00010010
// AMD Sector PPB Program
#define AMD_PROTECT_PPB_PGM_DATA1 0xAA
#define AMD_PROTECT_PPB_PGM_DATA2 0x55
#define AMD_PROTECT_PPB_PGM_DATA3 0x60
#define AMD_PROTECT_PPB_PGM_DATA4 0x68 // <-- 100us timeout is required between DATA4 and DATA5
#define AMD_PROTECT_PPB_PGM_DATA5 0x48
// AMD Sector PPB Status
#define AMD_PROTECT_PPB_STATUS_DATA1 0xAA
#define AMD_PROTECT_PPB_STATUS_DATA2 0x55
#define AMD_PROTECT_PPB_STATUS_DATA3 0x60
#define AMD_PROTECT_PPB_STATUS_DATA4 0x48
// AMD All Sector PPBs Erase
#define AMD_PROTECT_PPB_ERASE_DATA1 0xAA
#define AMD_PROTECT_PPB_ERASE_DATA2 0x55
#define AMD_PROTECT_PPB_ERASE_DATA3 0x60
#define AMD_PROTECT_PPB_ERASE_DATA4 0x60 // <-- 1.2ms timeout is required between DATA4 and DATA5
#define AMD_PROTECT_PPB_ERASE_DATA5 0x40
// AMD Sector Protection Status Bits
#define AMD_PROTECT_PPB_LOCK_BIT_SET 0x02
#define AMD_PROTECT_PPB_SET 0x01
#ifdef __cplusplus
extern "C" {
#endif
//------------------------------------------------------------------------------
// Callback Function Set
//------------------------------------------------------------------------------
extern const NOR_CMD_Callback_S AMD_CMD_CB_UNLOCK_BYPASS_PGM;
extern const NOR_CMD_Callback_S AMD_CMD_CB_MIRRORBIT_BUF_PGM;
extern const NOR_CMD_Callback_S AMD_CMD_CB_WORD_PGM;
//------------------------------------------------------------------------------
// Memory Sector Layout Set
//------------------------------------------------------------------------------
extern const NOR_Die_Layout_S AMD_32;
extern const NOR_Die_Layout_S AMD_64;
// Top Boot
extern const NOR_Die_Layout_S AMD_T_16;
extern const NOR_Die_Layout_S AMD_T_32;
extern const NOR_Die_Layout_S AMD_T_64;
extern const NOR_Die_Layout_S AMD_T_128;
extern const NOR_Die_Layout_S AMD_T_256;
// Bottom Boot
extern const NOR_Die_Layout_S AMD_B_16;
extern const NOR_Die_Layout_S AMD_B_32;
extern const NOR_Die_Layout_S AMD_B_64;
extern const NOR_Die_Layout_S AMD_B_128;
extern const NOR_Die_Layout_S AMD_B_256;
// Top/Bottom Boot
extern const NOR_Die_Layout_S AMD_TB_32;
extern const NOR_Die_Layout_S AMD_TB_64;
extern const NOR_Die_Layout_S AMD_TB_128;
//------------------------------------------------------------------------------
// MirrorBit Memory Sector Layout Set
//------------------------------------------------------------------------------
// MirrorBit Bottom Boot
extern const NOR_Die_Layout_S AMD_MB_B_64;
// MirrorBit Top Boot
extern const NOR_Die_Layout_S AMD_MB_T_64;
// MirrorBit Top/Bottom Boot
extern const NOR_Die_Layout_S AMD_MB_TB_128;
extern const NOR_Die_Layout_S AMD_MB_TB_256;
//------------------------------------------------------------------------------
// Check Device ID Callback Function
//------------------------------------------------------------------------------
extern bool AMD_CheckDevID(const uint16 dev, volatile uint16 *die1_addr, volatile uint16 *die2_addr);
//------------------------------------------------------------------------------
// Check If Device Is Idle Callback Function
//------------------------------------------------------------------------------
extern bool AMD_CheckDevIdle(const uint32 addr);
//------------------------------------------------------------------------------
// Erase Related Callback Function
//------------------------------------------------------------------------------
extern void AMD_Erase_CMD(const uint32 blockaddr);
extern STATUS_E AMD_Erase_CheckDone_By_Polling(const uint32 blockaddr);
//------------------------------------------------------------------------------
// Program Related Callback Function
//------------------------------------------------------------------------------
extern void AMD_PreProcess(const uint16 dev);
extern void AMD_UnlockBypass_Enter_CMD(const uint32 blockaddr);
extern void AMD_UnlockBypass_Exit_CMD(const uint32 blockaddr);
extern void AMD_UnlockBypass_Program_CMD(const uint32 blockaddr, const uint32 prog_addr, const uint16 data);
extern void AMD_Word_Program_CMD(const uint32 blockaddr, const uint32 prog_addr, const uint16 data);
extern STATUS_E AMD_Program_CheckDone_By_Toggle(const uint32 prog_addr);
//------------------------------------------------------------------------------
// MirrorBit Related Callback Function
//------------------------------------------------------------------------------
extern void AMD_MirrorBit_Erase_CMD(const uint32 blockaddr);
extern void AMD_MirrorBit_PreProcess(const uint16 dev);
extern void AMD_MirrorBit_Buf_Program_CMD(const uint32 blockaddr, const uint32 prog_addr, const uint16 *data, const uint32 length_in_word);
//------------------------------------------------------------------------------
// Protection Related Callback Function
//------------------------------------------------------------------------------
#ifdef AMD_PROTECTION_ENABLED
extern void AMD_UnprotectChip(const uint16 dev);
extern bool AMD_Protection_PPB_Program_CMD(uint32 blockaddr);
extern bool AMD_Protection_PPB_Status_CMD(uint32 blockaddr);
extern bool AMD_Protection_Erase_All_PPBs_CMD(uint32 blockaddr);
#endif
#ifdef __cplusplus
}
#endif
#endif
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -