Browse Source

Add STM32F1 support for SD-based EEPROM

Scott Lahteine 7 years ago
parent
commit
d05e832f29

+ 2
- 7
Marlin/src/HAL/HAL_AVR/persistent_store_impl.cpp View File

@@ -9,13 +9,8 @@
9 9
 namespace HAL {
10 10
 namespace PersistentStore {
11 11
 
12
-bool access_start() {
13
-  return true;
14
-}
15
-
16
-bool access_finish(){
17
-  return true;
18
-}
12
+bool access_start() { return true; }
13
+bool access_finish() { return true; }
19 14
 
20 15
 bool write_data(int &pos, const uint8_t *value, uint16_t size, uint16_t *crc) {
21 16
   while (size--) {

+ 5
- 7
Marlin/src/HAL/HAL_DUE/persistent_store_impl.cpp View File

@@ -11,14 +11,12 @@ extern void eeprom_flush(void);
11 11
 namespace HAL {
12 12
 namespace PersistentStore {
13 13
 
14
-bool access_start() {
15
-  return true;
16
-}
14
+bool access_start() { return true; }
17 15
 
18
-bool access_finish(){
19
-#if DISABLED(I2C_EEPROM) && DISABLED(SPI_EEPROM)
20
-  eeprom_flush();
21
-#endif
16
+bool access_finish() {
17
+  #if DISABLED(I2C_EEPROM) && DISABLED(SPI_EEPROM)
18
+    eeprom_flush();
19
+  #endif
22 20
   return true;
23 21
 }
24 22
 

+ 1
- 1
Marlin/src/HAL/HAL_STM32F1/persistent_store_flash.cpp View File

@@ -54,7 +54,7 @@ bool access_start() {
54 54
   return true;
55 55
 }
56 56
 
57
-bool access_finish(){
57
+bool access_finish() {
58 58
   FLASH_Lock();
59 59
   firstWrite = false;
60 60
   return true;

+ 12
- 14
Marlin/src/HAL/HAL_STM32F1/persistent_store_impl.cpp View File

@@ -44,37 +44,35 @@
44 44
 namespace HAL {
45 45
 namespace PersistentStore {
46 46
 
47
-#define CONFIG_FILE_NAME "eeprom.dat"
48 47
 #define HAL_STM32F1_EEPROM_SIZE 4096
49 48
 char HAL_STM32F1_eeprom_content[HAL_STM32F1_EEPROM_SIZE];
50 49
 
50
+char eeprom_filename[] = "eeprom.dat";
51
+
51 52
 bool access_start() {
52 53
   if (!card.cardOK) return false;
53 54
   int16_t bytes_read = 0;
54
-  const char eeprom_zero = 0xFF;
55
-  card.openFile((char *)CONFIG_FILE_NAME,true);
56
-  bytes_read = card.read (HAL_STM32F1_eeprom_content, HAL_STM32F1_EEPROM_SIZE);
57
-  if (bytes_read == -1) return false;
58
-  for (; bytes_read < HAL_STM32F1_EEPROM_SIZE; bytes_read++) {
55
+  constexpr char eeprom_zero = 0xFF;
56
+  card.openFile(eeprom_filename, true);
57
+  bytes_read = card.read(HAL_STM32F1_eeprom_content, HAL_STM32F1_EEPROM_SIZE);
58
+  if (bytes_read < 0) return false;
59
+  for (; bytes_read < HAL_STM32F1_EEPROM_SIZE; bytes_read++)
59 60
     HAL_STM32F1_eeprom_content[bytes_read] = eeprom_zero;
60
-  }
61 61
   card.closefile();
62 62
   return true;
63 63
 }
64 64
 
65
-bool access_finish(){
65
+bool access_finish() {
66 66
   if (!card.cardOK) return false;
67
-  int16_t bytes_written = 0;
68
-  card.openFile((char *)CONFIG_FILE_NAME,true);
69
-  bytes_written = card.write (HAL_STM32F1_eeprom_content, HAL_STM32F1_EEPROM_SIZE);
67
+  card.openFile(eeprom_filename, true);
68
+  int16_t bytes_written = card.write(HAL_STM32F1_eeprom_content, HAL_STM32F1_EEPROM_SIZE);
70 69
   card.closefile();
71 70
   return (bytes_written == HAL_STM32F1_EEPROM_SIZE);
72 71
 }
73 72
 
74 73
 bool write_data(int &pos, const uint8_t *value, uint16_t size, uint16_t *crc) {
75
-  for (int i = 0; i < size; i++) {
76
-    HAL_STM32F1_eeprom_content [pos + i] = value[i];
77
-  }
74
+  for (int i = 0; i < size; i++)
75
+    HAL_STM32F1_eeprom_content[pos + i] = value[i];
78 76
   crc16(crc, value, size);
79 77
   pos += size;
80 78
   return false;

+ 0
- 1
Marlin/src/HAL/HAL_STM32F4/persistent_store_impl.cpp View File

@@ -33,7 +33,6 @@ namespace HAL {
33 33
 namespace PersistentStore {
34 34
 
35 35
 bool access_start() { return true; }
36
-
37 36
 bool access_finish() { return true; }
38 37
 
39 38
 bool write_data(int &pos, const uint8_t *value, uint16_t size, uint16_t *crc) {

+ 2
- 7
Marlin/src/HAL/HAL_STM32F7/persistent_store_impl.cpp View File

@@ -33,13 +33,8 @@
33 33
 namespace HAL {
34 34
 namespace PersistentStore {
35 35
 
36
-bool access_start() {
37
-  return true;
38
-}
39
-
40
-bool access_finish(){
41
-  return true;
42
-}
36
+bool access_start() { return true; }
37
+bool access_finish() { return true; }
43 38
 
44 39
 bool write_data(int &pos, const uint8_t *value, uint16_t size, uint16_t *crc) {
45 40
   while (size--) {

+ 2
- 7
Marlin/src/HAL/HAL_TEENSY35_36/persistent_store_impl.cpp View File

@@ -9,13 +9,8 @@
9 9
 namespace HAL {
10 10
 namespace PersistentStore {
11 11
 
12
-bool access_start() {
13
-  return true;
14
-}
15
-
16
-bool access_finish() {
17
-  return true;
18
-}
12
+bool access_start() { return true; }
13
+bool access_finish() { return true; }
19 14
 
20 15
 bool write_data(int &pos, const uint8_t *value, uint16_t size, uint16_t *crc) {
21 16
   while (size--) {

+ 5
- 0
Marlin/src/sd/cardreader.h View File

@@ -121,6 +121,11 @@ public:
121 121
   FORCE_INLINE uint8_t percentDone() { return (isFileOpen() && filesize) ? sdpos / ((filesize + 99) / 100) : 0; }
122 122
   FORCE_INLINE char* getWorkDirName() { workDir.getFilename(filename); return filename; }
123 123
 
124
+  #if defined(__STM32F1__) && ENABLED(EEPROM_SETTINGS) && DISABLED(FLASH_EEPROM_EMULATION)
125
+    FORCE_INLINE int16_t read(void* buf, uint16_t nbyte) { return file.isOpen() ? file.read(buf, nbyte) : -1; }
126
+    FORCE_INLINE int16_t write(void* buf, uint16_t nbyte) { return file.isOpen() ? file.write(buf, nbyte) : -1; }
127
+  #endif
128
+
124 129
   Sd2Card& getSd2Card() { return sd2card; }
125 130
 
126 131
   #if ENABLED(AUTO_REPORT_SD_STATUS)

Loading…
Cancel
Save