Bladeren bron

Refine EEPROM types / flags (#17772)

Scott Lahteine 4 jaren geleden
bovenliggende
commit
5e6faa999d
No account linked to committer's email address
58 gewijzigde bestanden met toevoegingen van 365 en 256 verwijderingen
  1. 2
    3
      Marlin/src/HAL/AVR/eeprom.cpp
  2. 1
    8
      Marlin/src/HAL/DUE/HAL.h
  3. 8
    9
      Marlin/src/HAL/DUE/eeprom_flash.cpp
  4. 1
    0
      Marlin/src/HAL/DUE/eeprom_if_flash.cpp
  5. 69
    0
      Marlin/src/HAL/DUE/eeprom_wired.cpp
  6. 2
    2
      Marlin/src/HAL/DUE/inc/Conditionals_post.h
  7. 0
    6
      Marlin/src/HAL/ESP32/HAL.h
  8. 2
    2
      Marlin/src/HAL/ESP32/eeprom.cpp
  9. 0
    5
      Marlin/src/HAL/ESP32/inc/Conditionals_post.h
  10. 0
    14
      Marlin/src/HAL/LINUX/arduino.cpp
  11. 0
    6
      Marlin/src/HAL/LINUX/include/Arduino.h
  12. 2
    2
      Marlin/src/HAL/LPC1768/eeprom_flash.cpp
  13. 2
    2
      Marlin/src/HAL/LPC1768/eeprom_sdcard.cpp
  14. 1
    6
      Marlin/src/HAL/LPC1768/eeprom_wired.cpp
  15. 0
    2
      Marlin/src/HAL/LPC1768/inc/Conditionals_post.h
  16. 0
    6
      Marlin/src/HAL/SAMD51/HAL.h
  17. 5
    6
      Marlin/src/HAL/SAMD51/eeprom_wired.cpp
  18. 2
    0
      Marlin/src/HAL/SAMD51/inc/Conditionals_post.h
  19. 0
    10
      Marlin/src/HAL/STM32/HAL.h
  20. 4
    16
      Marlin/src/HAL/STM32/eeprom_flash.cpp
  21. 64
    0
      Marlin/src/HAL/STM32/eeprom_sram.cpp
  22. 15
    28
      Marlin/src/HAL/STM32/eeprom_wired.cpp
  23. 2
    0
      Marlin/src/HAL/STM32/inc/Conditionals_post.h
  24. 0
    13
      Marlin/src/HAL/STM32F1/HAL.h
  25. 3
    2
      Marlin/src/HAL/STM32F1/eeprom_wired.cpp
  26. 2
    0
      Marlin/src/HAL/STM32F1/inc/Conditionals_post.h
  27. 6
    13
      Marlin/src/HAL/STM32_F4_F7/HAL.h
  28. 3
    4
      Marlin/src/HAL/STM32_F4_F7/HAL_SPI.cpp
  29. 4
    4
      Marlin/src/HAL/STM32_F4_F7/eeprom.cpp
  30. 6
    1
      Marlin/src/HAL/STM32_F4_F7/eeprom_emul.cpp
  31. 2
    3
      Marlin/src/HAL/STM32_F4_F7/eeprom_if_flash.cpp
  32. 2
    3
      Marlin/src/HAL/TEENSY35_36/eeprom.cpp
  33. 30
    0
      Marlin/src/HAL/shared/eeprom_if.h
  34. 6
    7
      Marlin/src/HAL/shared/eeprom_if_i2c.cpp
  35. 5
    4
      Marlin/src/HAL/shared/eeprom_if_spi.cpp
  36. 5
    0
      Marlin/src/inc/Conditionals_adv.h
  37. 6
    2
      Marlin/src/inc/SanityCheck.h
  38. 3
    7
      Marlin/src/module/printcounter.h
  39. 3
    1
      Marlin/src/pins/stm32f0/pins_MALYAN_M300.h
  40. 7
    5
      Marlin/src/pins/stm32f1/pins_BTT_SKR_E3_DIP.h
  41. 7
    5
      Marlin/src/pins/stm32f1/pins_BTT_SKR_MINI_E3.h
  42. 6
    4
      Marlin/src/pins/stm32f1/pins_BTT_SKR_MINI_V1_1.h
  43. 7
    5
      Marlin/src/pins/stm32f1/pins_FYSETC_AIO_II.h
  44. 7
    5
      Marlin/src/pins/stm32f1/pins_FYSETC_CHEETAH.h
  45. 4
    2
      Marlin/src/pins/stm32f1/pins_GTM32_MINI.h
  46. 4
    2
      Marlin/src/pins/stm32f1/pins_GTM32_MINI_A30.h
  47. 4
    2
      Marlin/src/pins/stm32f1/pins_GTM32_PRO_VB.h
  48. 4
    2
      Marlin/src/pins/stm32f1/pins_GTM32_REV_B.h
  49. 2
    0
      Marlin/src/pins/stm32f1/pins_JGAURORA_A5S_A1.h
  50. 4
    2
      Marlin/src/pins/stm32f1/pins_LONGER3D_LK.h
  51. 4
    4
      Marlin/src/pins/stm32f1/pins_MALYAN_M200.h
  52. 7
    5
      Marlin/src/pins/stm32f1/pins_MKS_ROBIN_MINI.h
  53. 4
    2
      Marlin/src/pins/stm32f1/pins_MKS_ROBIN_NANO.h
  54. 4
    2
      Marlin/src/pins/stm32f4/pins_BTT_BTT002_V1_0.h
  55. 7
    3
      Marlin/src/pins/stm32f4/pins_BTT_GTR_V1_0.h
  56. 4
    2
      Marlin/src/pins/stm32f4/pins_BTT_SKR_PRO_V1_1.h
  57. 8
    6
      Marlin/src/pins/stm32f4/pins_FYSETC_S6.h
  58. 3
    1
      Marlin/src/pins/stm32f7/pins_REMRAM_V1.h

+ 2
- 3
Marlin/src/HAL/AVR/eeprom.cpp Bestand weergeven

@@ -27,7 +27,8 @@
27 27
 
28 28
 #include "../shared/eeprom_api.h"
29 29
 
30
-bool PersistentStore::access_start() { return true; }
30
+size_t PersistentStore::capacity()    { return E2END + 1; }
31
+bool PersistentStore::access_start()  { return true; }
31 32
 bool PersistentStore::access_finish() { return true; }
32 33
 
33 34
 bool PersistentStore::write_data(int &pos, const uint8_t *value, size_t size, uint16_t *crc) {
@@ -61,7 +62,5 @@ bool PersistentStore::read_data(int &pos, uint8_t* value, size_t size, uint16_t
61 62
   return false;  // always assume success for AVR's
62 63
 }
63 64
 
64
-size_t PersistentStore::capacity() { return E2END + 1; }
65
-
66 65
 #endif // EEPROM_SETTINGS || SD_FIRMWARE_UPDATE
67 66
 #endif // __AVR__

+ 1
- 8
Marlin/src/HAL/DUE/HAL.h Bestand weergeven

@@ -30,6 +30,7 @@
30 30
 #define CPU_32_BIT
31 31
 
32 32
 #include "../shared/Marduino.h"
33
+#include "../shared/eeprom_if.h"
33 34
 #include "../shared/math_32bit.h"
34 35
 #include "../shared/HAL_SPI.h"
35 36
 #include "fastio.h"
@@ -131,14 +132,6 @@ void HAL_clear_reset_source();  // clear reset reason
131 132
 uint8_t HAL_get_reset_source(); // get reset reason
132 133
 
133 134
 //
134
-// EEPROM
135
-//
136
-void eeprom_write_byte(uint8_t *pos, unsigned char value);
137
-uint8_t eeprom_read_byte(uint8_t *pos);
138
-void eeprom_read_block (void *__dst, const void *__src, size_t __n);
139
-void eeprom_update_block (const void *__src, void *__dst, size_t __n);
140
-
141
-//
142 135
 // ADC
143 136
 //
144 137
 extern uint16_t HAL_adc_result;     // result of last ADC conversion

Marlin/src/HAL/DUE/eeprom.cpp → Marlin/src/HAL/DUE/eeprom_flash.cpp Bestand weergeven

@@ -22,25 +22,26 @@
22 22
  */
23 23
 #ifdef ARDUINO_ARCH_SAM
24 24
 
25
-#include "../../inc/MarlinConfigPre.h"
25
+#include "../../inc/MarlinConfig.h"
26 26
 
27
-#if ENABLED(EEPROM_SETTINGS)
27
+#if ENABLED(FLASH_EEPROM_EMULATION)
28 28
 
29 29
 #include "../../inc/MarlinConfig.h"
30
+
31
+#include "../shared/eeprom_if.h"
30 32
 #include "../shared/eeprom_api.h"
31 33
 
32
-#if !defined(E2END) && ENABLED(FLASH_EEPROM_EMULATION)
34
+#if !defined(E2END)
33 35
   #define E2END 0xFFF // Default to Flash emulated EEPROM size (EepromEmulation_Due.cpp)
34 36
 #endif
35 37
 
36 38
 extern void eeprom_flush();
37 39
 
38
-bool PersistentStore::access_start() { return true; }
40
+size_t PersistentStore::capacity()    { return E2END + 1; }
41
+bool PersistentStore::access_start()  { return true; }
39 42
 
40 43
 bool PersistentStore::access_finish() {
41
-  #if ENABLED(FLASH_EEPROM_EMULATION)
42
-    eeprom_flush();
43
-  #endif
44
+  eeprom_flush();
44 45
   return true;
45 46
 }
46 47
 
@@ -76,7 +77,5 @@ bool PersistentStore::read_data(int &pos, uint8_t* value, size_t size, uint16_t
76 77
   return false;
77 78
 }
78 79
 
79
-size_t PersistentStore::capacity() { return E2END + 1; }
80
-
81 80
 #endif // EEPROM_SETTINGS
82 81
 #endif // ARDUINO_ARCH_SAM

Marlin/src/HAL/DUE/EepromEmulation.cpp → Marlin/src/HAL/DUE/eeprom_if_flash.cpp Bestand weergeven

@@ -57,6 +57,7 @@
57 57
 #if ENABLED(FLASH_EEPROM_EMULATION)
58 58
 
59 59
 #include "../shared/Marduino.h"
60
+#include "../shared/eeprom_if.h"
60 61
 #include "../shared/eeprom_api.h"
61 62
 
62 63
 #define EEPROMSize     4096

+ 69
- 0
Marlin/src/HAL/DUE/eeprom_wired.cpp Bestand weergeven

@@ -0,0 +1,69 @@
1
+/**
2
+ * Marlin 3D Printer Firmware
3
+ *
4
+ * Copyright (c) 2020 MarlinFirmware [https://github.com/MarlinFirmware/Marlin]
5
+ * Copyright (c) 2016 Bob Cousins bobcousins42@googlemail.com
6
+ * Copyright (c) 2015-2016 Nico Tonnhofer wurstnase.reprap@gmail.com
7
+ * Copyright (c) 2016 Victor Perez victor_pv@hotmail.com
8
+ *
9
+ * This program is free software: you can redistribute it and/or modify
10
+ * it under the terms of the GNU General Public License as published by
11
+ * the Free Software Foundation, either version 3 of the License, or
12
+ * (at your option) any later version.
13
+ *
14
+ * This program is distributed in the hope that it will be useful,
15
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
16
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
17
+ * GNU General Public License for more details.
18
+ *
19
+ * You should have received a copy of the GNU General Public License
20
+ * along with this program.  If not, see <http://www.gnu.org/licenses/>.
21
+ *
22
+ */
23
+#ifdef ARDUINO_ARCH_SAM
24
+
25
+#include "../../inc/MarlinConfig.h"
26
+
27
+#if USE_WIRED_EEPROM
28
+
29
+#include "../shared/eeprom_if.h"
30
+#include "../shared/eeprom_api.h"
31
+
32
+size_t PersistentStore::capacity()    { return E2END + 1; }
33
+bool PersistentStore::access_start()  { return true; }
34
+bool PersistentStore::access_finish() { return true; }
35
+
36
+bool PersistentStore::write_data(int &pos, const uint8_t *value, size_t size, uint16_t *crc) {
37
+  while (size--) {
38
+    uint8_t * const p = (uint8_t * const)pos;
39
+    uint8_t v = *value;
40
+    // EEPROM has only ~100,000 write cycles,
41
+    // so only write bytes that have changed!
42
+    if (v != eeprom_read_byte(p)) {
43
+      eeprom_write_byte(p, v);
44
+      delay(2);
45
+      if (eeprom_read_byte(p) != v) {
46
+        SERIAL_ECHO_MSG(STR_ERR_EEPROM_WRITE);
47
+        return true;
48
+      }
49
+    }
50
+    crc16(crc, &v, 1);
51
+    pos++;
52
+    value++;
53
+  };
54
+  return false;
55
+}
56
+
57
+bool PersistentStore::read_data(int &pos, uint8_t* value, size_t size, uint16_t *crc, const bool writing/*=true*/) {
58
+  do {
59
+    uint8_t c = eeprom_read_byte((uint8_t*)pos);
60
+    if (writing) *value = c;
61
+    crc16(crc, &c, 1);
62
+    pos++;
63
+    value++;
64
+  } while (--size);
65
+  return false;
66
+}
67
+
68
+#endif // USE_WIRED_EEPROM
69
+#endif // ARDUINO_ARCH_SAM

+ 2
- 2
Marlin/src/HAL/DUE/inc/Conditionals_post.h Bestand weergeven

@@ -22,7 +22,7 @@
22 22
 #pragma once
23 23
 
24 24
 #if USE_FALLBACK_EEPROM
25
-  #undef SRAM_EEPROM_EMULATION
26
-  #undef SDCARD_EEPROM_EMULATION
27 25
   #define FLASH_EEPROM_EMULATION
26
+#elif EITHER(I2C_EEPROM, SPI_EEPROM)
27
+  #define USE_SHARED_EEPROM 1
28 28
 #endif

+ 0
- 6
Marlin/src/HAL/ESP32/HAL.h Bestand weergeven

@@ -109,12 +109,6 @@ int freeMemory();
109 109
 
110 110
 void analogWrite(pin_t pin, int value);
111 111
 
112
-// EEPROM
113
-void eeprom_write_byte(uint8_t *pos, unsigned char value);
114
-uint8_t eeprom_read_byte(uint8_t *pos);
115
-void eeprom_read_block (void *__dst, const void *__src, size_t __n);
116
-void eeprom_update_block (const void *__src, void *__dst, size_t __n);
117
-
118 112
 // ADC
119 113
 #define HAL_ANALOG_SELECT(pin)
120 114
 

+ 2
- 2
Marlin/src/HAL/ESP32/eeprom.cpp Bestand weergeven

@@ -23,7 +23,7 @@
23 23
 
24 24
 #include "../../inc/MarlinConfig.h"
25 25
 
26
-#if USE_WIRED_EEPROM
26
+#if ENABLED(EEPROM_SETTINGS)
27 27
 
28 28
 #include "../shared/eeprom_api.h"
29 29
 #include <EEPROM.h>
@@ -58,5 +58,5 @@ bool PersistentStore::read_data(int &pos, uint8_t* value, size_t size, uint16_t
58 58
 
59 59
 size_t PersistentStore::capacity() { return EEPROM_SIZE; }
60 60
 
61
-#endif // USE_WIRED_EEPROM
61
+#endif // EEPROM_SETTINGS
62 62
 #endif // ARDUINO_ARCH_ESP32

+ 0
- 5
Marlin/src/HAL/ESP32/inc/Conditionals_post.h Bestand weergeven

@@ -20,8 +20,3 @@
20 20
  *
21 21
  */
22 22
 #pragma once
23
-
24
-#undef USE_WIRED_EEPROM
25
-#if ENABLED(EEPROM_SETTINGS) && DISABLED(FLASH_EEPROM_EMULATION)
26
-  #define USE_WIRED_EEPROM 1
27
-#endif

+ 0
- 14
Marlin/src/HAL/LINUX/arduino.cpp Bestand weergeven

@@ -75,20 +75,6 @@ uint16_t analogRead(pin_t adc_pin) {
75 75
   return Gpio::get(DIGITAL_PIN_TO_ANALOG_PIN(adc_pin));
76 76
 }
77 77
 
78
-// **************************
79
-// Persistent Config Storage
80
-// **************************
81
-
82
-void eeprom_write_byte(unsigned char *pos, unsigned char value) {
83
-
84
-}
85
-
86
-unsigned char eeprom_read_byte(uint8_t * pos) { return '\0'; }
87
-
88
-void eeprom_read_block(void *__dst, const void *__src, size_t __n) { }
89
-
90
-void eeprom_update_block(const void *__src, void *__dst, size_t __n) { }
91
-
92 78
 char *dtostrf(double __val, signed char __width, unsigned char __prec, char *__s) {
93 79
   char format_string[20];
94 80
   snprintf(format_string, 20, "%%%d.%df", __width, __prec);

+ 0
- 6
Marlin/src/HAL/LINUX/include/Arduino.h Bestand weergeven

@@ -106,12 +106,6 @@ bool digitalRead(pin_t);
106 106
 void analogWrite(pin_t, int);
107 107
 uint16_t analogRead(pin_t);
108 108
 
109
-// EEPROM
110
-void eeprom_write_byte(unsigned char *pos, unsigned char value);
111
-unsigned char eeprom_read_byte(unsigned char *pos);
112
-void eeprom_read_block(void *__dst, const void *__src, size_t __n);
113
-void eeprom_update_block(const void *__src, void *__dst, size_t __n);
114
-
115 109
 int32_t random(int32_t);
116 110
 int32_t random(int32_t, int32_t);
117 111
 void randomSeed(uint32_t);

+ 2
- 2
Marlin/src/HAL/LPC1768/eeprom_flash.cpp Bestand weergeven

@@ -58,6 +58,8 @@ static uint8_t ram_eeprom[EEPROM_SIZE] __attribute__((aligned(4))) = {0};
58 58
 static bool eeprom_dirty = false;
59 59
 static int current_slot = 0;
60 60
 
61
+size_t PersistentStore::capacity() { return EEPROM_SIZE; }
62
+
61 63
 bool PersistentStore::access_start() {
62 64
   uint32_t first_nblank_loc, first_nblank_val;
63 65
   IAP_STATUS_CODE status;
@@ -122,7 +124,5 @@ bool PersistentStore::read_data(int &pos, uint8_t* value, size_t size, uint16_t
122 124
   return false;  // return true for any error
123 125
 }
124 126
 
125
-size_t PersistentStore::capacity() { return EEPROM_SIZE; }
126
-
127 127
 #endif // FLASH_EEPROM_EMULATION
128 128
 #endif // TARGET_LPC1768

+ 2
- 2
Marlin/src/HAL/LPC1768/eeprom_sdcard.cpp Bestand weergeven

@@ -38,6 +38,8 @@ FATFS fat_fs;
38 38
 FIL eeprom_file;
39 39
 bool eeprom_file_open = false;
40 40
 
41
+size_t PersistentStore::capacity() { return 4096; } // 4KiB of Emulated EEPROM
42
+
41 43
 bool PersistentStore::access_start() {
42 44
   const char eeprom_erase_value = 0xFF;
43 45
   MSC_Aquire_Lock();
@@ -168,7 +170,5 @@ bool PersistentStore::read_data(int &pos, uint8_t* value, const size_t size, uin
168 170
   return bytes_read != size;  // return true for any error
169 171
 }
170 172
 
171
-size_t PersistentStore::capacity() { return 4096; } // 4KiB of Emulated EEPROM
172
-
173 173
 #endif // SDCARD_EEPROM_EMULATION
174 174
 #endif // TARGET_LPC1768

+ 1
- 6
Marlin/src/HAL/LPC1768/eeprom_wired.cpp Bestand weergeven

@@ -19,19 +19,14 @@
19 19
  * along with this program.  If not, see <http://www.gnu.org/licenses/>.
20 20
  *
21 21
  */
22
-
23
-/**
24
- * I2C/SPI EEPROM interface for LPC1768
25
- */
26
-
27 22
 #ifdef TARGET_LPC1768
28 23
 
29 24
 #include "../../inc/MarlinConfig.h"
30 25
 
31 26
 #if USE_WIRED_EEPROM
32 27
 
28
+#include "../shared/eeprom_if.h"
33 29
 #include "../shared/eeprom_api.h"
34
-#include <Wire.h>
35 30
 
36 31
 #ifndef EEPROM_SIZE
37 32
   #define EEPROM_SIZE           0x8000 // 32kB‬

+ 0
- 2
Marlin/src/HAL/LPC1768/inc/Conditionals_post.h Bestand weergeven

@@ -21,8 +21,6 @@
21 21
  */
22 22
 #pragma once
23 23
 
24
-#undef I2C_EEPROM // Arduino framework provides code for I2C
25
-
26 24
 #if USE_FALLBACK_EEPROM
27 25
   #define FLASH_EEPROM_EMULATION
28 26
 #endif

+ 0
- 6
Marlin/src/HAL/SAMD51/HAL.h Bestand weergeven

@@ -114,12 +114,6 @@ void HAL_clear_reset_source();  // clear reset reason
114 114
 uint8_t HAL_get_reset_source(); // get reset reason
115 115
 
116 116
 //
117
-// EEPROM
118
-//
119
-void eeprom_write_byte(uint8_t *pos, unsigned char value);
120
-uint8_t eeprom_read_byte(uint8_t *pos);
121
-
122
-//
123 117
 // ADC
124 118
 //
125 119
 extern uint16_t HAL_adc_result;     // Most recent ADC conversion

Marlin/src/HAL/SAMD51/eeprom.cpp → Marlin/src/HAL/SAMD51/eeprom_wired.cpp Bestand weergeven

@@ -18,18 +18,17 @@
18 18
  * along with this program.  If not, see <http://www.gnu.org/licenses/>.
19 19
  *
20 20
  */
21
-
22 21
 #ifdef __SAMD51__
23 22
 
24 23
 #include "../../inc/MarlinConfig.h"
25 24
 
26
-#if ENABLED(EEPROM_SETTINGS) && NONE(QSPI_EEPROM, FLASH_EEPROM_EMULATION)
25
+#if USE_WIRED_EEPROM
27 26
 
27
+#include "../shared/eeprom_if.h"
28 28
 #include "../shared/eeprom_api.h"
29 29
 
30
-size_t PersistentStore::capacity() { return E2END + 1; }
31
-
32
-bool PersistentStore::access_start() { return true; }
30
+size_t PersistentStore::capacity()    { return E2END + 1; }
31
+bool PersistentStore::access_start()  { return true; }
33 32
 bool PersistentStore::access_finish() { return true; }
34 33
 
35 34
 bool PersistentStore::write_data(int &pos, const uint8_t *value, size_t size, uint16_t *crc) {
@@ -62,5 +61,5 @@ bool PersistentStore::read_data(int &pos, uint8_t* value, size_t size, uint16_t
62 61
   return false;
63 62
 }
64 63
 
65
-#endif // EEPROM_SETTINGS && !(QSPI_EEPROM || FLASH_EEPROM_EMULATION)
64
+#endif // USE_WIRED_EEPROM
66 65
 #endif // __SAMD51__

+ 2
- 0
Marlin/src/HAL/SAMD51/inc/Conditionals_post.h Bestand weergeven

@@ -23,4 +23,6 @@
23 23
 
24 24
 #if USE_FALLBACK_EEPROM
25 25
   #define FLASH_EEPROM_EMULATION
26
+#elif EITHER(I2C_EEPROM, SPI_EEPROM)
27
+  #define USE_SHARED_EEPROM 1
26 28
 #endif

+ 0
- 10
Marlin/src/HAL/STM32/HAL.h Bestand weergeven

@@ -192,16 +192,6 @@ static inline int freeMemory() {
192 192
 #pragma GCC diagnostic pop
193 193
 
194 194
 //
195
-// EEPROM
196
-//
197
-
198
-// Wire library should work for i2c EEPROMs
199
-void eeprom_write_byte(uint8_t *pos, unsigned char value);
200
-uint8_t eeprom_read_byte(uint8_t *pos);
201
-void eeprom_read_block(void *__dst, const void *__src, size_t __n);
202
-void eeprom_update_block(const void *__src, void *__dst, size_t __n);
203
-
204
-//
205 195
 // ADC
206 196
 //
207 197
 

+ 4
- 16
Marlin/src/HAL/STM32/eeprom_flash.cpp Bestand weergeven

@@ -24,7 +24,7 @@
24 24
 
25 25
 #include "../../inc/MarlinConfig.h"
26 26
 
27
-#if BOTH(EEPROM_SETTINGS, FLASH_EEPROM_EMULATION)
27
+#if ENABLED(FLASH_EEPROM_EMULATION)
28 28
 
29 29
 #include "../shared/eeprom_api.h"
30 30
 
@@ -235,13 +235,7 @@ bool PersistentStore::write_data(int &pos, const uint8_t *value, size_t size, ui
235 235
 
236 236
 bool PersistentStore::read_data(int &pos, uint8_t* value, size_t size, uint16_t *crc, const bool writing/*=true*/) {
237 237
   do {
238
-    const uint8_t c = (
239
-      #if ENABLED(FLASH_EEPROM_LEVELING)
240
-        ram_eeprom[pos]
241
-      #else
242
-        eeprom_buffered_read_byte(pos)
243
-      #endif
244
-    );
238
+    const uint8_t c = TERN(FLASH_EEPROM_LEVELING, ram_eeprom[pos], eeprom_buffered_read_byte(pos));
245 239
     if (writing) *value = c;
246 240
     crc16(crc, &c, 1);
247 241
     pos++;
@@ -251,14 +245,8 @@ bool PersistentStore::read_data(int &pos, uint8_t* value, size_t size, uint16_t
251 245
 }
252 246
 
253 247
 size_t PersistentStore::capacity() {
254
-  return (
255
-    #if ENABLED(FLASH_EEPROM_LEVELING)
256
-      EEPROM_SIZE
257
-    #else
258
-      E2END + 1
259
-    #endif
260
-  );
248
+  return TERN(FLASH_EEPROM_LEVELING, EEPROM_SIZE, E2END + 1);
261 249
 }
262 250
 
263
-#endif // EEPROM_SETTINGS && FLASH_EEPROM_EMULATION
251
+#endif // FLASH_EEPROM_EMULATION
264 252
 #endif // ARDUINO_ARCH_STM32 && !STM32GENERIC

+ 64
- 0
Marlin/src/HAL/STM32/eeprom_sram.cpp Bestand weergeven

@@ -0,0 +1,64 @@
1
+/**
2
+ * Marlin 3D Printer Firmware
3
+ *
4
+ * Copyright (c) 2020 MarlinFirmware [https://github.com/MarlinFirmware/Marlin]
5
+ * Copyright (c) 2016 Bob Cousins bobcousins42@googlemail.com
6
+ * Copyright (c) 2015-2016 Nico Tonnhofer wurstnase.reprap@gmail.com
7
+ * Copyright (c) 2016 Victor Perez victor_pv@hotmail.com
8
+ *
9
+ * This program is free software: you can redistribute it and/or modify
10
+ * it under the terms of the GNU General Public License as published by
11
+ * the Free Software Foundation, either version 3 of the License, or
12
+ * (at your option) any later version.
13
+ *
14
+ * This program is distributed in the hope that it will be useful,
15
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
16
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
17
+ * GNU General Public License for more details.
18
+ *
19
+ * You should have received a copy of the GNU General Public License
20
+ * along with this program.  If not, see <http://www.gnu.org/licenses/>.
21
+ *
22
+ */
23
+#if defined(ARDUINO_ARCH_STM32) && !defined(STM32GENERIC)
24
+
25
+#include "../../inc/MarlinConfig.h"
26
+
27
+#if ENABLED(SRAM_EEPROM_EMULATION)
28
+
29
+#include "../shared/eeprom_if.h"
30
+#include "../shared/eeprom_api.h"
31
+
32
+size_t PersistentStore::capacity()    { return 4096; } // 4K of SRAM
33
+bool PersistentStore::access_start()  { return true; }
34
+bool PersistentStore::access_finish() { return true; }
35
+
36
+bool PersistentStore::write_data(int &pos, const uint8_t *value, size_t size, uint16_t *crc) {
37
+  while (size--) {
38
+    uint8_t v = *value;
39
+
40
+    // Save to Backup SRAM
41
+    *(__IO uint8_t *)(BKPSRAM_BASE + (uint8_t * const)pos) = v;
42
+
43
+    crc16(crc, &v, 1);
44
+    pos++;
45
+    value++;
46
+  };
47
+
48
+  return false;
49
+}
50
+
51
+bool PersistentStore::read_data(int &pos, uint8_t* value, size_t size, uint16_t *crc, const bool writing/*=true*/) {
52
+  do {
53
+    // Read from either external EEPROM, program flash or Backup SRAM
54
+    const uint8_t c = ( *(__IO uint8_t *)(BKPSRAM_BASE + ((uint8_t*)pos)) );
55
+    if (writing) *value = c;
56
+    crc16(crc, &c, 1);
57
+    pos++;
58
+    value++;
59
+  } while (--size);
60
+  return false;
61
+}
62
+
63
+#endif // SRAM_EEPROM_EMULATION
64
+#endif // ARDUINO_ARCH_STM32 && !STM32GENERIC

+ 15
- 28
Marlin/src/HAL/STM32/eeprom_wired.cpp Bestand weergeven

@@ -24,10 +24,13 @@
24 24
 
25 25
 #include "../../inc/MarlinConfig.h"
26 26
 
27
-#if EITHER(USE_WIRED_EEPROM, SRAM_EEPROM_EMULATION)
27
+#if USE_WIRED_EEPROM
28 28
 
29
+
30
+#include "../shared/eeprom_if.h"
29 31
 #include "../shared/eeprom_api.h"
30 32
 
33
+size_t PersistentStore::capacity()    { return E2END + 1; }
31 34
 bool PersistentStore::access_start()  { return true; }
32 35
 bool PersistentStore::access_finish() { return true; }
33 36
 
@@ -35,21 +38,16 @@ bool PersistentStore::write_data(int &pos, const uint8_t *value, size_t size, ui
35 38
   while (size--) {
36 39
     uint8_t v = *value;
37 40
 
38
-    // Save to either external EEPROM, program flash or Backup SRAM
39
-    #if USE_WIRED_EEPROM
40
-      // EEPROM has only ~100,000 write cycles,
41
-      // so only write bytes that have changed!
42
-      uint8_t * const p = (uint8_t * const)pos;
43
-      if (v != eeprom_read_byte(p)) {
44
-        eeprom_write_byte(p, v);
45
-        if (eeprom_read_byte(p) != v) {
46
-          SERIAL_ECHO_MSG(STR_ERR_EEPROM_WRITE);
47
-          return true;
48
-        }
41
+    // EEPROM has only ~100,000 write cycles,
42
+    // so only write bytes that have changed!
43
+    uint8_t * const p = (uint8_t * const)pos;
44
+    if (v != eeprom_read_byte(p)) {
45
+      eeprom_write_byte(p, v);
46
+      if (eeprom_read_byte(p) != v) {
47
+        SERIAL_ECHO_MSG(STR_ERR_EEPROM_WRITE);
48
+        return true;
49 49
       }
50
-    #else
51
-      *(__IO uint8_t *)(BKPSRAM_BASE + (uint8_t * const)pos) = v;
52
-    #endif
50
+    }
53 51
 
54 52
     crc16(crc, &v, 1);
55 53
     pos++;
@@ -62,14 +60,7 @@ bool PersistentStore::write_data(int &pos, const uint8_t *value, size_t size, ui
62 60
 bool PersistentStore::read_data(int &pos, uint8_t* value, size_t size, uint16_t *crc, const bool writing/*=true*/) {
63 61
   do {
64 62
     // Read from either external EEPROM, program flash or Backup SRAM
65
-    const uint8_t c = (
66
-      #if USE_WIRED_EEPROM
67
-        eeprom_read_byte((uint8_t*)pos)
68
-      #else
69
-        (*(__IO uint8_t *)(BKPSRAM_BASE + ((uint8_t*)pos)))
70
-      #endif
71
-    );
72
-
63
+    const uint8_t c = eeprom_read_byte((uint8_t*)pos);
73 64
     if (writing) *value = c;
74 65
     crc16(crc, &c, 1);
75 66
     pos++;
@@ -78,9 +69,5 @@ bool PersistentStore::read_data(int &pos, uint8_t* value, size_t size, uint16_t
78 69
   return false;
79 70
 }
80 71
 
81
-size_t PersistentStore::capacity() {
82
-  return TERN(USE_WIRED_EEPROM, E2END + 1, 4096); // 4K for emulated
83
-}
84
-
85
-#endif // USE_WIRED_EEPROM || SRAM_EEPROM_EMULATION
72
+#endif // USE_WIRED_EEPROM
86 73
 #endif // ARDUINO_ARCH_STM32 && !STM32GENERIC

+ 2
- 0
Marlin/src/HAL/STM32/inc/Conditionals_post.h Bestand weergeven

@@ -24,4 +24,6 @@
24 24
 // If no real or emulated EEPROM selected, fall back to SD emulation
25 25
 #if USE_FALLBACK_EEPROM
26 26
   #define SDCARD_EEPROM_EMULATION
27
+#elif EITHER(I2C_EEPROM, SPI_EEPROM)
28
+  #define USE_SHARED_EEPROM 1
27 29
 #endif

+ 0
- 13
Marlin/src/HAL/STM32F1/HAL.h Bestand weergeven

@@ -249,19 +249,6 @@ static int freeMemory() {
249 249
 #pragma GCC diagnostic pop
250 250
 
251 251
 //
252
-// EEPROM
253
-//
254
-
255
-/**
256
- * TODO: Write all this EEPROM stuff. Can emulate EEPROM in flash as last resort.
257
- * Wire library should work for i2c EEPROMs.
258
- */
259
-void eeprom_write_byte(uint8_t *pos, unsigned char value);
260
-uint8_t eeprom_read_byte(uint8_t *pos);
261
-void eeprom_read_block(void *__dst, const void *__src, size_t __n);
262
-void eeprom_update_block(const void *__src, void *__dst, size_t __n);
263
-
264
-//
265 252
 // ADC
266 253
 //
267 254
 

+ 3
- 2
Marlin/src/HAL/STM32F1/eeprom_wired.cpp Bestand weergeven

@@ -23,8 +23,11 @@
23 23
 
24 24
 #if USE_WIRED_EEPROM
25 25
 
26
+#include "../shared/eeprom_if.h"
26 27
 #include "../shared/eeprom_api.h"
27 28
 
29
+size_t PersistentStore::capacity()    { return E2END + 1; }
30
+
28 31
 bool PersistentStore::access_start() {
29 32
   #if ENABLED(SPI_EEPROM)
30 33
     #if SPI_CHAN_EEPROM1 == 1
@@ -70,7 +73,5 @@ bool PersistentStore::read_data(int &pos, uint8_t* value, size_t size, uint16_t
70 73
   return false;
71 74
 }
72 75
 
73
-size_t PersistentStore::capacity() { return E2END + 1; }
74
-
75 76
 #endif // USE_WIRED_EEPROM
76 77
 #endif // __STM32F1__

+ 2
- 0
Marlin/src/HAL/STM32F1/inc/Conditionals_post.h Bestand weergeven

@@ -24,4 +24,6 @@
24 24
 // If no real EEPROM, Flash emulation, or SRAM emulation is available fall back to SD emulation
25 25
 #if USE_FALLBACK_EEPROM
26 26
   #define SDCARD_EEPROM_EMULATION
27
+#elif EITHER(I2C_EEPROM, SPI_EEPROM)
28
+  #define USE_SHARED_EEPROM 1
27 29
 #endif

+ 6
- 13
Marlin/src/HAL/STM32_F4_F7/HAL.h Bestand weergeven

@@ -51,6 +51,8 @@
51 51
   #error "SERIAL_PORT cannot be 0. (Port 0 does not exist.) Please update your configuration."
52 52
 #elif SERIAL_PORT == -1
53 53
   #define MYSERIAL0 SerialUSB
54
+#elif SERIAL_PORT == 0
55
+  #define MYSERIAL0 Serial1
54 56
 #elif SERIAL_PORT == 1
55 57
   #define MYSERIAL0 SerialUART1
56 58
 #elif SERIAL_PORT == 2
@@ -74,6 +76,8 @@
74 76
     #error "SERIAL_PORT_2 must be different than SERIAL_PORT. Please update your configuration."
75 77
   #elif SERIAL_PORT_2 == -1
76 78
     #define MYSERIAL1 SerialUSB
79
+  #elif SERIAL_PORT_2 == 0
80
+    #define MYSERIAL1 Serial1
77 81
   #elif SERIAL_PORT_2 == 1
78 82
     #define MYSERIAL1 SerialUART1
79 83
   #elif SERIAL_PORT_2 == 2
@@ -103,6 +107,8 @@
103 107
     #error "DGUS_SERIAL_PORT must be different than SERIAL_PORT_2. Please update your configuration."
104 108
   #elif DGUS_SERIAL_PORT == -1
105 109
     #define DGUS_SERIAL SerialUSB
110
+  #elif DGUS_SERIAL_PORT == 0
111
+    #define DGUS_SERIAL Serial1
106 112
   #elif DGUS_SERIAL_PORT == 1
107 113
     #define DGUS_SERIAL SerialUART1
108 114
   #elif DGUS_SERIAL_PORT == 2
@@ -207,19 +213,6 @@ static inline int freeMemory() {
207 213
 #pragma GCC diagnostic pop
208 214
 
209 215
 //
210
-// EEPROM
211
-//
212
-
213
-/**
214
- * TODO: Write all this EEPROM stuff. Can emulate EEPROM in flash as last resort.
215
- * Wire library should work for i2c EEPROMs.
216
- */
217
-void eeprom_write_byte(uint8_t *pos, unsigned char value);
218
-uint8_t eeprom_read_byte(uint8_t *pos);
219
-void eeprom_read_block (void *__dst, const void *__src, size_t __n);
220
-void eeprom_update_block (const void *__src, void *__dst, size_t __n);
221
-
222
-//
223 216
 // ADC
224 217
 //
225 218
 

+ 3
- 4
Marlin/src/HAL/STM32_F4_F7/HAL_SPI.cpp Bestand weergeven

@@ -20,6 +20,7 @@
20 20
  * along with this program.  If not, see <http://www.gnu.org/licenses/>.
21 21
  *
22 22
  */
23
+#if defined(STM32GENERIC) && (defined(STM32F4) || defined(STM32F7))
23 24
 
24 25
 /**
25 26
  * Software SPI functions originally from Arduino Sd2Card Library
@@ -30,8 +31,6 @@
30 31
  * Adapted to the Marlin STM32F4/7 HAL
31 32
  */
32 33
 
33
-#if defined(STM32GENERIC) && (defined(STM32F4) || defined(STM32F7))
34
-
35 34
 #include "../../inc/MarlinConfig.h"
36 35
 
37 36
 #include <SPI.h>
@@ -121,7 +120,7 @@ uint8_t spiRec() {
121 120
  */
122 121
 void spiRead(uint8_t* buf, uint16_t nbyte) {
123 122
   SPI.beginTransaction(spiConfig);
124
-  #ifdef STM32GENERIC
123
+  #ifndef STM32GENERIC
125 124
     SPI.dmaTransfer(0, const_cast<uint8_t*>(buf), nbyte);
126 125
   #else
127 126
     SPI.transfer((uint8_t*)buf, nbyte);
@@ -153,7 +152,7 @@ void spiSend(uint8_t b) {
153 152
 void spiSendBlock(uint8_t token, const uint8_t* buf) {
154 153
   SPI.beginTransaction(spiConfig);
155 154
   SPI.transfer(token);
156
-  #ifdef STM32GENERIC
155
+  #ifndef STM32GENERIC
157 156
     SPI.dmaSend(const_cast<uint8_t*>(buf), 512);
158 157
   #else
159 158
     SPI.transfer((uint8_t*)buf, nullptr, 512);

+ 4
- 4
Marlin/src/HAL/STM32_F4_F7/eeprom.cpp Bestand weergeven

@@ -22,13 +22,15 @@
22 22
  */
23 23
 #if defined(STM32GENERIC) && (defined(STM32F4) || defined(STM32F7))
24 24
 
25
-#include "../../inc/MarlinConfigPre.h"
25
+#include "../../inc/MarlinConfig.h"
26 26
 
27 27
 #if ENABLED(EEPROM_SETTINGS)
28 28
 
29
+#include "../shared/eeprom_if.h"
29 30
 #include "../shared/eeprom_api.h"
30 31
 
31
-bool PersistentStore::access_start() { return true; }
32
+size_t PersistentStore::capacity()    { return E2END + 1; }
33
+bool PersistentStore::access_start()  { return true; }
32 34
 bool PersistentStore::access_finish() { return true; }
33 35
 
34 36
 bool PersistentStore::write_data(int &pos, const uint8_t *value, size_t size, uint16_t *crc) {
@@ -62,7 +64,5 @@ bool PersistentStore::read_data(int &pos, uint8_t* value, size_t size, uint16_t
62 64
   return false;
63 65
 }
64 66
 
65
-size_t PersistentStore::capacity() { return E2END + 1; }
66
-
67 67
 #endif // EEPROM_SETTINGS
68 68
 #endif // STM32GENERIC && (STM32F4 || STM32F7)

+ 6
- 1
Marlin/src/HAL/STM32_F4_F7/eeprom_emul.cpp Bestand weergeven

@@ -1,6 +1,6 @@
1 1
 /**
2 2
   ******************************************************************************
3
-  * @file    EEPROM/EEPROM_Emulation/src/eeprom.c
3
+  * @file    eeprom_emul.cpp
4 4
   * @author  MCD Application Team
5 5
   * @version V1.2.6
6 6
   * @date    04-November-2016
@@ -49,6 +49,10 @@
49 49
   */
50 50
 #if defined(STM32GENERIC) && (defined(STM32F4) || defined(STM32F7))
51 51
 
52
+#include "../../inc/MarlinConfigPre.h"
53
+
54
+#if ENABLED(FLASH_EEPROM_EMULATION)
55
+
52 56
 /* Includes ------------------------------------------------------------------*/
53 57
 #include "eeprom_emul.h"
54 58
 
@@ -518,6 +522,7 @@ static uint16_t EE_PageTransfer(uint16_t VirtAddress, uint16_t Data) {
518 522
   return HAL_FLASH_Program(TYPEPROGRAM_HALFWORD, NewPageAddress, VALID_PAGE);
519 523
 }
520 524
 
525
+#endif // FLASH_EEPROM_EMULATION
521 526
 #endif // STM32GENERIC && (STM32F4 || STM32F7)
522 527
 
523 528
 /**

Marlin/src/HAL/STM32_F4_F7/EmulatedEeprom.cpp → Marlin/src/HAL/STM32_F4_F7/eeprom_if_flash.cpp Bestand weergeven

@@ -16,12 +16,10 @@
16 16
  * along with this program.  If not, see <http://www.gnu.org/licenses/>.
17 17
  *
18 18
  */
19
-
20 19
 #if defined(STM32GENERIC) && (defined(STM32F4) || defined(STM32F7))
21 20
 
22 21
 /**
23
- * Description: Functions for a Flash emulated EEPROM
24
- * Not platform dependent.
22
+ * Arduino-style interface for Flash emulated EEPROM
25 23
  */
26 24
 
27 25
 // Include configs and pins to get all EEPROM flags
@@ -35,6 +33,7 @@
35 33
 
36 34
 #include "HAL.h"
37 35
 #include "eeprom_emul.h"
36
+#include "../shared/eeprom_if.h"
38 37
 
39 38
 // ------------------------
40 39
 // Local defines

+ 2
- 3
Marlin/src/HAL/TEENSY35_36/eeprom.cpp Bestand weergeven

@@ -29,7 +29,8 @@
29 29
 #include "../shared/eeprom_api.h"
30 30
 #include <avr/eeprom.h>
31 31
 
32
-bool PersistentStore::access_start() { return true; }
32
+size_t PersistentStore::capacity()    { return E2END + 1; }
33
+bool PersistentStore::access_start()  { return true; }
33 34
 bool PersistentStore::access_finish() { return true; }
34 35
 
35 36
 bool PersistentStore::write_data(int &pos, const uint8_t *value, size_t size, uint16_t *crc) {
@@ -63,7 +64,5 @@ bool PersistentStore::read_data(int &pos, uint8_t* value, size_t size, uint16_t
63 64
   return false;
64 65
 }
65 66
 
66
-size_t PersistentStore::capacity() { return E2END + 1; }
67
-
68 67
 #endif // USE_WIRED_EEPROM
69 68
 #endif // __MK64FX512__ || __MK66FX1M0__

+ 30
- 0
Marlin/src/HAL/shared/eeprom_if.h Bestand weergeven

@@ -0,0 +1,30 @@
1
+/**
2
+ * Marlin 3D Printer Firmware
3
+ *
4
+ * Copyright (c) 2020 MarlinFirmware [https://github.com/MarlinFirmware/Marlin]
5
+ * Copyright (c) 2016 Bob Cousins bobcousins42@googlemail.com
6
+ * Copyright (c) 2015-2016 Nico Tonnhofer wurstnase.reprap@gmail.com
7
+ *
8
+ * This program is free software: you can redistribute it and/or modify
9
+ * it under the terms of the GNU General Public License as published by
10
+ * the Free Software Foundation, either version 3 of the License, or
11
+ * (at your option) any later version.
12
+ *
13
+ * This program is distributed in the hope that it will be useful,
14
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
15
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
16
+ * GNU General Public License for more details.
17
+ *
18
+ * You should have received a copy of the GNU General Public License
19
+ * along with this program.  If not, see <http://www.gnu.org/licenses/>.
20
+ *
21
+ */
22
+#pragma once
23
+
24
+//
25
+// EEPROM
26
+//
27
+void eeprom_write_byte(uint8_t *pos, unsigned char value);
28
+uint8_t eeprom_read_byte(uint8_t *pos);
29
+void eeprom_read_block(void *__dst, const void *__src, size_t __n);
30
+void eeprom_update_block(const void *__src, void *__dst, size_t __n);

Marlin/src/HAL/shared/eeprom_i2c.cpp → Marlin/src/HAL/shared/eeprom_if_i2c.cpp Bestand weergeven

@@ -21,20 +21,19 @@
21 21
  */
22 22
 
23 23
 /**
24
- * Description: functions for I2C connected external EEPROM.
25
- * Not platform dependent.
26
- *
27
- * TODO: Some platform Arduino libraries define these functions
28
- *       so Marlin needs to add a glue layer to prevent the conflict.
24
+ * Platform-independent Arduino functions for I2C EEPROM.
25
+ * Enable USE_SHARED_EEPROM if not supplied by the framework.
29 26
  */
30 27
 
31 28
 #include "../../inc/MarlinConfig.h"
32 29
 
33
-#if ENABLED(I2C_EEPROM)
30
+#if BOTH(USE_SHARED_EEPROM, I2C_EEPROM)
34 31
 
35 32
 #include "../HAL.h"
36 33
 #include <Wire.h>
37 34
 
35
+#include "eeprom_if.h"
36
+
38 37
 #ifndef EEPROM_WRITE_DELAY
39 38
   #define EEPROM_WRITE_DELAY    5
40 39
 #endif
@@ -126,4 +125,4 @@ void eeprom_read_block(void* pos, const void *__dst, size_t n) {
126 125
     if (Wire.available()) *((uint8_t*)pos + c) = Wire.read();
127 126
 }
128 127
 
129
-#endif // I2C_EEPROM
128
+#endif // USE_SHARED_EEPROM && I2C_EEPROM

Marlin/src/HAL/shared/eeprom_spi.cpp → Marlin/src/HAL/shared/eeprom_if_spi.cpp Bestand weergeven

@@ -21,15 +21,16 @@
21 21
  */
22 22
 
23 23
 /**
24
- * Description: functions for SPI connected external EEPROM.
25
- * Not platform dependent.
24
+ * Platform-independent Arduino functions for SPI EEPROM.
25
+ * Enable USE_SHARED_EEPROM if not supplied by the framework.
26 26
  */
27 27
 
28 28
 #include "../../inc/MarlinConfig.h"
29 29
 
30
-#if ENABLED(SPI_EEPROM)
30
+#if BOTH(USE_SHARED_EEPROM, SPI_EEPROM)
31 31
 
32 32
 #include "../HAL.h"
33
+#include "eeprom_if.h"
33 34
 
34 35
 #define CMD_WREN  6   // WREN
35 36
 #define CMD_READ  2   // WRITE
@@ -119,4 +120,4 @@ void eeprom_update_block(const void* src, void* eeprom_address, size_t n) {
119 120
   delay(EEPROM_WRITE_DELAY);   // wait for page write to complete
120 121
 }
121 122
 
122
-#endif // SPI_EEPROM
123
+#endif // USE_SHARED_EEPROM && I2C_EEPROM

+ 5
- 0
Marlin/src/inc/Conditionals_adv.h Bestand weergeven

@@ -337,3 +337,8 @@
337 337
 #else
338 338
   #define SD_CONNECTION_IS(...) 0
339 339
 #endif
340
+
341
+// Flag if an EEPROM type is pre-selected
342
+#if ENABLED(EEPROM_SETTINGS) && NONE(I2C_EEPROM, SPI_EEPROM, QSPI_EEPROM, FLASH_EEPROM_EMULATION, SRAM_EEPROM_EMULATION, SDCARD_EEPROM_EMULATION)
343
+  #define NO_EEPROM_SELECTED 1
344
+#endif

+ 6
- 2
Marlin/src/inc/SanityCheck.h Bestand weergeven

@@ -2054,8 +2054,12 @@ static_assert(hbm[Z_AXIS] >= 0, "HOMING_BUMP_MM.Z must be greater than or equal
2054 2054
 /**
2055 2055
  * Make sure only one EEPROM type is enabled
2056 2056
  */
2057
-#if ENABLED(EEPROM_SETTINGS) && 1 < ENABLED(SDCARD_EEPROM_EMULATION) + ENABLED(FLASH_EEPROM_EMULATION) + ENABLED(SRAM_EEPROM_EMULATION)
2058
-  #error "Please select only one of SDCARD, FLASH, or SRAM_EEPROM_EMULATION."
2057
+#if ENABLED(EEPROM_SETTINGS)
2058
+  #if 1 < 0 \
2059
+    + ENABLED(I2C_EEPROM) + ENABLED(SPI_EEPROM) + ENABLED(QSPI_EEPROM) \
2060
+    + ENABLED(SDCARD_EEPROM_EMULATION) + ENABLED(FLASH_EEPROM_EMULATION) + ENABLED(SRAM_EEPROM_EMULATION)
2061
+    #error "Please select only one method of EEPROM Persistent Storage."
2062
+  #endif
2059 2063
 #endif
2060 2064
 
2061 2065
 /**

+ 3
- 7
Marlin/src/module/printcounter.h Bestand weergeven

@@ -28,12 +28,8 @@
28 28
 // Print debug messages with M111 S2
29 29
 //#define DEBUG_PRINTCOUNTER
30 30
 
31
-#if USE_WIRED_EEPROM
32
-  // round up address to next page boundary (assuming 32 byte pages)
33
-  #define STATS_EEPROM_ADDRESS 0x40
34
-#else
35
-  #define STATS_EEPROM_ADDRESS 0x32
36
-#endif
31
+// Round up I2C / SPI address to next page boundary (assuming 32 byte pages)
32
+#define STATS_EEPROM_ADDRESS TERN(USE_WIRED_EEPROM, 0x40, 0x32)
37 33
 
38 34
 struct printStatistics {    // 16 bytes
39 35
   //const uint8_t magic;    // Magic header, it will always be 0x16
@@ -57,7 +53,7 @@ class PrintCounter: public Stopwatch {
57 53
   private:
58 54
     typedef Stopwatch super;
59 55
 
60
-    #if USE_WIRED_EEPROM || defined(CPU_32_BIT)
56
+    #if EITHER(USE_WIRED_EEPROM, CPU_32_BIT)
61 57
       typedef uint32_t eeprom_address_t;
62 58
     #else
63 59
       typedef uint16_t eeprom_address_t;

+ 3
- 1
Marlin/src/pins/stm32f0/pins_MALYAN_M300.h Bestand weergeven

@@ -31,7 +31,9 @@
31 31
 //
32 32
 // EEPROM Emulation
33 33
 //
34
-#define FLASH_EEPROM_EMULATION
34
+#if NO_EEPROM_SELECTED
35
+  #define FLASH_EEPROM_EMULATION
36
+#endif
35 37
 
36 38
 //
37 39
 // SD CARD SPI

+ 7
- 5
Marlin/src/pins/stm32f1/pins_BTT_SKR_E3_DIP.h Bestand weergeven

@@ -33,11 +33,13 @@
33 33
 // Ignore temp readings during development.
34 34
 //#define BOGUS_TEMPERATURE_GRACE_PERIOD 2000
35 35
 
36
-#define FLASH_EEPROM_EMULATION
37
-#define EEPROM_PAGE_SIZE     (0x800U) // 2KB
38
-#define EEPROM_START_ADDRESS (0x8000000UL + (STM32_FLASH_SIZE) * 1024UL - (EEPROM_PAGE_SIZE) * 2UL)
39
-#undef E2END
40
-#define E2END                (EEPROM_PAGE_SIZE - 1) // 2KB
36
+#if EITHER(NO_EEPROM_SELECTED, FLASH_EEPROM_EMULATION)
37
+  #define FLASH_EEPROM_EMULATION
38
+  #define EEPROM_PAGE_SIZE     (0x800U) // 2KB
39
+  #define EEPROM_START_ADDRESS (0x8000000UL + (STM32_FLASH_SIZE) * 1024UL - (EEPROM_PAGE_SIZE) * 2UL)
40
+  #undef E2END
41
+  #define E2END                (EEPROM_PAGE_SIZE - 1) // 2KB
42
+#endif
41 43
 
42 44
 //
43 45
 // Servos

+ 7
- 5
Marlin/src/pins/stm32f1/pins_BTT_SKR_MINI_E3.h Bestand weergeven

@@ -31,11 +31,13 @@
31 31
 // Ignore temp readings during development.
32 32
 //#define BOGUS_TEMPERATURE_GRACE_PERIOD 2000
33 33
 
34
-#define FLASH_EEPROM_EMULATION
35
-#define EEPROM_PAGE_SIZE     (0x800U) // 2KB
36
-#define EEPROM_START_ADDRESS (0x8000000UL + (STM32_FLASH_SIZE) * 1024UL - (EEPROM_PAGE_SIZE) * 2UL)
37
-#undef E2END
38
-#define E2END                (EEPROM_PAGE_SIZE - 1) // 2KB
34
+#if EITHER(NO_EEPROM_SELECTED, FLASH_EEPROM_EMULATION)
35
+  #define FLASH_EEPROM_EMULATION
36
+  #define EEPROM_PAGE_SIZE     (0x800U) // 2KB
37
+  #define EEPROM_START_ADDRESS (0x8000000UL + (STM32_FLASH_SIZE) * 1024UL - (EEPROM_PAGE_SIZE) * 2UL)
38
+  #undef E2END
39
+  #define E2END                (EEPROM_PAGE_SIZE - 1) // 2KB
40
+#endif
39 41
 
40 42
 //
41 43
 // Servos

+ 6
- 4
Marlin/src/pins/stm32f1/pins_BTT_SKR_MINI_V1_1.h Bestand weergeven

@@ -33,10 +33,12 @@
33 33
 // Ignore temp readings during development.
34 34
 //#define BOGUS_TEMPERATURE_GRACE_PERIOD 2000
35 35
 
36
-#define FLASH_EEPROM_EMULATION
37
-#define EEPROM_PAGE_SIZE     (0x800U) // 2KB
38
-#define EEPROM_START_ADDRESS (0x8000000UL + (STM32_FLASH_SIZE) * 1024UL - (EEPROM_PAGE_SIZE) * 2UL)
39
-#define E2END                (EEPROM_PAGE_SIZE - 1)
36
+#if EITHER(NO_EEPROM_SELECTED, FLASH_EEPROM_EMULATION)
37
+  #define FLASH_EEPROM_EMULATION
38
+  #define EEPROM_PAGE_SIZE     (0x800U) // 2KB
39
+  #define EEPROM_START_ADDRESS (0x8000000UL + (STM32_FLASH_SIZE) * 1024UL - (EEPROM_PAGE_SIZE) * 2UL)
40
+  #define E2END                (EEPROM_PAGE_SIZE - 1)
41
+#endif
40 42
 
41 43
 //
42 44
 // Limit Switches

+ 7
- 5
Marlin/src/pins/stm32f1/pins_FYSETC_AIO_II.h Bestand weergeven

@@ -38,11 +38,13 @@
38 38
 //
39 39
 // Flash EEPROM Emulation
40 40
 //
41
-#define FLASH_EEPROM_EMULATION
42
-#define EEPROM_PAGE_SIZE     (0x800U) // 2KB
43
-#define EEPROM_START_ADDRESS (0x8000000UL + (STM32_FLASH_SIZE) * 1024UL - (EEPROM_PAGE_SIZE) * 2UL)
44
-#undef E2END
45
-#define E2END                (EEPROM_PAGE_SIZE - 1) // 2KB
41
+#if EITHER(NO_EEPROM_SELECTED, FLASH_EEPROM_EMULATION)
42
+  #define FLASH_EEPROM_EMULATION
43
+  #define EEPROM_PAGE_SIZE     (0x800U) // 2KB
44
+  #define EEPROM_START_ADDRESS (0x8000000UL + (STM32_FLASH_SIZE) * 1024UL - (EEPROM_PAGE_SIZE) * 2UL)
45
+  #undef E2END
46
+  #define E2END                (EEPROM_PAGE_SIZE - 1) // 2KB
47
+#endif
46 48
 
47 49
 //
48 50
 // Limit Switches

+ 7
- 5
Marlin/src/pins/stm32f1/pins_FYSETC_CHEETAH.h Bestand weergeven

@@ -35,11 +35,13 @@
35 35
 
36 36
 #define DISABLE_JTAG
37 37
 
38
-#define FLASH_EEPROM_EMULATION
39
-#define EEPROM_PAGE_SIZE     (0x800U) // 2KB
40
-#define EEPROM_START_ADDRESS (0x8000000UL + (STM32_FLASH_SIZE) * 1024UL - (EEPROM_PAGE_SIZE) * 2UL)
41
-#undef E2END
42
-#define E2END                (EEPROM_PAGE_SIZE - 1) // 2KB
38
+#if EITHER(NO_EEPROM_SELECTED, FLASH_EEPROM_EMULATION)
39
+  #define FLASH_EEPROM_EMULATION
40
+  #define EEPROM_PAGE_SIZE     (0x800U) // 2KB
41
+  #define EEPROM_START_ADDRESS (0x8000000UL + (STM32_FLASH_SIZE) * 1024UL - (EEPROM_PAGE_SIZE) * 2UL)
42
+  #undef E2END
43
+  #define E2END                (EEPROM_PAGE_SIZE - 1) // 2KB
44
+#endif
43 45
 
44 46
 //
45 47
 // Servos

+ 4
- 2
Marlin/src/pins/stm32f1/pins_GTM32_MINI.h Bestand weergeven

@@ -52,8 +52,10 @@
52 52
 //#define BOGUS_TEMPERATURE_GRACE_PERIOD 2000
53 53
 
54 54
 // Enable EEPROM Emulation for this board as it doesn't have EEPROM
55
-#define FLASH_EEPROM_EMULATION
56
-#define E2END 0xFFF                               // 4KB
55
+#if EITHER(NO_EEPROM_SELECTED, FLASH_EEPROM_EMULATION)
56
+  #define FLASH_EEPROM_EMULATION
57
+  #define E2END 0xFFF                             // 4KB
58
+#endif
57 59
 
58 60
 //
59 61
 // Limit Switches

+ 4
- 2
Marlin/src/pins/stm32f1/pins_GTM32_MINI_A30.h Bestand weergeven

@@ -52,8 +52,10 @@
52 52
 //#define BOGUS_TEMPERATURE_GRACE_PERIOD 2000
53 53
 
54 54
 // Enable EEPROM Emulation for this board as it doesn't have EEPROM
55
-#define FLASH_EEPROM_EMULATION
56
-#define E2END 0xFFF                               // 4KB
55
+#if EITHER(NO_EEPROM_SELECTED, FLASH_EEPROM_EMULATION)
56
+  #define FLASH_EEPROM_EMULATION
57
+  #define E2END 0xFFF                             // 4KB
58
+#endif
57 59
 
58 60
 //
59 61
 // Limit Switches

+ 4
- 2
Marlin/src/pins/stm32f1/pins_GTM32_PRO_VB.h Bestand weergeven

@@ -52,8 +52,10 @@
52 52
 //#define BOGUS_TEMPERATURE_GRACE_PERIOD 2000
53 53
 
54 54
 // Enable EEPROM Emulation for this board as it doesn't have EEPROM
55
-#define FLASH_EEPROM_EMULATION
56
-#define E2END 0xFFF                               // 4KB
55
+#if EITHER(NO_EEPROM_SELECTED, FLASH_EEPROM_EMULATION)
56
+  #define FLASH_EEPROM_EMULATION
57
+  #define E2END 0xFFF                             // 4KB
58
+#endif
57 59
 
58 60
 //
59 61
 // Limit Switches

+ 4
- 2
Marlin/src/pins/stm32f1/pins_GTM32_REV_B.h Bestand weergeven

@@ -52,8 +52,10 @@
52 52
 //#define BOGUS_TEMPERATURE_GRACE_PERIOD 2000
53 53
 
54 54
 // Enable EEPROM Emulation for this board as it doesn't have EEPROM
55
-#define FLASH_EEPROM_EMULATION
56
-#define E2END 0xFFF                               // 4KB
55
+#if EITHER(NO_EEPROM_SELECTED, FLASH_EEPROM_EMULATION)
56
+  #define FLASH_EEPROM_EMULATION
57
+  #define E2END 0xFFF                             // 4KB
58
+#endif
57 59
 
58 60
 //
59 61
 // Limit Switches

+ 2
- 0
Marlin/src/pins/stm32f1/pins_JGAURORA_A5S_A1.h Bestand weergeven

@@ -44,9 +44,11 @@
44 44
 
45 45
 //#define I2C_EEPROM                              // AT24C64
46 46
 //#define E2END 0x7FFFUL                          // 64KB
47
+
47 48
 //#define FLASH_EEPROM_EMULATION
48 49
 //#define E2END 0xFFFUL                           // 4KB
49 50
 //#define E2END (EEPROM_START_ADDRESS + (EEPROM_PAGE_SIZE) * 2UL - 1UL)
51
+
50 52
 //#define EEPROM_CHITCHAT
51 53
 //#define DEBUG_EEPROM_READWRITE
52 54
 

+ 4
- 2
Marlin/src/pins/stm32f1/pins_LONGER3D_LK.h Bestand weergeven

@@ -147,8 +147,10 @@
147 147
 // Persistent Storage
148 148
 // If no option is selected below the SD Card will be used
149 149
 //
150
-//#define SPI_EEPROM
151
-#define FLASH_EEPROM_EMULATION
150
+#if NO_EEPROM_SELECTED
151
+  //#define SPI_EEPROM
152
+  #define FLASH_EEPROM_EMULATION
153
+#endif
152 154
 
153 155
 #undef E2END
154 156
 #if ENABLED(SPI_EEPROM)

+ 4
- 4
Marlin/src/pins/stm32f1/pins_MALYAN_M200.h Bestand weergeven

@@ -31,10 +31,10 @@
31 31
 
32 32
 #define BOARD_INFO_NAME "Malyan M200"
33 33
 
34
-// Enable EEPROM Emulation for this board
35
-// This setting should probably be in configuration.h
36
-// but it is literally the only board which uses it.
37
-#define FLASH_EEPROM_EMULATION
34
+// Assume Flash EEPROM
35
+#if NO_EEPROM_SELECTED
36
+  #define FLASH_EEPROM_EMULATION
37
+#endif
38 38
 
39 39
 #define SDSS                              SS_PIN
40 40
 

+ 7
- 5
Marlin/src/pins/stm32f1/pins_MKS_ROBIN_MINI.h Bestand weergeven

@@ -38,11 +38,13 @@
38 38
 //
39 39
 #define DISABLE_DEBUG
40 40
 
41
-#define FLASH_EEPROM_EMULATION
42
-// 2K in a AT24C16N
43
-#define EEPROM_PAGE_SIZE     (0x800U) // 2KB
44
-#define EEPROM_START_ADDRESS (0x8000000UL + (STM32_FLASH_SIZE) * 1024UL - (EEPROM_PAGE_SIZE) * 2UL)
45
-#define E2END (EEPROM_PAGE_SIZE - 1)
41
+#if EITHER(NO_EEPROM_SELECTED, FLASH_EEPROM_EMULATION)
42
+  #define FLASH_EEPROM_EMULATION
43
+  // 2K in a AT24C16N
44
+  #define EEPROM_PAGE_SIZE     (0x800U) // 2KB
45
+  #define EEPROM_START_ADDRESS (0x8000000UL + (STM32_FLASH_SIZE) * 1024UL - (EEPROM_PAGE_SIZE) * 2UL)
46
+  #define E2END (EEPROM_PAGE_SIZE - 1)
47
+#endif
46 48
 
47 49
 //
48 50
 // Note: MKS Robin mini board is using SPI2 interface.

+ 4
- 2
Marlin/src/pins/stm32f1/pins_MKS_ROBIN_NANO.h Bestand weergeven

@@ -41,8 +41,10 @@
41 41
 //
42 42
 // EEPROM
43 43
 //
44
-//#define FLASH_EEPROM_EMULATION
45
-#define SDCARD_EEPROM_EMULATION
44
+#if NO_EEPROM_SELECTED
45
+  //#define FLASH_EEPROM_EMULATION
46
+  #define SDCARD_EEPROM_EMULATION
47
+#endif
46 48
 
47 49
 //
48 50
 // Limit Switches

+ 4
- 2
Marlin/src/pins/stm32f4/pins_BTT_BTT002_V1_0.h Bestand weergeven

@@ -30,8 +30,10 @@
30 30
 #define BOARD_INFO_NAME "BIGTREE Btt002 1.0"
31 31
 
32 32
 // Use one of these or SDCard-based Emulation will be used
33
-//#define SRAM_EEPROM_EMULATION                   // Use BackSRAM-based EEPROM emulation
34
-#define FLASH_EEPROM_EMULATION                    // Use Flash-based EEPROM emulation
33
+#if NO_EEPROM_SELECTED
34
+  //#define SRAM_EEPROM_EMULATION                 // Use BackSRAM-based EEPROM emulation
35
+  #define FLASH_EEPROM_EMULATION                  // Use Flash-based EEPROM emulation
36
+#endif
35 37
 
36 38
 // Ignore temp readings during development.
37 39
 //#define BOGUS_TEMPERATURE_GRACE_PERIOD 2000

+ 7
- 3
Marlin/src/pins/stm32f4/pins_BTT_GTR_V1_0.h Bestand weergeven

@@ -32,9 +32,11 @@
32 32
 #define BOARD_INFO_NAME "BIGTREE GTR 1.0"
33 33
 
34 34
 // Use one of these or SDCard-based Emulation will be used
35
-//#define I2C_EEPROM
36
-//#define SRAM_EEPROM_EMULATION                   // Use BackSRAM-based EEPROM emulation
37
-//#define FLASH_EEPROM_EMULATION                  // Use Flash-based EEPROM emulation
35
+#if NO_EEPROM_SELECTED
36
+  //#define I2C_EEPROM
37
+  //#define SRAM_EEPROM_EMULATION                 // Use BackSRAM-based EEPROM emulation
38
+  //#define FLASH_EEPROM_EMULATION                // Use Flash-based EEPROM emulation
39
+#endif
38 40
 
39 41
 #define TP                                        // Enable to define servo and probe pins
40 42
 
@@ -389,3 +391,5 @@
389 391
   //#define DOGLCD_MOSI                     PB15
390 392
 
391 393
 #endif // HAS_SPI_LCD
394
+
395
+#undef TP

+ 4
- 2
Marlin/src/pins/stm32f4/pins_BTT_SKR_PRO_V1_1.h Bestand weergeven

@@ -30,8 +30,10 @@
30 30
 #define BOARD_INFO_NAME "BIGTREE SKR Pro 1.1" // redefined?
31 31
 
32 32
 // Use one of these or SDCard-based Emulation will be used
33
-//#define SRAM_EEPROM_EMULATION                   // Use BackSRAM-based EEPROM emulation
34
-#define FLASH_EEPROM_EMULATION                    // Use Flash-based EEPROM emulation
33
+#if NO_EEPROM_SELECTED
34
+  //#define SRAM_EEPROM_EMULATION                 // Use BackSRAM-based EEPROM emulation
35
+  #define FLASH_EEPROM_EMULATION                  // Use Flash-based EEPROM emulation
36
+#endif
35 37
 
36 38
 //
37 39
 // Servos

+ 8
- 6
Marlin/src/pins/stm32f4/pins_FYSETC_S6.h Bestand weergeven

@@ -34,19 +34,21 @@
34 34
   #define DEFAULT_MACHINE_NAME BOARD_INFO_NAME
35 35
 #endif
36 36
 
37
-// change the prio to 3 , 2 is for software serial
37
+// Change the priority to 3. Priority 2 is for software serial.
38 38
 //#define TEMP_TIMER_IRQ_PRIO 3
39 39
 
40 40
 //
41 41
 // EEPROM Emulation
42 42
 //
43
-#define FLASH_EEPROM_EMULATION
43
+#if NO_EEPROM_SELECTED
44
+  #define FLASH_EEPROM_EMULATION
45
+  //#define SRAM_EEPROM_EMULATION
46
+  //#define I2C_EEPROM
47
+#endif
48
+
44 49
 #if ENABLED(FLASH_EEPROM_EMULATION)
45 50
   #define FLASH_EEPROM_LEVELING
46
-#endif
47
-//#define SRAM_EEPROM_EMULATION
48
-//#define I2C_EEPROM
49
-#ifdef I2C_EEPROM
51
+#elif ENABLED(I2C_EEPROM)
50 52
   #undef E2END                                    // Defined in Arduino Core STM32 to be used with EEPROM emulation. This board uses a real EEPROM.
51 53
   #define E2END 0xFFF                             // 4KB
52 54
 #endif

+ 3
- 1
Marlin/src/pins/stm32f7/pins_REMRAM_V1.h Bestand weergeven

@@ -28,7 +28,9 @@
28 28
 #define BOARD_INFO_NAME      "RemRam v1"
29 29
 #define DEFAULT_MACHINE_NAME "RemRam"
30 30
 
31
-#define SRAM_EEPROM_EMULATION                     // Emulate the EEPROM using Backup SRAM
31
+#if NO_EEPROM_SELECTED
32
+  #define SRAM_EEPROM_EMULATION                   // Emulate the EEPROM using Backup SRAM
33
+#endif
32 34
 
33 35
 #if HOTENDS > 1 || E_STEPPERS > 1
34 36
   #error "RemRam supports only one hotend / E-stepper."

Laden…
Annuleren
Opslaan