From 7ef581b3279074d3d2b16a5cdeaddcfe62cb6b0d Mon Sep 17 00:00:00 2001 From: ksmith3036 <44052735+ksmith3036@users.noreply.github.com> Date: Thu, 31 Dec 2020 00:50:10 +0100 Subject: [PATCH] Combine full version information into one const string in source code to optimize bootloader size, to make the bootloader for MKR VIDOR 4000 less than 8 KByte in size. --- bootloaders/zero/sam_ba_monitor.c | 11 +++-------- 1 file changed, 3 insertions(+), 8 deletions(-) diff --git a/bootloaders/zero/sam_ba_monitor.c b/bootloaders/zero/sam_ba_monitor.c index cf6eb22df..98259faf1 100644 --- a/bootloaders/zero/sam_ba_monitor.c +++ b/bootloaders/zero/sam_ba_monitor.c @@ -29,9 +29,9 @@ #include "board_driver_led.h" #include -const char RomBOOT_Version[] = SAM_BA_VERSION; // X = Chip Erase, Y = Write Buffer, Z = Checksum Buffer, P = Secure Bit Aware -const char RomBOOT_ExtendedCapabilities[] = "[Arduino:XYZP]"; +#define ROMBOOT_EXTENDEDCAPABILITIES "[Arduino:XYZP]" +const char ROMBoot_VersionInformation[] = "v" SAM_BA_VERSION " " ROMBOOT_EXTENDEDCAPABILITIES " " __DATE__ " " __TIME__ "\n\r"; /* Provides one common interface to handle both USART and USB-CDC */ typedef struct @@ -485,12 +485,7 @@ static void sam_ba_monitor_loop(void) } else if (command == 'V') // Read version information { - sam_ba_putdata( ptr_monitor_if, "v", 1); - sam_ba_putdata( ptr_monitor_if, (uint8_t *) RomBOOT_Version, strlen(RomBOOT_Version)); - sam_ba_putdata( ptr_monitor_if, " ", 1); - sam_ba_putdata( ptr_monitor_if, (uint8_t *) RomBOOT_ExtendedCapabilities, strlen(RomBOOT_ExtendedCapabilities)); - ptr = (uint8_t*) &(" " __DATE__ " " __TIME__ "\n\r"); - sam_ba_putdata( ptr_monitor_if, ptr, strlen(ptr)); + sam_ba_putdata( ptr_monitor_if, ROMBoot_VersionInformation, sizeof(ROMBoot_VersionInformation) - 1); } else if (command == 'X') // Erase flash {