OSCR
Open Source Cartridge Reader
Loading...
Searching...
No Matches
Flash.h
1#pragma once
2#if !defined(OSCR_CORE_FLASH_H_)
3# define OSCR_CORE_FLASH_H_
4
5# include "config.h"
6
7# include "syslibinc.h"
8# include "common/Types.h"
9
14{
15# if HAS_FLASH
16 extern char const * const menuOptionsFlash[];
17 extern uint8_t const kMenuOptionFlashMax;
18# endif /* HAS_FLASH */
19
20 extern uint16_t flashid;
21 extern uint32_t flashSize;
22 extern uint32_t blank;
23 extern uint8_t mapping;
24
25# if HAS_FLASH
26 extern uint32_t flashBanks;
27 extern bool flashX16Mode;
28 extern bool flashSwitchLastBits;
29 extern uint8_t flashromType;
30 extern uint8_t secondID;
31 extern uint32_t time;
32 extern uint32_t sectorSize;
33 extern uint16_t bufferSize;
34 extern bool byteCtrl;
35
36 void menu();
37 void menuFlash8();
38 void menuFlash16();
39 void menuEPROM();
40
41 void printHeader();
42
43 void setupCFI();
44 void printFlashSize(int index);
45 void printFlashType(int index);
46 uint8_t selectFlashtype(bool option);
47 bool getFlashDetail();
48 void id8();
49 void id16();
50 void setupVoltage();
51 void setup8();
52 void setup16();
53 void setup_Eprom();
54 void dataIn();
55 void dataOut();
56 void writeByte(uint32_t myAddress, uint8_t myData);
57 uint8_t readByte(uint32_t myAddress);
58 void writeWord(uint32_t myAddress, uint16_t myData);
59 uint16_t readWord(uint32_t myAddress);
60 void writeByteCommand(uint8_t command);
61 void writeByteCommandShift(uint8_t command);
62 void writeWordCommand(uint8_t command);
63 void writeByteCommand(uint8_t command);
64 void busyWait(uint32_t address, uint8_t data);
65 void busyWait(uint32_t address);
66 void busyWait();
67 void resetFlash29F032();
68 void idFlash39SF040();
69 void idFlash29F032();
70 void eraseFlash29F032();
71 void writeFlash29F032();
72 bool busyCheck29F032(uint32_t addr, uint8_t c);
73 void resetFlash29F1610();
74 void writeFlash29F1610();
75 void writeFlash29F1601();
76 void idFlash29F1610();
77 void eraseFlash29F1610();
78 void writeFlash29LV640();
79 void writeFlash29GL(uint32_t sectorSize, uint8_t bufferSize);
80 void writeFlash29F800();
81 void idFlash28FXXX();
82 void resetFlash28FXXX();
83 uint8_t statusFlash28FXXX();
84 void eraseFlash28FXXX();
85 void writeFlash28FXXX();
86 void writeFlashE28FXXXJ3A();
87 void writeFlashLH28F0XX();
88 void blankcheck();
89 void verifyFlash(bool closeFile = true);
90 void verifyFlash(uint8_t currChip, uint8_t totalChips, bool reversed, bool closeFile = true);
91 void readFlash();
92 void printFlash(int numBytes);
93 void resetFlash8();
94 void resetFlash16();
95 void writeFlash16();
96 void writeFlash16_29F1601();
97 void idFlash16();
98 uint8_t readStatusReg16();
99 void eraseFlash16();
100 void blankcheck16();
101 void verifyFlash16(bool closeFile = true);
102 void readFlash16();
103 void printFlash16(int numBytes);
104 void busyCheck16();
105 void busyCheck16_29LV640(uint32_t myAddress, uint16_t myData);
106 void writeFlash16_29LV640();
107 uint16_t writeWord_Eprom(uint32_t myAddress, uint16_t myData);
108 uint16_t readWord_Eprom(uint32_t myAddress);
109 void blankcheck_Eprom();
110 void read_Eprom();
111 void write_Eprom();
112 void verify_Eprom();
113 void print_Eprom(int numBytes);
114 void sendCFICommand(uint8_t cmd);
115 uint8_t readByteCompensated(int address);
116 void writeByteCompensated(int address, uint8_t data);
117 void startCFIMode(bool x16Mode);
118 bool identifyCFIbyIds(bool x16Mode = false);
119 void identifyCFI();
120 void adjustFileSizeOffset(uint8_t currChip, uint8_t totalChips, bool reversed);
121 void writeCFI(uint8_t currChip, uint8_t totalChips, bool reversed);
122# endif /* HAS_FLASH */
123
124} /* namespace OSCR::Cores::Flash */
125
126#endif /* OSCR_CORE_FLASH_H_ */
System core for flash chips.
Definition Flash.h:14