Thanks for the tip!
I went back to the linker script and added *libg.a:*lib_a-mem*.o to the EXCLUDE_FILES and it's living in RAM now as expected, and everything works as expected.
However while I was in there I saw this:
Which implies to me that the SDK devs intended to place memcpy et al in RAM always. But the default directive excludes libc mem funcs instead of libg, where mine seem to have been. Any idea if this something worth reporting or just some sort of environmental quirk on my part?
I went back to the linker script and added *libg.a:*lib_a-mem*.o to the EXCLUDE_FILES and it's living in RAM now as expected, and everything works as expected.
However while I was in there I saw this:
Code:
/* bit of a hack right now to exclude all floating point and time critical (e.g. memset, memcpy) code from * FLASH ... we will include any thing excluded here in .data below by default */*(.init)*libgcc.a:cmse_nonsecure_call.o*(EXCLUDE_FILE(*libgcc.a: *libc.a:*lib_a-mem*.o *libm.a:) .text*)Statistics: Posted by waveshaper — Mon Feb 23, 2026 11:02 pm