您好,我需要在 DRAM 中的绝对地址中创建变量。
我使用了一种肮脏的方法来做到这一点。
sections.ld
代码:
全选
config :
{
. = ALIGN(4);
KEEP (*(.config))
} > CONFIG
tracks :
{
. = ALIGN(4);
KEEP (*(.tracks))
} > TRACKS
内存.ld
代码:
全选
CONFIG (RW) : org = 0x3FCC0000, len = 0x4000
TRACKS (RW) : org = 0x3FCC4000, len = 0x4000
在 C 代码中
代码:
全选
static const volatile LoggerConfig g_savedLoggerConfig __attribute__((section(".config
#")));
顺便说一下,我的项目是一个自定义的 Cmake 项目。
当我更改 CMakeLists 文件时, memory.ld 和部分.ld 文件更改。
而且我不确定我是否真的分配了这些空间。
任何任务都不应该在这些字段中自动生成数据。
我之所以这样说是因为当我更改我认为已分配的区域中的数据时,wifi 任务被破坏了。
当我在 DRAM 的另一个区域分配数据时,问题已解决。
这对我来说是一个奇怪的情况,
现在问我的问题:
如何在 DRAM 的特定字段中干净地创建变量?