0

这是针对 ADuC ARM (ARM7TDMI) 芯片的……我已经完成了:

char WD_Track __attribute__( ( section( "NoInit"),zero_init) );

并检查了 IRAM2 的 NoInit 复选框......它在启动时仍然被初始化为 0(我不希望这个初始化——我想看看当看门狗咬我时它在做什么)。

我在另一个问题中看到了关于使用的另一篇文章__at__,但我真的应该这样做吗(我不在乎编译器将它放在哪里,只要它不理会它。OTOH,我在闪存中有一个部分使用该__at__位,因为我需要在操作期间擦除该页面)?

4

1 回答 1

1

您还需要告诉链接器将该数据块放入 IRAM2。“NoInit”只是一个节名,您可以提供一个链接器分散文件(您必须从目标对话框禁用使用内存布局)将具有该名称的节放在 IRAM2 中。请参阅http://www.keil.com/support/docs/3480.htm中的示例分散文件(但它使用 IRAM1 作为 UNINIT 区域)。

或者,如果整个 .c 文件是 uninit 数据,那么您可以使用每个文件选项将 .c 文件放入 IRAM2(而不是使用手动分散文件)。

于 2013-11-05T11:10:34.450 回答