你如何阻止MDK-ARM(Keil)初始化变量?

时间:2013-11-04 16:04:20

标签: initialization arm startup keil

这适用于ADuC ARM(ARM7TDMI)芯片...... 我做完了:

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

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

我在另一个问题中看到了另一篇关于使用__at__的帖子,但是我应该真的这样做(我不关心编译器放在哪里,只要它不管它.OTOH,我有一节在闪存中使用__at__位,因为我需要在操作期间擦除该页面?)

1 个答案:

答案 0 :(得分:1)

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

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