From 3dd84350c59dbb0c503966ea80075442066e9ce4 Mon Sep 17 00:00:00 2001 From: yangwenxiong <46896566+yangwenxiong@users.noreply.github.com> Date: Tue, 30 Jul 2019 10:56:30 +0800 Subject: [PATCH 1/3] Add files via upload --- .../HAL/HAL_STM32/persistent_store_sdcard.cpp | 103 ++++++++++++++++++ 1 file changed, 103 insertions(+) create mode 100644 firmware/Marlin-SKR-Pro/Marlin/src/HAL/HAL_STM32/persistent_store_sdcard.cpp diff --git a/firmware/Marlin-SKR-Pro/Marlin/src/HAL/HAL_STM32/persistent_store_sdcard.cpp b/firmware/Marlin-SKR-Pro/Marlin/src/HAL/HAL_STM32/persistent_store_sdcard.cpp new file mode 100644 index 00000000..def49e29 --- /dev/null +++ b/firmware/Marlin-SKR-Pro/Marlin/src/HAL/HAL_STM32/persistent_store_sdcard.cpp @@ -0,0 +1,103 @@ +/** + * Marlin 3D Printer Firmware + * Copyright (c) 2019 MarlinFirmware [https://github.com/MarlinFirmware/Marlin] + * + * Based on Sprinter and grbl. + * Copyright (c) 2011 Camiel Gubbels / Erik van der Zalm + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + * + */ + +/** + * HAL for stm32duino.com based on Libmaple and compatible (STM32F1) + */ + +#ifdef TARGET_STM32F4 + +#include "../../inc/MarlinConfig.h" + +#if ENABLED(EEPROM_SETTINGS) && NONE(FLASH_EEPROM_EMULATION, SPI_EEPROM, I2C_EEPROM) + +#include "../shared/persistent_store_api.h" + +#ifndef E2END + #define E2END 0xFFF // 4KB +#endif +#define HAL_STM32F4_EEPROM_SIZE (E2END + 1) //16K size + +static char HAL_STM32F1_eeprom_content[HAL_STM32F4_EEPROM_SIZE]; + +#if ENABLED(SDSUPPORT) + + #include "../../sd/cardreader.h" + + #define EEPROM_FILENAME "eeprom.dat" + + bool PersistentStore::access_start() { + if (!card.isDetected()) return false; + + SdFile file, root = card.getroot(); + if (!file.open(&root, EEPROM_FILENAME, O_RDONLY)) + return false; + + int16_t bytes_read = file.read(HAL_STM32F1_eeprom_content, HAL_STM32F4_EEPROM_SIZE); + if (bytes_read < 0) return false; + for (; bytes_read < HAL_STM32F4_EEPROM_SIZE; bytes_read++) + HAL_STM32F1_eeprom_content[bytes_read] = 0xFF; + file.close(); + return true; + } + + bool PersistentStore::access_finish() { + if (!card.isDetected()) return false; + + SdFile file, root = card.getroot(); + int16_t bytes_written = 0; + if (file.open(&root, EEPROM_FILENAME, O_CREAT | O_WRITE | O_TRUNC)) { + bytes_written = file.write(HAL_STM32F1_eeprom_content, HAL_STM32F4_EEPROM_SIZE); + file.close(); + } + return (bytes_written == HAL_STM32F4_EEPROM_SIZE); + } + +#else // !SDSUPPORT + + #error "Please define SPI_EEPROM (in Configuration.h) or disable EEPROM_SETTINGS." + +#endif // !SDSUPPORT + +bool PersistentStore::write_data(int &pos, const uint8_t *value, const size_t size, uint16_t *crc) { + for (size_t i = 0; i < size; i++) + HAL_STM32F1_eeprom_content[pos + i] = value[i]; + crc16(crc, value, size); + pos += size; + return false; +} + +bool PersistentStore::read_data(int &pos, uint8_t* value, const size_t size, uint16_t *crc, const bool writing/*=true*/) { + for (size_t i = 0; i < size; i++) { + uint8_t c = HAL_STM32F1_eeprom_content[pos + i]; + if (writing) value[i] = c; + crc16(crc, &c, 1); + } + pos += size; + return false; +} + +size_t PersistentStore::capacity() { return HAL_STM32F4_EEPROM_SIZE; } + +#endif // EEPROM_SETTINGS + +#endif // __STM32F1__ From 20a986f5646806a29e159321137faceffef872a2 Mon Sep 17 00:00:00 2001 From: yangwenxiong <46896566+yangwenxiong@users.noreply.github.com> Date: Tue, 30 Jul 2019 10:58:02 +0800 Subject: [PATCH 2/3] Update persistent_store_impl.cpp --- .../Marlin/src/HAL/HAL_STM32/persistent_store_impl.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/firmware/Marlin-SKR-Pro/Marlin/src/HAL/HAL_STM32/persistent_store_impl.cpp b/firmware/Marlin-SKR-Pro/Marlin/src/HAL/HAL_STM32/persistent_store_impl.cpp index 1161db2c..50a915de 100644 --- a/firmware/Marlin-SKR-Pro/Marlin/src/HAL/HAL_STM32/persistent_store_impl.cpp +++ b/firmware/Marlin-SKR-Pro/Marlin/src/HAL/HAL_STM32/persistent_store_impl.cpp @@ -24,7 +24,7 @@ #include "../../inc/MarlinConfig.h" -#if ENABLED(EEPROM_SETTINGS) +#if ENABLED(EEPROM_SETTINGS) && EITHER(FLASH_EEPROM_EMULATION,SRAM_EEPROM_EMULATION) #include "../shared/persistent_store_api.h" From 7bb61d90766d3a9a32dd9c26189803cca3ca958b Mon Sep 17 00:00:00 2001 From: yangwenxiong <46896566+yangwenxiong@users.noreply.github.com> Date: Tue, 30 Jul 2019 10:59:16 +0800 Subject: [PATCH 3/3] Update pins_BIGTREE_SKR_PRO_V1.1.h --- .../Marlin-SKR-Pro/Marlin/src/pins/pins_BIGTREE_SKR_PRO_V1.1.h | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/firmware/Marlin-SKR-Pro/Marlin/src/pins/pins_BIGTREE_SKR_PRO_V1.1.h b/firmware/Marlin-SKR-Pro/Marlin/src/pins/pins_BIGTREE_SKR_PRO_V1.1.h index 1d727afe..2fc89e62 100644 --- a/firmware/Marlin-SKR-Pro/Marlin/src/pins/pins_BIGTREE_SKR_PRO_V1.1.h +++ b/firmware/Marlin-SKR-Pro/Marlin/src/pins/pins_BIGTREE_SKR_PRO_V1.1.h @@ -31,7 +31,8 @@ #define BOARD_NAME "BIGTREE SKR Pro V1.1" -#define EEPROM_EMULATED_WITH_SRAM +//#define SRAM_EEPROM_EMULATION +//#define FLASH_EEPROM_EMULATION //Use Flash Emulation Eeprom Store Data Otherwise Use SDCard Emulation EEprom Store Data // // Servos