FAQkeil编译报错scatterload_copy

error: L6787U: Region table handler '__scatterload_copy' needed by entry for RW_m_data was not found.
更新时间:2022.04.12 浏览量:0

作为链接时的正常步骤,链接器会测试压缩 RW 初始化数据是否会节省一些代码空间。如果确实如此,则从 Arm 运行时库中提取解压缩例程。在某些特殊情况下,可能会发生这种情况,链接器稍后会更改此决定并且不会压缩该 RW 初始化数据。相反,这些数据应该由库启动代码复制,但是由于之前没有拉入copy函数,所以链接器会报这个错误。

此行为是链接器中的问题,对此的触发器可以是具有大对齐要求的数据对象。

有两种可能的解决方法:

使用链接器选项 --undefined

--undefined=__scatterload_copy

这将手动创建对 Arm 运行时库的复制函数的引用,因此,无论链接器决定压缩还是复制 RW 初始化数据,它都会被拉入。

使用链接器选项 --datacompressor

--datacompressor=off

这将导致链接器不尝试压缩 RW 初始化数据,将复制所有 RW 初始化数据,复制功能将被正确拉入。


  • 上一篇:RT系列程序下载到flash搬运到sdram运行
  • 下一篇:USB AUDIO例程修改枚举参数后,音频设备属性中无法查看高级功能