📄 flash.h
字号:
#ifndef __FLASH_H#define __FLASH_H#include "board.h"#define MAX_CHIPS 6#define DEVICE_TYPE_X8 (8 / 8)#define DEVICE_TYPE_X16 (16 / 8)#define DEVICE_TYPE_X32 (32 / 8)/* Addresses */#define ADDR_MANUFACTURER 0x0000#define ADDR_DEVICE_ID 0x0001#define ADDR_SECTOR_LOCK 0x0002#define ADDR_HANDSHAKE 0x0003#define ADDR_UNLOCK_1 0x0555#define ADDR_UNLOCK_2 0x02AA/* Commands */#define CMD_UNLOCK_DATA_1 0x00AA#define CMD_UNLOCK_DATA_2 0x0055#define CMD_MANUFACTURER_UNLOCK_DATA 0x0090#define CMD_UNLOCK_BYPASS_MODE 0x0020#define CMD_PROGRAM_UNLOCK_DATA 0x00A0#define CMD_RESET_DATA 0x00F0#define CMD_SECTOR_ERASE_UNLOCK_DATA 0x0080#define CMD_SECTOR_ERASE_UNLOCK_DATA_2 0x0030#define CMD_UNLOCK_SECTOR 0x0060/* Manufacturers */#define MANUFACTURER_AMD 0x0001#define MANUFACTURER_FUJITSU 0x0004#define MANUFACTURER_ATMEL 0x001f#define MANUFACTURER_ST 0x0020#define MANUFACTURER_TOSHIBA 0x0098#define MANUFACTURER_HYNIX 0x00ad#define MANUFACTURER_SST 0x00bf/* AMD */#define AM29F040B 0x00a4#define AM29F800BB 0x2258#define AM29F800BT 0x22d6#define AM29LV040B 0x004f#define AM29LV800BB 0x225b#define AM29LV800BT 0x22da#define AM29LV160BT_DT 0x22c4#define AM29LV160BB_DB 0x2249/* HYNIX */#define HY29F040A 0x00a4#define HY29LV160T 0x22c4#define HY29LV160B 0x2249/* SST */#define SST39VF040 0x00D7#define SST39VF080 0x00D8#define SST39VF016 0x00D9#define D6_MASK 0x40struct flchip { unsigned long start; /* Offset within the map */ unsigned long size; unsigned long erasesize; int buswidth; /* in octets */ struct mtd_info *mtd;};struct mtd_info { unsigned long offset; /* Offset within the memory */ unsigned long size; /* Total size of the MTD */ int numchips; struct flchip chips[MAX_CHIPS];};struct flash_info { const unsigned short mfr_id; const unsigned short dev_id; const char *name; const unsigned long size; const unsigned long erasesize;};int flash_init(unsigned long rom_base);int flash_read(unsigned long from, unsigned long len, unsigned long *retlen, unsigned char *buf);int flash_write(unsigned long to, unsigned long len, unsigned long *retlen, const unsigned char *buf);int flash_erase(unsigned long addr, unsigned long size);#endif /* __FLASH_H */
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -