diff options
| author | Alex Evans <715855+mmalex@users.noreply.github.com> | 2024-11-06 14:21:16 +0000 |
|---|---|---|
| committer | Alex Evans <715855+mmalex@users.noreply.github.com> | 2024-11-06 14:21:16 +0000 |
| commit | 2ecdaa538fc7a9b9613b01357fbd2cdb293735a8 (patch) | |
| tree | 839cb5dc74c66273439472db988e338eadfe1f44 /bootloader | |
| parent | 5fffef41b9d02f38d0a571be1d53c6c8581d306e (diff) | |
| download | plinky-2ecdaa538fc7a9b9613b01357fbd2cdb293735a8.tar.gz | |
fix the plinky bootloader to work on mac
Diffstat (limited to 'bootloader')
| -rw-r--r-- | bootloader/.settings/com.st.stm32cube.ide.mcu.sfrview.prefs | 2 | ||||
| -rwxr-xr-x | bootloader/.settings/language.settings.xml | 4 | ||||
| -rwxr-xr-x | bootloader/.settings/stm32cubeide.project.prefs | 6 | ||||
| -rwxr-xr-x | bootloader/Core/Src/ghostfat.c | 146 | ||||
| -rwxr-xr-x | bootloader/Core/Src/main.c | 3 | ||||
| -rwxr-xr-x | bootloader/STM32L476VGTX_RAM.ld | 2 | ||||
| -rwxr-xr-x | bootloader/plinkybl debug.launch | 33 | ||||
| -rwxr-xr-x | bootloader/plinkybl release.launch | 4 |
8 files changed, 133 insertions, 67 deletions
diff --git a/bootloader/.settings/com.st.stm32cube.ide.mcu.sfrview.prefs b/bootloader/.settings/com.st.stm32cube.ide.mcu.sfrview.prefs new file mode 100644 index 0000000..98a69fc --- /dev/null +++ b/bootloader/.settings/com.st.stm32cube.ide.mcu.sfrview.prefs @@ -0,0 +1,2 @@ +eclipse.preferences.version=1 +sfrviewstate={"fFavorites"\:{"fLists"\:{}},"fProperties"\:{"fNodeProperties"\:{}}} diff --git a/bootloader/.settings/language.settings.xml b/bootloader/.settings/language.settings.xml index 795ff2e..4c754c5 100755 --- a/bootloader/.settings/language.settings.xml +++ b/bootloader/.settings/language.settings.xml @@ -5,7 +5,7 @@ <provider copy-of="extension" id="org.eclipse.cdt.ui.UserLanguageSettingsProvider"/> <provider-reference id="org.eclipse.cdt.core.ReferencedProjectsLanguageSettingsProvider" ref="shared-provider"/> <provider-reference id="org.eclipse.cdt.managedbuilder.core.MBSLanguageSettingsProvider" ref="shared-provider"/> - <provider class="com.st.stm32cube.ide.mcu.toolchain.armnone.setup.CrossBuiltinSpecsDetector" console="false" env-hash="1716914187473399352" id="com.st.stm32cube.ide.mcu.toolchain.armnone.setup.CrossBuiltinSpecsDetector" keep-relative-paths="false" name="MCU ARM GCC Built-in Compiler Settings" parameter="${COMMAND} ${FLAGS} -E -P -v -dD "${INPUTS}"" prefer-non-shared="true"> + <provider class="com.st.stm32cube.ide.mcu.toolchain.armnone.setup.CrossBuiltinSpecsDetector" console="false" env-hash="-288536475984410913" id="com.st.stm32cube.ide.mcu.toolchain.armnone.setup.CrossBuiltinSpecsDetector" keep-relative-paths="false" name="MCU ARM GCC Built-in Compiler Settings" parameter="${COMMAND} ${FLAGS} -E -P -v -dD "${INPUTS}"" prefer-non-shared="true"> <language-scope id="org.eclipse.cdt.core.gcc"/> <language-scope id="org.eclipse.cdt.core.g++"/> </provider> @@ -16,7 +16,7 @@ <provider copy-of="extension" id="org.eclipse.cdt.ui.UserLanguageSettingsProvider"/> <provider-reference id="org.eclipse.cdt.core.ReferencedProjectsLanguageSettingsProvider" ref="shared-provider"/> <provider-reference id="org.eclipse.cdt.managedbuilder.core.MBSLanguageSettingsProvider" ref="shared-provider"/> - <provider class="com.st.stm32cube.ide.mcu.toolchain.armnone.setup.CrossBuiltinSpecsDetector" console="false" env-hash="1679231874160839550" id="com.st.stm32cube.ide.mcu.toolchain.armnone.setup.CrossBuiltinSpecsDetector" keep-relative-paths="false" name="MCU ARM GCC Built-in Compiler Settings" parameter="${COMMAND} ${FLAGS} -E -P -v -dD "${INPUTS}"" prefer-non-shared="true"> + <provider class="com.st.stm32cube.ide.mcu.toolchain.armnone.setup.CrossBuiltinSpecsDetector" console="false" env-hash="-203253394576153563" id="com.st.stm32cube.ide.mcu.toolchain.armnone.setup.CrossBuiltinSpecsDetector" keep-relative-paths="false" name="MCU ARM GCC Built-in Compiler Settings" parameter="${COMMAND} ${FLAGS} -E -P -v -dD "${INPUTS}"" prefer-non-shared="true"> <language-scope id="org.eclipse.cdt.core.gcc"/> <language-scope id="org.eclipse.cdt.core.g++"/> </provider> diff --git a/bootloader/.settings/stm32cubeide.project.prefs b/bootloader/.settings/stm32cubeide.project.prefs index 93902a1..8ed9ba8 100755 --- a/bootloader/.settings/stm32cubeide.project.prefs +++ b/bootloader/.settings/stm32cubeide.project.prefs @@ -1,4 +1,4 @@ -2F62501ED4689FB349E356AB974DBE57=0D30F5178426EDF7CB978D9DAD379EFF -8DF89ED150041C4CBC7CB9A9CAA90856=0D30F5178426EDF7CB978D9DAD379EFF -DC22A860405A8BF2F2C095E5B6529F12=49746FB430C2084109BFFA3487BC8947 +2F62501ED4689FB349E356AB974DBE57=94ADD5E4909A0CFA8C7645E0FE590B85 +8DF89ED150041C4CBC7CB9A9CAA90856=94ADD5E4909A0CFA8C7645E0FE590B85 +DC22A860405A8BF2F2C095E5B6529F12=784C6BDED0B54E15528F5E4F1E9EDAE2 eclipse.preferences.version=1 diff --git a/bootloader/Core/Src/ghostfat.c b/bootloader/Core/Src/ghostfat.c index d0ef21a..e3a94d6 100755 --- a/bootloader/Core/Src/ghostfat.c +++ b/bootloader/Core/Src/ghostfat.c @@ -30,13 +30,13 @@ #include "main.h" #undef FLASH_PAGE_SIZE -#define VOLUME_LABEL "PLINKY" #define FLASH_PAGE_SIZE 4096 // the mcu does 2k, but the SPI does 4k. lets go with 4k #define USER_FLASH_START 65536 #define USER_FLASH_END (512*1024) #define UF2_FAMILY 0x00ff6919 #define VALID_FLASH_ADDR(addr, sz) (USER_FLASH_START <= (addr) && (addr) + (sz) <= USER_FLASH_END) + void target_flash_lock(void) { HAL_FLASH_Lock(); } @@ -52,29 +52,6 @@ void scb_reset_system(void) { #include "uf2.h" typedef struct { - uint8_t JumpInstruction[3]; // 0 - uint8_t OEMInfo[8]; // 3 - uint16_t SectorSize; // 0xb - uint8_t SectorsPerCluster; // 0xd - uint16_t ReservedSectors; // 0xe - uint8_t FATCopies; // 0x10 - uint16_t RootDirectoryEntries; // 0x11 - uint16_t TotalSectors16; // 0x13 - uint8_t MediaDescriptor; // 0x15 - uint16_t SectorsPerFAT; // 0x16 - uint16_t SectorsPerTrack; // 0x18 - uint16_t Heads; // 0x1a - uint32_t HiddenSectors; // 0x1c - uint32_t TotalSectors32; // 0x20 - uint8_t PhysicalDriveNum; - uint8_t Reserved; - uint8_t ExtendedBootSig; - uint32_t VolumeSerialNumber; - uint8_t VolumeLabel[11]; - uint8_t FilesystemIdentifier[8]; -} __attribute__((packed)) FAT_BootBlock; - -typedef struct { char name[8]; char ext[3]; uint8_t attrs; @@ -100,9 +77,9 @@ struct UF2File { }; const char infoUf2File[] = // - "UF2 Bootloader v1.0.0 Plinky\r\n" - "Model: Plinky Synth v1.0.0\r\n" - "Board-ID: STM32L476-Plinky-100\r\n"; + "UF2 Bootloader v1.0.3 Plinky\r\n" + "Model: Plinky Synth v1.0.3\r\n" + "Board-ID: STM32L476-Plinky-103\r\n"; const char indexFile[] = // "<!doctype html>\n" @@ -117,8 +94,8 @@ const char indexFile[] = // // ae - rewrite this part completely, I dont like the define mess // the sizes here are as reported by FAT, so for UF2 files they are double the size on the actual flash chip static const struct UF2File info[] = { - { .name = "INFO_UF2TXT", .content = infoUf2File, .size = sizeof(infoUf2File) - 1 }, { .name = "INDEX HTM", .content = indexFile, .size = sizeof(indexFile) - 1 }, + { .name = "INFO_UF2TXT", .content = infoUf2File, .size = sizeof(infoUf2File) - 1 }, { .name = "BOOTLOADUF2", .content = (void*) DELAY_BUF, .size = 128 * 1024 }, { .name = "CURRENT UF2", .content = (void*) 0x08010000, .size = (1024 - 128) * 1024 }, { .name = "PRESETS UF2", .content = (void*) 0x08080000, .size = 1024 * 1024- 4 * 1024 }, @@ -132,24 +109,71 @@ static const struct UF2File info[] = { { .name = "SAMPLE6 UF2", .content = (void*) 0x41800000, .size = 8 * 1024 * 1024 }, { .name = "SAMPLE7 UF2", .content = (void*) 0x41c00000, .size = 8 * 1024 * 1024 }, }; + +static inline uint32_t mix(uint32_t a,uint32_t b,uint32_t c) \ +{ \ + a -= b; a -= c; a ^= (c>>13); \ + b -= c; b -= a; b ^= (a<<8); \ + c -= a; c -= b; c ^= (b>>13); \ + a -= b; a -= c; a ^= (c>>12); \ + b -= c; b -= a; b ^= (a<<16); \ + c -= a; c -= b; c ^= (b>>5); \ + a -= b; a -= c; a ^= (c>>3); \ + b -= c; b -= a; b ^= (a<<10); \ + c -= a; c -= b; c ^= (b>>15); \ + return c; +} +uint32_t get_serialno(void) { + uint32_t uid0=HAL_GetUIDw0 (); + uint32_t uid1=HAL_GetUIDw1 (); + uint32_t uid2=HAL_GetUIDw2 (); + return mix(uid0,uid1,uid2); +} + #define NUM_FILES 14 #define FIRST_UF2_FILE 2 +// these dont count the MBR! #define RESERVED_SECTORS 1 -#define ROOT_DIR_SECTORS 1 -#define SECTORS_PER_FAT 191 // each fat sector has 256 cluster entries = 512k of disk, +#define ROOT_DIR_SECTORS 32 +#define SECTORS_PER_FAT 129 + +#define SECTORS_PER_CLUSTER 8 #define START_FAT0 RESERVED_SECTORS // 1 -#define START_FAT1 (START_FAT0 + SECTORS_PER_FAT) // 192 -#define START_ROOTDIR (START_FAT1 + SECTORS_PER_FAT) // 192+191 -#define START_CLUSTERS (START_ROOTDIR + ROOT_DIR_SECTORS) // 192+192 +#define START_FAT1 (START_FAT0 + SECTORS_PER_FAT) // 130+1 +#define START_ROOTDIR (START_FAT1 + SECTORS_PER_FAT) // 259+1 +#define START_CLUSTERS (START_ROOTDIR + ROOT_DIR_SECTORS) // 260+1 + +const static uint8_t boot_sector[] = { + 0xeb, 0x3c, 0x90, // jump + 'M', 'S', 'W', 'I', 'N', '4', '.', '1', + 0x00, 0x02, // sector size 512 + SECTORS_PER_CLUSTER, // sectors per cluster + 0x01, 0x00, // reserved clusters (minus the MBR!) + + 0x02, // number of FATs // 16 + 0x00, 0x02, // root directory entries - 512 (32 sectors) + 0x00, 0x00, // total sectors (16 bit) + 0xf8, // media descriptor + 0x81, 0x00, // sectors per FAT + 0x01, 0x00, // sectors per track + 0x01, 0x00, // number of heads + 0x01,0,0,0, // hidden sectors + + 0xff, 0xff, 0x03, 0x00, // total sectors (32 bit) // 32 + 0, // drive number + 0, // reserved + 0x29, // extended boot signature + 0, 0, 0, 0, // volume serial number // 39 + 'P', 'L', 'I', 'N', 'K', + + 'Y', ' ', ' ', ' ', ' ', ' ', // volume label + 'F', 'A', 'T', '1', '6', ' ', ' ', ' ', // filesystem identifier + 0xeb, 0xfe +}; +static_assert(sizeof(boot_sector)==0x40,"boot sector size"); -static const FAT_BootBlock BootBlock = { .JumpInstruction = { 0xeb, 0x3c, 0x90 }, .OEMInfo = "UF2 UF2 ", .SectorSize = 512, - .SectorsPerCluster = 4, // 2k clusters - .ReservedSectors = RESERVED_SECTORS, .FATCopies = 2, .RootDirectoryEntries = (ROOT_DIR_SECTORS * 512 / 32), - .TotalSectors16 = 0, //NUM_FAT_BLOCKS - 2, - .TotalSectors32 = (95 * 1024 * 1024) / 512, .MediaDescriptor = 0xF8, .SectorsPerFAT = SECTORS_PER_FAT, .SectorsPerTrack = 1, .Heads = 1, - .ExtendedBootSig = 0x29, .VolumeSerialNumber = 0x00420042, .VolumeLabel = VOLUME_LABEL, .FilesystemIdentifier = "FAT16 ", }; static uint32_t ms; #ifdef FLASH_PAGE_SIZE @@ -343,7 +367,7 @@ void flushFlash(void) { } int clustersize(int bytes) { - return (bytes+2043)/2048; + return (bytes+SECTORS_PER_CLUSTER*512-1)/(SECTORS_PER_CLUSTER*512); } void flash_write(uint32_t dst, const uint8_t *src, int len) { @@ -382,21 +406,38 @@ static void padded_memcpy(char *dst, const char *src, int len) { } } + int read_block(uint32_t block_no, uint8_t *data) { memset(data, 0, 512); + if (block_no == 0) { + // MBR - including partition table + *(uint32_t*)(data+0x1b8) = get_serialno(); + data[0x1c2] = 0xe; // FAT16 + data[0x1c6] = 0x1; + data[0x1ca] = 0xff; // disk size in sectors + data[0x1cb] = 0xff; + data[0x1cc] = 0x03; + data[0x1fe] = 0x55; + data[0x1ff] = 0xaa; + return 0; + } + block_no--; // skip mbr uint32_t sectionIdx = block_no; - if (block_no == 0) { - memcpy(data, &BootBlock, sizeof(BootBlock)); - data[510] = 0x55; - data[511] = 0xaa; + // Boot sector + memcpy(data, boot_sector,sizeof(boot_sector)); + *(uint32_t*)(data+39) = get_serialno(); + data[0x1fe] = 0x55; + data[0x1ff] = 0xaa; } else if (block_no < START_ROOTDIR) { sectionIdx -= START_FAT0; if (sectionIdx >= SECTORS_PER_FAT) sectionIdx -= SECTORS_PER_FAT; if (sectionIdx == 0) { - data[0] = 0xf0; + data[0] = 0xf8; data[1] = 0xff; + data[2] = 0xff; + data[3] = 0xff; } int basecluster = sectionIdx * 256; int first_cluster=2; @@ -415,16 +456,27 @@ int read_block(uint32_t block_no, uint8_t *data) { } } else if (block_no < START_CLUSTERS) { sectionIdx -= START_ROOTDIR; + // 19 Jul 2019 10:23:00 +#define PLINKY_TIME_FRAC 100 +#define PLINKY_TIME ((10u << 11u) | (23u << 5u) | (00u >> 1u)) +#define PLINKY_DATE ((39u << 9u) | (7u << 5u) | (19u)) if (sectionIdx == 0) { DirEntry *d = (void*) data; - padded_memcpy(d->name, (const char*) BootBlock.VolumeLabel, 11); + padded_memcpy(d->name, "PLINKY ", 11); d->attrs = 0x28; + d->createTimeFine = PLINKY_TIME_FRAC; + d->createTime = d->updateTime = PLINKY_TIME; + d->createDate = d->updateDate = PLINKY_DATE; int first_cluster=2; for (int i = 0; i < NUM_FILES; ++i) { d++; const struct UF2File *inf = &info[i]; d->size = inf->size; d->startCluster = first_cluster; + d->attrs = 0; + d->createTimeFine = PLINKY_TIME_FRAC; + d->createTime = d->updateTime = PLINKY_TIME; + d->createDate = d->updateDate = PLINKY_DATE; first_cluster+=clustersize(d->size); padded_memcpy(d->name, inf->name, 11); } @@ -433,7 +485,7 @@ int read_block(uint32_t block_no, uint8_t *data) { sectionIdx -= START_CLUSTERS; int first_cluster=2; for (int f = 0; f < NUM_FILES; ++f) { - int sector_in_file = sectionIdx - (first_cluster - 2) * 4; + int sector_in_file = sectionIdx - (first_cluster - 2) * SECTORS_PER_CLUSTER; first_cluster+=clustersize(info[f].size); if (sector_in_file < 0) continue; diff --git a/bootloader/Core/Src/main.c b/bootloader/Core/Src/main.c index 0a9ebdb..2f45dc4 100755 --- a/bootloader/Core/Src/main.c +++ b/bootloader/Core/Src/main.c @@ -304,13 +304,11 @@ int main(void) HAL_Delay(1); bool encdown = !((GPIOC->IDR>>13)&1); - if (!encdown) { // encoder not down jump_to_app(); } // BOOTLOADER FLASHING MODE!! memcpy((void*)DELAY_BUF,(void*)0x08000000,65536); // copy bootloader into RAM!:) - memset((void*)REVERB_BUF,0,32768); // use reverbbuf as a byte mask of which bootlder pages have been written /* USER CODE END SysInit */ @@ -339,6 +337,7 @@ int main(void) { /* USER CODE END WHILE */ + /* USER CODE BEGIN 3 */ if (encstate==1) startreset=true; diff --git a/bootloader/STM32L476VGTX_RAM.ld b/bootloader/STM32L476VGTX_RAM.ld index 6476844..1b7cd20 100755 --- a/bootloader/STM32L476VGTX_RAM.ld +++ b/bootloader/STM32L476VGTX_RAM.ld @@ -37,7 +37,7 @@ _Min_Stack_Size = 0x400; /* required amount of stack */ /* Memories definition */ MEMORY { - RAM (xrw) : ORIGIN = 0x20000000, LENGTH = 96K + RAM (xrw) : ORIGIN = 0x20000000, LENGTH = 32K RAM2 (xrw) : ORIGIN = 0x10000000, LENGTH = 32K FLASH (rx) : ORIGIN = 0x8000000, LENGTH = 1024K } diff --git a/bootloader/plinkybl debug.launch b/bootloader/plinkybl debug.launch index aa82eb3..6908cb2 100755 --- a/bootloader/plinkybl debug.launch +++ b/bootloader/plinkybl debug.launch @@ -1,11 +1,18 @@ <?xml version="1.0" encoding="UTF-8" standalone="no"?> <launchConfiguration type="com.st.stm32cube.ide.mcu.debug.launch.launchConfigurationType"> <stringAttribute key="com.st.stm32cube.ide.mcu.debug.launch.access_port_id" value="0"/> + <stringAttribute key="com.st.stm32cube.ide.mcu.debug.launch.cubeprog_external_loaders" value="[]"/> + <stringAttribute key="com.st.stm32cube.ide.mcu.debug.launch.debug_auth_certif_path" value=""/> + <booleanAttribute key="com.st.stm32cube.ide.mcu.debug.launch.debug_auth_check_enable" value="false"/> + <stringAttribute key="com.st.stm32cube.ide.mcu.debug.launch.debug_auth_key_path" value=""/> + <stringAttribute key="com.st.stm32cube.ide.mcu.debug.launch.debug_auth_permission" value="debug_non_secure_L3"/> <booleanAttribute key="com.st.stm32cube.ide.mcu.debug.launch.enable_live_expr" value="true"/> <booleanAttribute key="com.st.stm32cube.ide.mcu.debug.launch.enable_swv" value="false"/> <intAttribute key="com.st.stm32cube.ide.mcu.debug.launch.formatVersion" value="2"/> <stringAttribute key="com.st.stm32cube.ide.mcu.debug.launch.ip_address_local" value="localhost"/> - <stringAttribute key="com.st.stm32cube.ide.mcu.debug.launch.loadList" value="{"fItems":[{"fIsFromMainTab":true,"fPath":"Debug\\plinkybl.elf","fProjectName":"plinkybl","fPerformBuild":true,"fDownload":true,"fLoadSymbols":true}]}"/> + <booleanAttribute key="com.st.stm32cube.ide.mcu.debug.launch.limit_swo_clock.enabled" value="false"/> + <stringAttribute key="com.st.stm32cube.ide.mcu.debug.launch.limit_swo_clock.value" value=""/> + <stringAttribute key="com.st.stm32cube.ide.mcu.debug.launch.loadList" value="{"fItems":[{"fIsFromMainTab":true,"fPath":"Debug/plinkybl.elf","fProjectName":"plinkybl","fPerformBuild":true,"fDownload":true,"fLoadSymbols":true}]}"/> <stringAttribute key="com.st.stm32cube.ide.mcu.debug.launch.override_start_address_mode" value="default"/> <stringAttribute key="com.st.stm32cube.ide.mcu.debug.launch.remoteCommand" value="target remote"/> <booleanAttribute key="com.st.stm32cube.ide.mcu.debug.launch.startServer" value="true"/> @@ -21,12 +28,9 @@ <booleanAttribute key="com.st.stm32cube.ide.mcu.debug.launch.verify_flash_download" value="true"/> <booleanAttribute key="com.st.stm32cube.ide.mcu.debug.stlink.cti_allow_halt" value="false"/> <booleanAttribute key="com.st.stm32cube.ide.mcu.debug.stlink.cti_signal_halt" value="false"/> - <booleanAttribute key="com.st.stm32cube.ide.mcu.debug.stlink.enable_external_loader" value="false"/> <booleanAttribute key="com.st.stm32cube.ide.mcu.debug.stlink.enable_logging" value="false"/> <booleanAttribute key="com.st.stm32cube.ide.mcu.debug.stlink.enable_max_halt_delay" value="false"/> <booleanAttribute key="com.st.stm32cube.ide.mcu.debug.stlink.enable_shared_stlink" value="false"/> - <stringAttribute key="com.st.stm32cube.ide.mcu.debug.stlink.external_loader" value=""/> - <booleanAttribute key="com.st.stm32cube.ide.mcu.debug.stlink.external_loader_init" value="false"/> <stringAttribute key="com.st.stm32cube.ide.mcu.debug.stlink.frequency" value="0"/> <booleanAttribute key="com.st.stm32cube.ide.mcu.debug.stlink.halt_all_on_reset" value="false"/> <stringAttribute key="com.st.stm32cube.ide.mcu.debug.stlink.log_file" value="C:\Users\blues\STM32CubeIDE\workspace_1.4.0\plinkybl\Debug\st-link_gdbserver_log.txt"/> @@ -36,13 +40,21 @@ <booleanAttribute key="com.st.stm32cube.ide.mcu.debug.stlink.stlink_check_serial_number" value="false"/> <stringAttribute key="com.st.stm32cube.ide.mcu.debug.stlink.stlink_txt_serial_number" value=""/> <stringAttribute key="com.st.stm32cube.ide.mcu.debug.stlink.watchdog_config" value="none"/> - <stringAttribute key="com.st.stm32cube.ide.mcu.debug.stlinkrestart_configurations" value="{"fItems":[{"fDisplayName":"Reset","fIsSuppressible":false,"fResetAttribute":"Reset","fResetStrategies":[{"fDisplayName":"Reset","fLaunchAttribute":"monitor reset","fGdbCommands":["monitor reset"],"fCmdOptions":[]},{"fDisplayName":"None","fLaunchAttribute":"no_reset","fGdbCommands":[],"fCmdOptions":[]}],"fGdbCommandGroup":{"name":"Additional commands","commands":[]}}]}"/> + <booleanAttribute key="com.st.stm32cube.ide.mcu.debug.stlinkenable_rtos" value="false"/> + <stringAttribute key="com.st.stm32cube.ide.mcu.debug.stlinkrestart_configurations" value="{"fVersion":1,"fItems":[{"fDisplayName":"Reset","fIsSuppressible":false,"fResetAttribute":"Software system reset","fResetStrategies":[{"fDisplayName":"Software system reset","fLaunchAttribute":"system_reset","fGdbCommands":["monitor reset\n"],"fCmdOptions":["-g"]},{"fDisplayName":"Hardware reset","fLaunchAttribute":"hardware_reset","fGdbCommands":["monitor reset hardware\n"],"fCmdOptions":["-g"]},{"fDisplayName":"Core reset","fLaunchAttribute":"core_reset","fGdbCommands":["monitor reset core\n"],"fCmdOptions":["-g"]},{"fDisplayName":"None","fLaunchAttribute":"no_reset","fGdbCommands":[],"fCmdOptions":["-g"]}],"fGdbCommandGroup":{"name":"Additional commands","commands":[]},"fStartApplication":true}]}"/> <booleanAttribute key="com.st.stm32cube.ide.mcu.debug.swv.swv_wait_for_sync" value="true"/> + <booleanAttribute key="com.st.stm32cube.ide.mcu.rtosproxy.enableRtosProxy" value="false"/> + <stringAttribute key="com.st.stm32cube.ide.mcu.rtosproxy.rtosProxyCustomProperties" value=""/> + <stringAttribute key="com.st.stm32cube.ide.mcu.rtosproxy.rtosProxyDriver" value="threadx"/> + <booleanAttribute key="com.st.stm32cube.ide.mcu.rtosproxy.rtosProxyDriverAuto" value="false"/> + <stringAttribute key="com.st.stm32cube.ide.mcu.rtosproxy.rtosProxyDriverPort" value="cortex_m0"/> + <intAttribute key="com.st.stm32cube.ide.mcu.rtosproxy.rtosProxyPort" value="60000"/> <booleanAttribute key="org.eclipse.cdt.debug.gdbjtag.core.doHalt" value="false"/> <booleanAttribute key="org.eclipse.cdt.debug.gdbjtag.core.doReset" value="false"/> <stringAttribute key="org.eclipse.cdt.debug.gdbjtag.core.initCommands" value=""/> <stringAttribute key="org.eclipse.cdt.debug.gdbjtag.core.ipAddress" value="localhost"/> <stringAttribute key="org.eclipse.cdt.debug.gdbjtag.core.jtagDevice" value="ST-LINK (ST-LINK GDB server)"/> + <stringAttribute key="org.eclipse.cdt.debug.gdbjtag.core.jtagDeviceId" value="com.st.stm32cube.ide.mcu.debug.stlink"/> <stringAttribute key="org.eclipse.cdt.debug.gdbjtag.core.pcRegister" value=""/> <intAttribute key="org.eclipse.cdt.debug.gdbjtag.core.portNumber" value="61234"/> <stringAttribute key="org.eclipse.cdt.debug.gdbjtag.core.runCommands" value=""/> @@ -51,23 +63,24 @@ <booleanAttribute key="org.eclipse.cdt.debug.gdbjtag.core.setStopAt" value="true"/> <stringAttribute key="org.eclipse.cdt.debug.gdbjtag.core.stopAt" value="main"/> <stringAttribute key="org.eclipse.cdt.dsf.gdb.DEBUG_NAME" value="arm-none-eabi-gdb"/> - <booleanAttribute key="org.eclipse.cdt.dsf.gdb.NON_STOP" value="true"/> + <booleanAttribute key="org.eclipse.cdt.dsf.gdb.NON_STOP" value="false"/> <booleanAttribute key="org.eclipse.cdt.dsf.gdb.UPDATE_THREADLIST_ON_SUSPEND" value="false"/> <intAttribute key="org.eclipse.cdt.launch.ATTR_BUILD_BEFORE_LAUNCH_ATTR" value="2"/> <stringAttribute key="org.eclipse.cdt.launch.COREFILE_PATH" value=""/> <stringAttribute key="org.eclipse.cdt.launch.DEBUGGER_START_MODE" value="remote"/> <booleanAttribute key="org.eclipse.cdt.launch.DEBUGGER_STOP_AT_MAIN" value="true"/> <stringAttribute key="org.eclipse.cdt.launch.DEBUGGER_STOP_AT_MAIN_SYMBOL" value="main"/> - <stringAttribute key="org.eclipse.cdt.launch.PROGRAM_NAME" value="Debug\plinkybl.elf"/> + <stringAttribute key="org.eclipse.cdt.launch.PROGRAM_NAME" value="Debug/plinkybl.elf"/> <stringAttribute key="org.eclipse.cdt.launch.PROJECT_ATTR" value="plinkybl"/> <booleanAttribute key="org.eclipse.cdt.launch.PROJECT_BUILD_CONFIG_AUTO_ATTR" value="true"/> - <stringAttribute key="org.eclipse.cdt.launch.PROJECT_BUILD_CONFIG_ID_ATTR" value="com.st.stm32cube.ide.mcu.gnu.managedbuild.config.exe.debug.384220978"/> + <stringAttribute key="org.eclipse.cdt.launch.PROJECT_BUILD_CONFIG_ID_ATTR" value=""/> + <booleanAttribute key="org.eclipse.debug.core.ATTR_FORCE_SYSTEM_CONSOLE_ENCODING" value="false"/> <listAttribute key="org.eclipse.debug.core.MAPPED_RESOURCE_PATHS"> <listEntry value="/plinkybl"/> </listAttribute> <listAttribute key="org.eclipse.debug.core.MAPPED_RESOURCE_TYPES"> <listEntry value="4"/> </listAttribute> - <stringAttribute key="org.eclipse.dsf.launch.MEMORY_BLOCKS" value="<?xml version="1.0" encoding="UTF-8" standalone="no"?> <memoryBlockExpressionList context="reserved-for-future-use"> <gdbmemoryBlockExpression address="536903680" label="addr"/> <gdbmemoryBlockExpression address="134217728" label="0x08000000"/> </memoryBlockExpressionList> "/> - <stringAttribute key="process_factory_id" value="org.eclipse.cdt.dsf.gdb.GdbProcessFactory"/> + <stringAttribute key="org.eclipse.dsf.launch.MEMORY_BLOCKS" value="<?xml version="1.0" encoding="UTF-8" standalone="no"?><memoryBlockExpressionList context="reserved-for-future-use"><gdbmemoryBlockExpression address="536903680" label="addr"/><gdbmemoryBlockExpression address="134217728" label="0x08000000"/></memoryBlockExpressionList>"/> + <stringAttribute key="process_factory_id" value="com.st.stm32cube.ide.mcu.debug.launch.HardwareDebugProcessFactory"/> </launchConfiguration> diff --git a/bootloader/plinkybl release.launch b/bootloader/plinkybl release.launch index 0754c08..a64d408 100755 --- a/bootloader/plinkybl release.launch +++ b/bootloader/plinkybl release.launch @@ -5,7 +5,7 @@ <booleanAttribute key="com.st.stm32cube.ide.mcu.debug.launch.enable_swv" value="false"/> <intAttribute key="com.st.stm32cube.ide.mcu.debug.launch.formatVersion" value="2"/> <stringAttribute key="com.st.stm32cube.ide.mcu.debug.launch.ip_address_local" value="localhost"/> -<stringAttribute key="com.st.stm32cube.ide.mcu.debug.launch.loadList" value="{"fItems":[{"fIsFromMainTab":true,"fPath":"Release\\plinkybl.elf","fProjectName":"plinkybl","fPerformBuild":true,"fDownload":true,"fLoadSymbols":true}]}"/> +<stringAttribute key="com.st.stm32cube.ide.mcu.debug.launch.loadList" value="{"fItems":[{"fIsFromMainTab":true,"fPath":"Release/plinkybl.elf","fProjectName":"plinkybl","fPerformBuild":true,"fDownload":true,"fLoadSymbols":true}]}"/> <stringAttribute key="com.st.stm32cube.ide.mcu.debug.launch.override_start_address_mode" value="default"/> <stringAttribute key="com.st.stm32cube.ide.mcu.debug.launch.remoteCommand" value="target remote"/> <booleanAttribute key="com.st.stm32cube.ide.mcu.debug.launch.startServer" value="true"/> @@ -58,7 +58,7 @@ <stringAttribute key="org.eclipse.cdt.launch.DEBUGGER_START_MODE" value="remote"/> <booleanAttribute key="org.eclipse.cdt.launch.DEBUGGER_STOP_AT_MAIN" value="true"/> <stringAttribute key="org.eclipse.cdt.launch.DEBUGGER_STOP_AT_MAIN_SYMBOL" value="main"/> -<stringAttribute key="org.eclipse.cdt.launch.PROGRAM_NAME" value="Release\plinkybl.elf"/> +<stringAttribute key="org.eclipse.cdt.launch.PROGRAM_NAME" value="Release/plinkybl.elf"/> <stringAttribute key="org.eclipse.cdt.launch.PROJECT_ATTR" value="plinkybl"/> <booleanAttribute key="org.eclipse.cdt.launch.PROJECT_BUILD_CONFIG_AUTO_ATTR" value="true"/> <stringAttribute key="org.eclipse.cdt.launch.PROJECT_BUILD_CONFIG_ID_ATTR" value="com.st.stm32cube.ide.mcu.gnu.managedbuild.config.exe.release.1995653609"/> |
