IAR Embedded Workbench - 设置变量的endian-ness

时间:2010-05-31 13:17:12

标签: c embedded arm endianness iar

我正在使用IAR Embedded Workbench for ARM(ARM7TDMI-S),我的大部分工作都是使用little-endian格式完成的。但是,我在手册中看到我可以做类似的事情:

__big_endian int i, j;

将这两个变量声明为大端(而应用程序的其余部分为小端)。这似乎是一个很棒的功能,但是当我尝试编译时,我总是得到错误的错误:

Error[Pa002]: the type attribute "__big_endian" is not allowed on this declaration.

上面的大端线直接从手册中复制,但不起作用。这是编译器的一个很棒的功能,可以让生活变得更轻松。任何想法如何让它运作?

我在IDE选项的C / C ++编译器选项选项卡上将我的语言一致性设置为'允许IAR扩展'。

2 个答案:

答案 0 :(得分:5)

来自IAR的文档:

  

编译ARMv6或更高版本时,__big_endian关键字可用。

ARMv6添加了SETEND指令,该指令操作状态位以配置处理器在执行加载/存储操作时将使用哪个字节序。看起来IAR的__big_endian内在函数只会导致处理器在访问用该属性标记的变量时操作该位。

ARM7TDMI是ARMv4(或ARMv5)架构设备(如果我没记错的话)。

答案 1 :(得分:1)

这是IAR编译器中的扩展功能,因此必须通过使用命令行的-e选项或在IDE的编译器选项页面中启用IAR扩展来启用。此关键字与--strict_ansi编译器选项不兼容。