Description
Hello, I've recently found a critical issue that prevent a project using cortex-m
version 0.7.0 from being linked (at least on my computer).
Because I'm a newbie in embedded software, to reproduce this issue I downloaded the cortex-m-quickstart
. My conclusion is that the only parameter that allow the example project to build and not mine is the cortex-m
version (0.6.0 works but 0.7.0 don't).
Some more context:
os
Windows 10rustc
1.48.0 (7eac88abb 2020-11-16)target arch
thumbv7em-none-eabihftarget microproc
stm32f303k8
Memory mapping (memory.x
):
MEMORY
{
FLASH : ORIGIN = 0x08000000, LENGTH = 64K
RAM : ORIGIN = 0x20000000, LENGTH = 12K
}
Linker error trace:
warning: Linking globals named 'CORE_PERIPHERALS': symbol multiply defined!
error: failed to load bc of "cortex_m-e7808f4bc8bc3911.cortex_m.a36est71-cgu.0.rcgu.o":
error: aborting due to previous error; 3 warnings emitted
error: could not compile `rust-cortex-m`
Update(s):
- Version
0.6.4
also link correctly.
Maybe an idea:
Can this be caused by the fact that cortex-m-rt
only use cortex-m
version 0.6.*
? Could this cause the two versions to define the symbol? In this case it can be a great addition for beginners to add a warning message explaining that two or more version of cortex-m
can't coexist.