【问题标题】:How to initialize the variables in external RAM?如何初始化外部 RAM 中的变量?
【发布时间】:2019-07-29 10:25:08
【问题描述】:
typedef struct test {
       int a;
       int b;
       int c;
}_test;

 __ext_ram__ _test test1 = {0}; // Declared this global variable in external RAM

我们是否需要使用 memset() 在外部 RAM 中对其进行初始化?

memset(&test1, 0, sizeof(_test));

【问题讨论】:

  • C 标准没有“外部内存”的概念。所有这些都是特定于实现的扩展。为了得到答案,您需要在问题本身中指定您正在使用的实现!
  • 什么是__ext_ram__?你如何使用它?你在哪个平台?您使用的是哪个编译器、编译器版本和选项?你的编译器的文档是怎么说的?
  • 外接内存是什么意思!?您将使用什么样的硬件是外接 RAM?

标签: c ram


【解决方案1】:

您的链接器会为您执行此操作。所以首先你定义你的变量(即你的结构)。之后,您声明变量并使用 section 参数将变量放置在给定部分中:

_test __attribute__((section (".ram"))) MyStruct;

现在您必须创建/修改您的链接器脚本以将该部分放入您的 RAM:

MEMORY
{
  ...
  ram_data       (rwx) : ORIGIN = RAM_start_addr, LENGTH = section_length
  ...
}

SECTIONS
{
  ...

  .mySection section_address :
  {
    KEEP(*(.ram)) 
  } > ram_data

  ...
}

编译它,你的数据就会放在 RAM 中。

【讨论】:

  • 或者您可以在链接描述文件中创建一个变量并在 C 代码中将其归零。
猜你喜欢
  • 2022-06-15
  • 1970-01-01
  • 1970-01-01
  • 2021-04-13
  • 1970-01-01
  • 1970-01-01
  • 2012-07-04
  • 2021-03-12
  • 1970-01-01
相关资源
最近更新 更多