Skip to content

Commit b80c082

Browse files
cumin777claude
andcommitted
xiao: remove UF2 upload integration, default USB CDC on
Per review feedback, drop the UF2 boot upload references until the uf2upload tooling is merged separately (Arduino_Tools#122, #3061): remove upload.tool=uf2upload and the upload.uf2.* keys, add the standard SWD/J-Link upload_method menu, and drop the 1200-bps CDC touch hook plus the SRAM handoff word reservation it required (RAM len back to plain LD_MAX_DATA_SIZE). Move the xserial/usb/opt/dbg/rtlib menu entries to their dedicated bottom sections as done for other boards, and put CDC first in the USB menu so factory-default builds expose the USB serial port. The onboard TinyUF2 bootloader itself is unaffected: flash_offset stays 0x8000 and double-tap RESET drag-drop flashing keeps working. Co-Authored-By: Claude <noreply@anthropic.com>
1 parent ffc24a9 commit b80c082

3 files changed

Lines changed: 50 additions & 75 deletions

File tree

‎boards.txt‎

Lines changed: 49 additions & 55 deletions
Original file line numberDiff line numberDiff line change
@@ -2485,10 +2485,9 @@ GenC0.menu.upload_method.OpenOCDDapLink.debug.server.openocd.scripts.1={runtime.
24852485
################################################################################
24862486
# Seeed XIAO STM32C5
24872487
# Docs: url=https://www.seeedstudio.com/
2488-
XIAO_STM32C5.name=Seeed Studio
2488+
XIAO_STM32C5.name=Seeed Studio XIAO STM32C5
24892489

24902490
XIAO_STM32C5.build.core=arduino
2491-
XIAO_STM32C5.build.family=SEEED_STUDIO
24922491
XIAO_STM32C5.build.board=XIAO_STM32C5
24932492
XIAO_STM32C5.build.variant=STM32C5xx/C593C(E-G)(T-U)_C5A3CG(T-U)
24942493
XIAO_STM32C5.build.variant_h=variant_XIAO_STM32C5.h
@@ -2503,12 +2502,6 @@ XIAO_STM32C5.build.hal=-DUSE_HALV2_DRIVER
25032502
XIAO_STM32C5.build.flash_offset=0x8000
25042503
XIAO_STM32C5.upload.maximum_size=1015808
25052504
XIAO_STM32C5.upload.maximum_data_size=262144
2506-
XIAO_STM32C5.upload.tool=uf2upload
2507-
XIAO_STM32C5.upload.protocol=serial
2508-
XIAO_STM32C5.upload.uf2.volume=XIAOC5BOOT
2509-
XIAO_STM32C5.upload.uf2.address=0x08008000
2510-
XIAO_STM32C5.upload.uf2.family=0x00C5C5C5
2511-
XIAO_STM32C5.upload.uf2.timeout=10000
25122505
XIAO_STM32C5.debug.svd_file={runtime.tools.STM32_SVD.path}/svd/STM32C5xx/STM32C5A3.svd
25132506
XIAO_STM32C5.vid.0=0x2886
25142507
XIAO_STM32C5.pid.0=0x80C5
@@ -2526,54 +2519,16 @@ XIAO_STM32C5.menu.pnum.XIAO_STM32C5.upload.maximum_size=1015808
25262519
XIAO_STM32C5.menu.pnum.XIAO_STM32C5.upload.maximum_data_size=262144
25272520
XIAO_STM32C5.menu.pnum.XIAO_STM32C5.debug.svd_file={runtime.tools.STM32_SVD.path}/svd/STM32C5xx/STM32C5A3.svd
25282521

2529-
# U(S)ART support
2530-
XIAO_STM32C5.menu.xserial.generic=Enabled (generic 'Serial')
2531-
XIAO_STM32C5.menu.xserial.none=Enabled (no generic 'Serial')
2532-
XIAO_STM32C5.menu.xserial.none.build.xSerial=-DHAL_UART_MODULE_ENABLED -DHWSERIAL_NONE
2533-
XIAO_STM32C5.menu.xserial.disabled=Disabled (no Serial support)
2534-
XIAO_STM32C5.menu.xserial.disabled.build.xSerial=
2535-
2536-
# USB connectivity
2537-
XIAO_STM32C5.menu.usb.none=None
2538-
XIAO_STM32C5.menu.usb.CDCgen=CDC (generic 'Serial' supersede U(S)ART)
2539-
XIAO_STM32C5.menu.usb.CDCgen.build.enable_usb={build.usb_flags} -DUSBD_USE_CDC
2540-
XIAO_STM32C5.menu.usb.CDC=CDC (no generic 'Serial')
2541-
XIAO_STM32C5.menu.usb.CDC.build.enable_usb={build.usb_flags} -DUSBD_USE_CDC -DDISABLE_GENERIC_SERIALUSB
2542-
2543-
# Optimize
2544-
XIAO_STM32C5.menu.opt.osstd=Smallest (-Os default)
2545-
XIAO_STM32C5.menu.opt.oslto=Smallest (-Os) with LTO
2546-
XIAO_STM32C5.menu.opt.oslto.build.flags.optimize=-Os -flto
2547-
XIAO_STM32C5.menu.opt.o1std=Fast (-O1)
2548-
XIAO_STM32C5.menu.opt.o1std.build.flags.optimize=-O1
2549-
XIAO_STM32C5.menu.opt.o1lto=Fast (-O1) with LTO
2550-
XIAO_STM32C5.menu.opt.o1lto.build.flags.optimize=-O1 -flto
2551-
XIAO_STM32C5.menu.opt.o2std=Faster (-O2)
2552-
XIAO_STM32C5.menu.opt.o2std.build.flags.optimize=-O2
2553-
XIAO_STM32C5.menu.opt.o2lto=Faster (-O2) with LTO
2554-
XIAO_STM32C5.menu.opt.o2lto.build.flags.optimize=-O2 -flto
2555-
XIAO_STM32C5.menu.opt.o3std=Fastest (-O3)
2556-
XIAO_STM32C5.menu.opt.o3std.build.flags.optimize=-O3
2557-
XIAO_STM32C5.menu.opt.o3lto=Fastest (-O3) with LTO
2558-
XIAO_STM32C5.menu.opt.o3lto.build.flags.optimize=-O3 -flto
2559-
XIAO_STM32C5.menu.opt.ogstd=Debug (-Og)
2560-
XIAO_STM32C5.menu.opt.ogstd.build.flags.optimize=-Og
2522+
# Upload menu
2523+
XIAO_STM32C5.menu.upload_method.swdMethod=STM32CubeProgrammer (SWD)
2524+
XIAO_STM32C5.menu.upload_method.swdMethod.upload.protocol=swd
2525+
XIAO_STM32C5.menu.upload_method.swdMethod.upload.options=-a {upload.address} -m {upload.mode} -s {upload.start} -f {upload.freq} -n {upload.stlink_sn}
2526+
XIAO_STM32C5.menu.upload_method.swdMethod.upload.tool=stm32CubeProg
25612527

2562-
# Debug information
2563-
XIAO_STM32C5.menu.dbg.none=None
2564-
XIAO_STM32C5.menu.dbg.enable=Symbols Enabled (-g)
2565-
XIAO_STM32C5.menu.dbg.enable.build.flags.debug=-g
2566-
2567-
# C Runtime Library
2568-
XIAO_STM32C5.menu.rtlib.nano=Newlib Nano (default)
2569-
XIAO_STM32C5.menu.rtlib.nanofp=Newlib Nano + Float Printf
2570-
XIAO_STM32C5.menu.rtlib.nanofp.build.flags.ldspecs=--specs=nano.specs -u _printf_float
2571-
XIAO_STM32C5.menu.rtlib.nanofs=Newlib Nano + Float Scanf
2572-
XIAO_STM32C5.menu.rtlib.nanofs.build.flags.ldspecs=--specs=nano.specs -u _scanf_float
2573-
XIAO_STM32C5.menu.rtlib.nanofps=Newlib Nano + Float Printf/Scanf
2574-
XIAO_STM32C5.menu.rtlib.nanofps.build.flags.ldspecs=--specs=nano.specs -u _printf_float -u _scanf_float
2575-
XIAO_STM32C5.menu.rtlib.full=Newlib Standard
2576-
XIAO_STM32C5.menu.rtlib.full.build.flags.ldspecs=
2528+
XIAO_STM32C5.menu.upload_method.jlinkMethod=STM32CubeProgrammer (J-Link)
2529+
XIAO_STM32C5.menu.upload_method.jlinkMethod.upload.protocol=jlink
2530+
XIAO_STM32C5.menu.upload_method.jlinkMethod.upload.options=-a {upload.address} -s {upload.start}
2531+
XIAO_STM32C5.menu.upload_method.jlinkMethod.upload.tool=stm32CubeProg
25772532

25782533
################################################################################
25792534
# Generic C5
@@ -17374,6 +17329,11 @@ GenC0.menu.xserial.none.build.xSerial=-DHAL_UART_MODULE_ENABLED -DHWSERIAL_NONE
1737417329
GenC0.menu.xserial.disabled=Disabled (no Serial support)
1737517330
GenC0.menu.xserial.disabled.build.xSerial=
1737617331

17332+
XIAO_STM32C5.menu.xserial.generic=Enabled (generic 'Serial')
17333+
XIAO_STM32C5.menu.xserial.none=Enabled (no generic 'Serial')
17334+
XIAO_STM32C5.menu.xserial.none.build.xSerial=-DHAL_UART_MODULE_ENABLED -DHWSERIAL_NONE
17335+
XIAO_STM32C5.menu.xserial.disabled=Disabled (no Serial support)
17336+
XIAO_STM32C5.menu.xserial.disabled.build.xSerial=
1737717337
GenC5.menu.xserial.generic=Enabled (generic 'Serial')
1737817338
GenC5.menu.xserial.none=Enabled (no generic 'Serial')
1737917339
GenC5.menu.xserial.none.build.xSerial=-DHAL_UART_MODULE_ENABLED -DHWSERIAL_NONE
@@ -17663,6 +17623,11 @@ GenC0.menu.usb.CDC.build.enable_usb={build.usb_flags} -DUSBD_USE_CDC -DDISABLE_G
1766317623
GenC0.menu.usb.HID=HID (keyboard and mouse)
1766417624
GenC0.menu.usb.HID.build.enable_usb={build.usb_flags} -DUSBD_USE_HID_COMPOSITE
1766517625

17626+
XIAO_STM32C5.menu.usb.CDCgen=CDC (generic 'Serial' supersede U(S)ART)
17627+
XIAO_STM32C5.menu.usb.CDCgen.build.enable_usb={build.usb_flags} -DUSBD_USE_CDC
17628+
XIAO_STM32C5.menu.usb.none=None
17629+
XIAO_STM32C5.menu.usb.CDC=CDC (no generic 'Serial')
17630+
XIAO_STM32C5.menu.usb.CDC.build.enable_usb={build.usb_flags} -DUSBD_USE_CDC -DDISABLE_GENERIC_SERIALUSB
1766617631
GenC5.menu.usb.none=None
1766717632
GenC5.menu.usb.CDCgen=CDC (generic 'Serial' supersede U(S)ART)
1766817633
GenC5.menu.usb.CDCgen.build.enable_usb={build.usb_flags} -DUSBD_USE_CDC
@@ -18122,6 +18087,23 @@ GenC0.menu.opt.o3lto.build.flags.optimize=-O3 -flto
1812218087
GenC0.menu.opt.ogstd=Debug (-Og)
1812318088
GenC0.menu.opt.ogstd.build.flags.optimize=-Og
1812418089

18090+
XIAO_STM32C5.menu.opt.osstd=Smallest (-Os default)
18091+
XIAO_STM32C5.menu.opt.oslto=Smallest (-Os) with LTO
18092+
XIAO_STM32C5.menu.opt.oslto.build.flags.optimize=-Os -flto
18093+
XIAO_STM32C5.menu.opt.o1std=Fast (-O1)
18094+
XIAO_STM32C5.menu.opt.o1std.build.flags.optimize=-O1
18095+
XIAO_STM32C5.menu.opt.o1lto=Fast (-O1) with LTO
18096+
XIAO_STM32C5.menu.opt.o1lto.build.flags.optimize=-O1 -flto
18097+
XIAO_STM32C5.menu.opt.o2std=Faster (-O2)
18098+
XIAO_STM32C5.menu.opt.o2std.build.flags.optimize=-O2
18099+
XIAO_STM32C5.menu.opt.o2lto=Faster (-O2) with LTO
18100+
XIAO_STM32C5.menu.opt.o2lto.build.flags.optimize=-O2 -flto
18101+
XIAO_STM32C5.menu.opt.o3std=Fastest (-O3)
18102+
XIAO_STM32C5.menu.opt.o3std.build.flags.optimize=-O3
18103+
XIAO_STM32C5.menu.opt.o3lto=Fastest (-O3) with LTO
18104+
XIAO_STM32C5.menu.opt.o3lto.build.flags.optimize=-O3 -flto
18105+
XIAO_STM32C5.menu.opt.ogstd=Debug (-Og)
18106+
XIAO_STM32C5.menu.opt.ogstd.build.flags.optimize=-Og
1812518107
GenC5.menu.opt.osstd=Smallest (-Os default)
1812618108
GenC5.menu.opt.oslto=Smallest (-Os) with LTO
1812718109
GenC5.menu.opt.oslto.build.flags.optimize=-Os -flto
@@ -18897,6 +18879,9 @@ GenC0.menu.dbg.none=None
1889718879
GenC0.menu.dbg.enable=Symbols Enabled (-g)
1889818880
GenC0.menu.dbg.enable.build.flags.debug=-g
1889918881

18882+
XIAO_STM32C5.menu.dbg.none=None
18883+
XIAO_STM32C5.menu.dbg.enable=Symbols Enabled (-g)
18884+
XIAO_STM32C5.menu.dbg.enable.build.flags.debug=-g
1890018885
GenC5.menu.dbg.none=None
1890118886
GenC5.menu.dbg.enable=Symbols Enabled (-g)
1890218887
GenC5.menu.dbg.enable.build.flags.debug=-g
@@ -19252,6 +19237,15 @@ GenC0.menu.rtlib.nanofps.build.flags.ldspecs=--specs=nano.specs -u _printf_float
1925219237
GenC0.menu.rtlib.full=Newlib Standard
1925319238
GenC0.menu.rtlib.full.build.flags.ldspecs=
1925419239

19240+
XIAO_STM32C5.menu.rtlib.nano=Newlib Nano (default)
19241+
XIAO_STM32C5.menu.rtlib.nanofp=Newlib Nano + Float Printf
19242+
XIAO_STM32C5.menu.rtlib.nanofp.build.flags.ldspecs=--specs=nano.specs -u _printf_float
19243+
XIAO_STM32C5.menu.rtlib.nanofs=Newlib Nano + Float Scanf
19244+
XIAO_STM32C5.menu.rtlib.nanofs.build.flags.ldspecs=--specs=nano.specs -u _scanf_float
19245+
XIAO_STM32C5.menu.rtlib.nanofps=Newlib Nano + Float Printf/Scanf
19246+
XIAO_STM32C5.menu.rtlib.nanofps.build.flags.ldspecs=--specs=nano.specs -u _printf_float -u _scanf_float
19247+
XIAO_STM32C5.menu.rtlib.full=Newlib Standard
19248+
XIAO_STM32C5.menu.rtlib.full.build.flags.ldspecs=
1925519249
GenC5.menu.rtlib.nano=Newlib Nano (default)
1925619250
GenC5.menu.rtlib.nanofp=Newlib Nano + Float Printf
1925719251
GenC5.menu.rtlib.nanofp.build.flags.ldspecs=--specs=nano.specs -u _printf_float

‎variants/STM32C5xx/C593C(E-G)(T-U)_C5A3CG(T-U)/ldscript_XIAO_STM32C5.ld‎

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -13,8 +13,7 @@ STACK_SIZE = 0x2000;
1313
MEMORY
1414
{
1515
ROM (rx) : org = 0x08000000 + LD_FLASH_OFFSET, len = LD_MAX_SIZE - LD_FLASH_OFFSET
16-
/* TinyUF2 uses the final SRAM word for the 1200-bps reset handoff. */
17-
RAM (xrw) : org = 0x20000000, len = LD_MAX_DATA_SIZE - 4
16+
RAM (xrw) : org = 0x20000000, len = LD_MAX_DATA_SIZE
1817
}
1918

2019
SECTIONS

‎variants/STM32C5xx/C593C(E-G)(T-U)_C5A3CG(T-U)/variant_XIAO_STM32C5.cpp‎

Lines changed: 0 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -41,24 +41,6 @@ const pin_size_t analogInputPin[] = {
4141
D3
4242
};
4343

44-
/* TinyUF2 C5 (d52adcf) reserves the last SRAM word for the double-tap
45-
* handoff. The matching application linker script excludes this word from
46-
* the stack/heap RAM region. */
47-
static constexpr uintptr_t TINYUF2_HANDOFF_ADDRESS = 0x2003FFFCUL;
48-
static constexpr uint32_t TINYUF2_ENTER_DFU_MAGIC = 0xF01669EFUL;
49-
50-
extern "C" void CDC_LineCodingChanged(uint32_t bitrate)
51-
{
52-
if (bitrate == 1200U) {
53-
*reinterpret_cast<volatile uint32_t *>(TINYUF2_HANDOFF_ADDRESS) = TINYUF2_ENTER_DFU_MAGIC;
54-
__DSB();
55-
__ISB();
56-
NVIC_SystemReset();
57-
while (true) {
58-
}
59-
}
60-
}
61-
6244
extern "C" void SystemClock_Config(void)
6345
{
6446
if (HAL_RCC_HSE_Enable(HAL_RCC_HSE_ON) != HAL_OK) {

0 commit comments

Comments
 (0)