1
2
3
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
/* ... */
#ifndef OPENOCD_FLASH_NOR_SPI_H
#define OPENOCD_FLASH_NOR_SPI_H
#ifndef __ASSEMBLER__
struct flash_device {
const char *name;
uint8_t read_cmd;
uint8_t qread_cmd;
uint8_t pprog_cmd;
uint8_t erase_cmd;
uint8_t chip_erase_cmd;
uint32_t device_id;
uint32_t pagesize;
uint32_t sectorsize;
uint32_t size_in_bytes;
...};
#define FLASH_ID(n, re, qr, pp, es, ces, id, psize, ssize, size) \
{ \
.name = n, \
.read_cmd = re, \
.qread_cmd = qr, \
.pprog_cmd = pp, \
.erase_cmd = es, \
.chip_erase_cmd = ces, \
.device_id = id, \
.pagesize = psize, \
.sectorsize = ssize, \
.size_in_bytes = size, \
...}...
#define FRAM_ID(n, re, qr, pp, id, size) \
{ \
.name = n, \
.read_cmd = re, \
.qread_cmd = qr, \
.pprog_cmd = pp, \
.erase_cmd = 0x00, \
.chip_erase_cmd = 0x00, \
.device_id = id, \
.pagesize = 0, \
.sectorsize = 0, \
.size_in_bytes = size, \
...}...
extern const struct flash_device flash_devices[];
/* ... */
#endif
#define SPIFLASH_BSY 0
#define SPIFLASH_BSY_BIT (1 << SPIFLASH_BSY)
#define SPIFLASH_WE 1
#define SPIFLASH_WE_BIT (1 << SPIFLASH_WE)
#define SPIFLASH_READ_ID 0x9F
#define SPIFLASH_READ_MID 0xAF
#define SPIFLASH_READ_STATUS 0x05
#define SPIFLASH_WRITE_ENABLE 0x06
#define SPIFLASH_PAGE_PROGRAM 0x02
#define SPIFLASH_FAST_READ 0x0B
#define SPIFLASH_READ 0x03
#define SPIFLASH_MASS_ERASE 0xC7
#define SPIFLASH_READ_SFDP 0x5A
#define SPIFLASH_DEF_PAGESIZE 256
14 defines
/* ... */#endif