📄 flash_nand_parts.h
字号:
#ifndef _FLASH_NAND_PARTS_H#define _FLASH_NAND_PARTS_H#define FLASH_DEBUG 0#define FLASHWORD(x) (x & 0xff)//----------------------------------------------------------------------------// Common device details.#define FLASH_Read_ID FLASHWORD(0x90)#define FLASH_Reset FLASHWORD(0xFF)#define FLASH_Read_Mode1 FLASHWORD(0x00)#define FLASH_Read_Mode2 FLASHWORD(0x01)#define FLASH_Read_Mode3 FLASHWORD(0x50)#define FLASH_Program FLASHWORD(0x10)#define FLASH_Send_Data FLASHWORD(0x80)#define FLASH_Status FLASHWORD(0x70)#define FLASH_Block_Erase FLASHWORD(0x60)#define FLASH_Start_Erase FLASHWORD(0xD0)//#define CYGNUM_FLASH_ID_MANUFACTURER FLASHWORD(0x98)#define CYGNUM_FLASH_VENDOR_TOSHIBA FLASHWORD(0x98)#define CYGNUM_FLASH_VENDOR_SAMSUNG FLASHWORD(0xec)//--> storlink define#define FLASH_WORD_ID 0x00000000#define FLASH_STATUS 0x00000008#define FLASH_TYPE 0x0000000C#define NFLASH_ACCESS 0x00000030#define NFLASH_COUNT 0x00000034#define NFLASH_COMMAND_ADDRESS 0x00000038#define NFLASH_ADDRESS 0x0000003C#define NFLASH_DATA 0x00000040#define NFLASH_TIMING 0x0000004C #define NFLASH_ECC_STATUS 0x00000050#define NFLASH_ECC_CONTROL 0x00000054#define NFLASH_ECC_OOB 0x0000005c#define NFLASH_ECC_CODE_GEN0 0x00000060#define NFLASH_ECC_CODE_GEN1 0x00000064#define NFLASH_ECC_CODE_GEN2 0x00000068#define NFLASH_ECC_CODE_GEN3 0x0000006C#define NFLASH_FIFO_CONTROL 0x00000070#define NFLASH_FIFO_STATUS 0x00000074#define NFLASH_FIFO_ADDRESS 0x00000078#define NFLASH_FIFO_DATA 0x0000007c#define NFLASH_CHIP0_EN 0x00000000 // 16th bit = 0#define NFLASH_CHIP1_EN 0x00010000 // 16th bit = 1#define NFLASH_WiDTH8 0x00000000#define NFLASH_WiDTH16 0x00000400#define NFLASH_WiDTH32 0x00000800#define NFLASH_DIRECT 0x00004000 //0x00004000 0x00044000#define NFLASH_INDIRECT 0x00000000/* DMA Registers */#define DMA_MAIN_CFG 0x00000024#define DMA_INT_TC_CLR 0x00000008#define DMA_TC 0x00000014#define DMA_CH0_CSR 0x00000100#define DMA_CH0_CFG 0x00000104#define DMA_CH0_SRC_ADDR 0x00000108#define DMA_CH0_DST_ADDR 0x0000010c#define DMA_CH0_LLP 0x00000110#define DMA_CH0_SIZE 0x00000114#define PASS 1#define FAIL 2#define ECCERROR 3#define Sequential_Data_Input_cmd 0x80#define Read1_cmd 0x00#define Read2_cmd 0x50#define ReadID_cmd 0x90#define Reset_cmd 0xff#define Page_Program_cmd 0x10#define Block_Erase_cmd 0x60#define Block_Erase_Confirm_cmd 0xd0#define Read_Status_cmd 0x70#define FLASH_INTERLEAVE 1// <--//typedef unsigned long long UINT64;typedef struct flash_dev_info { UINT8 device_id; UINT32 block_size; UINT32 page_size; UINT32 block_count; UINT32 base_mask; UINT32 device_size;} flash_dev_info_t;static const flash_dev_info_t supported_devices[] = {{ // 8Mb (1MB) device_id : FLASHWORD(0x6e), block_size : 0x1000 * FLASH_INTERLEAVE, page_size : 0x100 * FLASH_INTERLEAVE, block_count: 256, device_size: 0x100000 * FLASH_INTERLEAVE, base_mask : ~(0x100000 * FLASH_INTERLEAVE - 1),},{ // 8Mb (1MB) device_id : FLASHWORD(0xec), block_size : 0x1000 * FLASH_INTERLEAVE, page_size : 0x100 * FLASH_INTERLEAVE, block_count: 256, device_size: 0x100000 * FLASH_INTERLEAVE, base_mask : ~(0x100000 * FLASH_INTERLEAVE - 1),},{ // 16Mb (2MB) device_id : FLASHWORD(0xea), block_size : 0x1000 * FLASH_INTERLEAVE, page_size : 0x100 * FLASH_INTERLEAVE, block_count: 512, device_size: 0x200000 * FLASH_INTERLEAVE, base_mask : ~(0x200000 * FLASH_INTERLEAVE - 1),},{ // 16Mb (2MB) device_id : FLASHWORD(0x64), block_size : 0x1000 * FLASH_INTERLEAVE, page_size : 0x100 * FLASH_INTERLEAVE, block_count: 512, device_size: 0x200000 * FLASH_INTERLEAVE, base_mask : ~(0x200000 * FLASH_INTERLEAVE - 1),},{ // 32Mb (4MB) device_id : FLASHWORD(0xe3), block_size : 0x2000 * FLASH_INTERLEAVE, page_size : 0x200 * FLASH_INTERLEAVE, block_count: 512, device_size: 0x400000 * FLASH_INTERLEAVE, base_mask : ~(0x400000 * FLASH_INTERLEAVE - 1),},{ // 32Mb (4MB) device_id : FLASHWORD(0xe5), block_size : 0x2000 * FLASH_INTERLEAVE, page_size : 0x200 * FLASH_INTERLEAVE, block_count: 512, device_size: 0x400000 * FLASH_INTERLEAVE, base_mask : ~(0x400000 * FLASH_INTERLEAVE - 1),},{ // 32Mb (4MB) device_id : FLASHWORD(0x6b), block_size : 0x2000 * FLASH_INTERLEAVE, page_size : 0x200 * FLASH_INTERLEAVE, block_count: 512, device_size: 0x400000 * FLASH_INTERLEAVE, base_mask : ~(0x400000 * FLASH_INTERLEAVE - 1),},{ // 64Mb (8MB) device_id : FLASHWORD(0xe6), block_size : 0x2000 * FLASH_INTERLEAVE, page_size : 0x200 * FLASH_INTERLEAVE, block_count: 1024, device_size: 0x800000 * FLASH_INTERLEAVE, base_mask : ~(0x800000 * FLASH_INTERLEAVE - 1),},{ // 64Mb (8MB) device_id : FLASHWORD(0x6d), block_size : 0x2000 * FLASH_INTERLEAVE, page_size : 0x200 * FLASH_INTERLEAVE, block_count: 1024, device_size: 0x800000 * FLASH_INTERLEAVE, base_mask : ~(0x800000 * FLASH_INTERLEAVE - 1),},{ // 64Mb (8MB) device_id : FLASHWORD(0x70), block_size : 0x2000 * FLASH_INTERLEAVE, page_size : 0x200 * FLASH_INTERLEAVE, block_count: 1024, device_size: 0x800000 * FLASH_INTERLEAVE, base_mask : ~(0x800000 * FLASH_INTERLEAVE - 1),},{ // 64Mb (8MB) device_id : FLASHWORD(0x39), block_size : 0x2000 * FLASH_INTERLEAVE, page_size : 0x200 * FLASH_INTERLEAVE, block_count: 1024, device_size: 0x800000 * FLASH_INTERLEAVE, base_mask : ~(0x800000 * FLASH_INTERLEAVE - 1),},{ // 128Mb (16MB) device_id : FLASHWORD(0x73), block_size : 0x4000 * FLASH_INTERLEAVE, page_size : 0x200 * FLASH_INTERLEAVE, block_count: 1024, device_size: 0x1000000 * FLASH_INTERLEAVE, base_mask : ~(0x1000000 * FLASH_INTERLEAVE - 1),},{ // 128Mb (16MB) device_id : FLASHWORD(0xf2), block_size : 0x4000 * FLASH_INTERLEAVE, page_size : 0x200 * FLASH_INTERLEAVE, block_count: 1024, device_size: 0x1000000 * FLASH_INTERLEAVE, base_mask : ~(0x1000000 * FLASH_INTERLEAVE - 1),},{ // 128Mb (16MB) device_id : FLASHWORD(0x33), block_size : 0x4000 * FLASH_INTERLEAVE, page_size : 0x200 * FLASH_INTERLEAVE, block_count: 1024, device_size: 0x1000000 * FLASH_INTERLEAVE, base_mask : ~(0x1000000 * FLASH_INTERLEAVE - 1),},{ // 128Mb (16MB) device_id : FLASHWORD(0x53), block_size : 0x4000 * FLASH_INTERLEAVE, page_size : 0x200 * FLASH_INTERLEAVE, block_count: 1024, device_size: 0x1000000 * FLASH_INTERLEAVE, base_mask : ~(0x1000000 * FLASH_INTERLEAVE - 1),},{ // 256Mb (32MB) device_id : FLASHWORD(0xf4), block_size : 0x4000 * FLASH_INTERLEAVE, page_size : 0x200 * FLASH_INTERLEAVE, block_count: 2048, device_size: 0x2000000 * FLASH_INTERLEAVE, base_mask : ~(0x2000000 * FLASH_INTERLEAVE - 1),},{ // 256Mb (32MB) device_id : FLASHWORD(0x75), block_size : 0x4000 * FLASH_INTERLEAVE, page_size : 0x200 * FLASH_INTERLEAVE, block_count: 2048, device_size: 0x2000000 * FLASH_INTERLEAVE, base_mask : ~(0x2000000 * FLASH_INTERLEAVE - 1),},{ // 256Mb (32MB) device_id : FLASHWORD(0x35), block_size : 0x4000 * FLASH_INTERLEAVE, page_size : 0x200 * FLASH_INTERLEAVE, block_count: 2048, device_size: 0x2000000 * FLASH_INTERLEAVE, base_mask : ~(0x2000000 * FLASH_INTERLEAVE - 1),},{ // 256Mb (32MB) device_id : FLASHWORD(0x45), block_size : 0x4000 * FLASH_INTERLEAVE, page_size : 0x200 * FLASH_INTERLEAVE, block_count: 2048, device_size: 0x2000000 * FLASH_INTERLEAVE, base_mask : ~(0x2000000 * FLASH_INTERLEAVE - 1),},{ // 256Mb (32MB) device_id : FLASHWORD(0x55), block_size : 0x4000 * FLASH_INTERLEAVE, page_size : 0x200 * FLASH_INTERLEAVE, block_count: 2048, device_size: 0x2000000 * FLASH_INTERLEAVE, base_mask : ~(0x2000000 * FLASH_INTERLEAVE - 1),},{ // 512Mb (64MB) device_id : FLASHWORD(0xf7), block_size : 0x4000 * FLASH_INTERLEAVE, page_size : 0x200 * FLASH_INTERLEAVE, block_count: 4096, device_size: 0x4000000 * FLASH_INTERLEAVE, base_mask : ~(0x4000000 * FLASH_INTERLEAVE - 1),},{ // 512Mb (64MB) device_id : FLASHWORD(0x76), block_size : 0x4000 * FLASH_INTERLEAVE, page_size : 0x200 * FLASH_INTERLEAVE, block_count: 4096, device_size: 0x4000000 * FLASH_INTERLEAVE, base_mask : ~(0x4000000 * FLASH_INTERLEAVE - 1),},{ // 512Mb (64MB) device_id : FLASHWORD(0x36), block_size : 0x4000 * FLASH_INTERLEAVE, page_size : 0x200 * FLASH_INTERLEAVE, block_count: 4096, device_size: 0x4000000 * FLASH_INTERLEAVE, base_mask : ~(0x4000000 * FLASH_INTERLEAVE - 1),},{ // 512Mb (64MB) device_id : FLASHWORD(0x56), block_size : 0x4000 * FLASH_INTERLEAVE, page_size : 0x200 * FLASH_INTERLEAVE, block_count: 4096, device_size: 0x4000000 * FLASH_INTERLEAVE, base_mask : ~(0x4000000 * FLASH_INTERLEAVE - 1),},{ // 1024Mb (128MB) small page device_id : FLASHWORD(0xf8), block_size : 0x4000 * FLASH_INTERLEAVE, page_size : 0x200 * FLASH_INTERLEAVE, block_count: 8192, device_size: 0x8000000 * FLASH_INTERLEAVE, base_mask : ~(0x8000000 * FLASH_INTERLEAVE - 1),},{ // 1024Mb (128MB) small page device_id : FLASHWORD(0x79), block_size : 0x4000 * FLASH_INTERLEAVE, page_size : 0x200 * FLASH_INTERLEAVE, block_count: 8192, device_size: 0x8000000 * FLASH_INTERLEAVE, base_mask : ~(0x8000000 * FLASH_INTERLEAVE - 1),},{ // 1024Mb (128MB) small page device_id : FLASHWORD(0x78), block_size : 0x4000 * FLASH_INTERLEAVE, page_size : 0x200 * FLASH_INTERLEAVE, block_count: 8192, device_size: 0x8000000 * FLASH_INTERLEAVE, base_mask : ~(0x8000000 * FLASH_INTERLEAVE - 1),},{ // 1024Mb (128MB) small page device_id : FLASHWORD(0x74), block_size : 0x4000 * FLASH_INTERLEAVE, page_size : 0x200 * FLASH_INTERLEAVE, block_count: 8192, device_size: 0x8000000 * FLASH_INTERLEAVE, base_mask : ~(0x8000000 * FLASH_INTERLEAVE - 1),},{ // 1024Mb (128MB) small page device_id : FLASHWORD(0xb1), block_size : 0x4000 * FLASH_INTERLEAVE, page_size : 0x200 * FLASH_INTERLEAVE, block_count: 8192, device_size: 0x8000000 * FLASH_INTERLEAVE, base_mask : ~(0x8000000 * FLASH_INTERLEAVE - 1),},{ // 1024Mb (128MB) small page device_id : FLASHWORD(0xc1), block_size : 0x4000 * FLASH_INTERLEAVE, page_size : 0x200 * FLASH_INTERLEAVE, block_count: 8192, device_size: 0x8000000 * FLASH_INTERLEAVE, base_mask : ~(0x8000000 * FLASH_INTERLEAVE - 1),},{ // 1024Mb (128MB) large page device_id : FLASHWORD(0xA1), block_size : 0x20000 * FLASH_INTERLEAVE, page_size : 0x800 * FLASH_INTERLEAVE, block_count: 1024, device_size: 0x8000000 * FLASH_INTERLEAVE, base_mask : ~(0x8000000 * FLASH_INTERLEAVE - 1),},{ // 1024Mb (128MB) large page device_id : FLASHWORD(0xf1), block_size : 0x20000 * FLASH_INTERLEAVE, page_size : 0x800 * FLASH_INTERLEAVE, block_count: 1024, device_size: 0x8000000 * FLASH_INTERLEAVE, base_mask : ~(0x8000000 * FLASH_INTERLEAVE - 1),},};void flash_delay(void);#endif // ifndef CYGONCE_DEVS_FLASH_TOSHIBA_TC58XXX_PARTS_INL
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -