【发布时间】:2018-08-14 11:26:52
【问题描述】:
我正在为 STM32F4 控制器 (Cortex M4) 开发一些软件。 前几天我正在将我的代码移植到一个新的硬件平台,特此在“System Workbench for STM32”IDE 中创建一个新项目。
当我尝试运行新项目时,我发现 memcpy() 导致了 UsageFault,这是由 32 位宽的 Load/Store 访问不均匀的地址引起的。
然后我发现旧的工作代码已经与“-specs=nano”链接,而崩溃的代码没有,所以问题可以很容易地解决。我检查了 memcpy() 的反汇编,发现 Nano 库实际上与标准 (?) libc 的实现有很大不同。
不过,我很困惑!为什么 memcpy() 的实现不支持字节对齐地址?那将是一个相当微不足道的错误。应该还有更多吧?!有人知道吗?
【问题讨论】: