From e358cb2b78fbad420defa7620b379ef4c81af6c9 Mon Sep 17 00:00:00 2001 From: Alex Voinea Date: Sun, 6 Feb 2022 00:23:40 +0100 Subject: [PATCH 1/3] Fix DEBUG_SEC_LANG --- Firmware/Marlin_main.cpp | 4 ++-- Firmware/language.c | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/Firmware/Marlin_main.cpp b/Firmware/Marlin_main.cpp index 3663cbe12..38eeb50b5 100755 --- a/Firmware/Marlin_main.cpp +++ b/Firmware/Marlin_main.cpp @@ -1242,9 +1242,9 @@ void setup() printf_P(_n("_SEC_LANG_TABLE checksum = %04x\n"), sum); sum = (sum >> 8) | ((sum & 0xff) << 8); //swap bytes if (sum == header.checksum) - puts_P(_n("Checksum OK"), sum); + printf_P(_n("Checksum OK\n"), sum); else - puts_P(_n("Checksum NG"), sum); + printf_P(_n("Checksum NG\n"), sum); } else puts_P(_n("lang_get_header failed!")); diff --git a/Firmware/language.c b/Firmware/language.c index 9a1113b96..ac8924266 100644 --- a/Firmware/language.c +++ b/Firmware/language.c @@ -264,7 +264,7 @@ uint16_t lang_print_sec_lang(FILE* out) printf_P(_n(" _lt_resv0 = 0x%04x\n"), _lt_resv0); printf_P(_n(" _lt_resv1 = 0x%08lx\n"), _lt_resv1); if (_lt_magic != LANG_MAGIC) return 0; - puts_P(_n(" strings:\n")); + puts_P(_n(" strings:")); uint16_t ui = _SEC_LANG_TABLE; //table pointer for (ui = 0; ui < _lt_count; ui++) fprintf_P(out, _n(" %3d %S\n"), ui, lang_get_sec_lang_str_by_id(ui)); From bf45d4dcd161b110fb5179893585223395a9335f Mon Sep 17 00:00:00 2001 From: Alex Voinea Date: Sun, 6 Feb 2022 00:25:51 +0100 Subject: [PATCH 2/3] Make the compiler align the lang reserved area to the spm page boundary --- Firmware/language.c | 3 ++- Firmware/language.h | 2 +- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/Firmware/language.c b/Firmware/language.c index ac8924266..b78c709ee 100644 --- a/Firmware/language.c +++ b/Firmware/language.c @@ -1,6 +1,7 @@ //language.c #include "language.h" #include +#include #include #include "bootapp.h" @@ -28,7 +29,7 @@ uint8_t lang_is_selected(void) { return 1; } #else //(LANG_MODE == 0) //secondary languages in progmem or xflash //reserved xx kbytes for secondary language table -const char _SEC_LANG[LANG_SIZE_RESERVED] PROGMEM_I2 = "_SEC_LANG"; +const char _SEC_LANG[LANG_SIZE_RESERVED] __attribute__((aligned(SPM_PAGESIZE))) PROGMEM_I2 = "_SEC_LANG"; //primary language signature const uint32_t _PRI_LANG_SIGNATURE[1] __attribute__((section(".progmem0"))) = {0xffffffff}; diff --git a/Firmware/language.h b/Firmware/language.h index 736d522e3..651ec0383 100644 --- a/Firmware/language.h +++ b/Firmware/language.h @@ -117,7 +117,7 @@ extern const char _SEC_LANG[LANG_SIZE_RESERVED]; extern const char* lang_get_translation(const char* s); /** @def _SEC_LANG_TABLE * @brief Align table to start of 256 byte page */ -#define _SEC_LANG_TABLE ((((uint16_t)&_SEC_LANG) + 0x00ff) & 0xff00) +#define _SEC_LANG_TABLE ((uint16_t)&_SEC_LANG) #endif //(LANG_MODE != 0) /** @brief selects language, eeprom is updated in case of success */ From 426ab24c3609c6be9a5312914b7174d6773d27b0 Mon Sep 17 00:00:00 2001 From: Alex Voinea Date: Wed, 9 Feb 2022 22:12:23 +0100 Subject: [PATCH 3/3] Let's not talk about this --- Firmware/Marlin_main.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Firmware/Marlin_main.cpp b/Firmware/Marlin_main.cpp index 38eeb50b5..8a02e652f 100755 --- a/Firmware/Marlin_main.cpp +++ b/Firmware/Marlin_main.cpp @@ -1242,9 +1242,9 @@ void setup() printf_P(_n("_SEC_LANG_TABLE checksum = %04x\n"), sum); sum = (sum >> 8) | ((sum & 0xff) << 8); //swap bytes if (sum == header.checksum) - printf_P(_n("Checksum OK\n"), sum); + puts_P(_n("Checksum OK")); else - printf_P(_n("Checksum NG\n"), sum); + puts_P(_n("Checksum NG")); } else puts_P(_n("lang_get_header failed!"));