我目前正在开展一个项目,需要用 RX 系列的新微控制器替换现有的 M16C 系列微控制器。在 M16C 微控制器的旧代码中,我定义了以下内存限定符:
#define CHIPDATA huge
extern byte CHIPDATA Mode4Reg[1];
我的目标是过渡到 RX 系列,同时保留 CHIPDATA 属性的使用。然而,“巨大”的内存限定符并不直接适用于 RX 系列,我需要对其进行适应新环境。
您能否提供有关如何用 RX 系列微控制器的适当等效项替换“巨大”内存限定符的指导?我想在代码中保留 CHIPDATA 的使用。
我已尝试以下方法,但不起作用:
#pragma section = "MyExternalMemorySection"
#define CHIPDATA __root
M16C 对于 13、16 和 20 位寻址具有不同的内存模型。 RX 是 32 位哈佛架构 MCU,相同的内存模型不适用。您很可能不需要对 RX 地址执行任何特殊操作,只需定义并清空宏即可:
#define CHIPDATA
如果您希望能够跨平台构建相同的代码库,那么:
#if defined __M16C__
#define CHIPDATA huge
#else
#define CHIPDATA
#endif
然而,您实际上似乎试图在新平台上将
CHIPDATA
限定符用于不同的目的,这使得这是一个 X-Y 问题。提出一个关于如何定义宏以将特定数据定位到链接器部分的新问题(如果这就是您想要做的)。如果您选择重用现有代码,则可以调用该宏CHIPDATA
。这些方法必然是特定于工具链的,因此您需要指定。这样的宏作为声明的前缀而不是后缀是否有效可能是一个问题。也许无法实现你想要的,但在弄清楚你真正想要什么之前,很难说。