IAR问题总结(持续更新)

这个帖子持续更新。

一、inline问题

Error[e46]: Undefined external "key_mode_get_key_value" referred in key (xxxx.r87 ) 

用了一个inline函数,结果提示这个,通过查阅资料问题如下:

inline或者#pragma inline建议编译器对紧随其后的函数进行inline处理

#pragma inline = forced 强制编译器对紧随其后的函数进行inline处理

 

同时这个还和编译器的优先级有关系:

也就是说用了inline,在低优先级下,编译器不一定就把函数作为inline处理。

 

补充说明:register修饰变量也只是一种建议。

 

二、调试时候提示:Another EXEC is already running.

IAR for RL78 V1.3用E1调式时候提示这个:

 

插拔E1不行,板子重新上下电也不行,最后把IAR重启搞定。

 

三、判断是Debug模式还是Release

NDEBUG
Description This preprocessor symbol determines whether any assert macros you have written in
your application shall be included or not in the built application.
If this symbol is not defined, all assert macros are evaluated. If the symbol is defined,
all assert macros are excluded from the compilation. In other words, if the symbol is:
● defined, the assert code will not be included
● not defined, the assert code will be included
This means that if you write any assert code and build your application, you should
define this symbol to exclude the assert code from the final application.

由上文可知:

NDEBUG  如果定义了,为Release模式,如果没有定义则为debug模式。

 

四、位域赋值问题
位域赋值时候,是按着从bit0开始对齐到位域宽度:
struct {
uint16_ttBit0   :1;
uint16_t        :7;
uint16_t        :8;
}bit16_t;


uint8_t chTemp;
chTemp          = 0x01;
bit16_t.tBit0   = chTemp;
则赋值后:bit16_t.tBit0为1;

chTemp          = 0xFE;
bit16_t.tBit0   = chTemp;
则赋值后:bit16_t.tBit0为0;



五、BOOL类型变量赋值
bool类型变量赋值,是按着右边的真假值赋值:
uint8_tchTemp;
boolbTemp;

chTemp = 0x00;
bTemp = chTemp;
则bTemp为false;

chTemp = 0xFE;
bTemp = chTemp;
则bTemp为true;
(以chTemp的真假决定)

 

六、IAR for RL78 模拟软件复位功能

由于RL78芯片没有软件复位功能,但是可以通过复位选项模拟软件复位。

复位源:

有手册可知,当执行非法指令0xFF时候就可以产生复位。

有两种方法,把变量赋值为0xFF,强制转换为函数指针或者(*((void(*)())(0xFFFFFFFF)))();。

或者用汇编指令:asm("db 0xFF");

 

我用第二种方法,测试可用。

 

七、union的0占位符问题

我一直以为位域中的0宽度占位符是不跨字节的,因此我定义了下面一个结构体:

debug发现,当给tSelectLocdorLed赋值的时候,tSlectItem值并没有改变,

因此我想是不是0占位符把后面的bits全占了。因此把所有的0都修改为本子节

实际未使用数,再debug发现正常了,我查了半天C99,也么有找到相关说明,

回头找到了,再发上来。

八、自动获得工程路径和安装路径

程序配置时候,可以把和工程相关的配置为相对路径,如:$PROJ_DIR$\linker\lnkr5f100fe.xcl

                          可以把和工具相关的配置为相对路径,如:$TOOLKIT_DIR$\LIB\

 

 

 

此注册机支持的软件如下:(2010年6月15日最新版) PartA: IAR Embedded Workbench For MSC-51 v7.51A IAR Embedded Workbench For Atmel AVR v5.50 IAR Embedded Workbench For Atmel AVR32 v3.30 IAR Embedded Workbench For ARM v5.50 IAR Embedded Workbench For Renesas M16C and R8C v3.40 IAR Embedded Workbench For NEC 78K v4.62 IAR Embedded Workbench For MSP430 v5.10 IAR Embedded Workbench For Samsung SAM8 v3.10A IAR Embedded Workbench For Renesas H8 v2.20A IAR Embedded Workbench For Dallas Semiconductor/Maxim MAXQ v2.10A (新版本请使用PartB) IAR Embedded Workbench For CR16C v2.11A (新版本请使用PartB) IAR Embedded Workbench For NEC V850 v3.30A (新版本请使用PartB) IAR Embedded Workbench For Renesas M32C v3.20A (新版本请使用PartB) PartB: IAR Embedded Workbench For Dallas Semiconductor/Maxim MAXQ v2.20 IAR Embedded Workbench For NEC V850 v3.71 IAR Embedded Workbench For Renesas M32C v3.21A IAR Embedded Workbench For CR16C v2.20 IAR Embedded Workbench For Renesas R32C v1.31 IAR Embedded Workbench For Microchip PIC18 v3.10A IAR Embedded Workbench For Microchip dsPIC v1.40A IAR Embedded Workbench For Renesas RX v2.10 PartC: IAR Embedded Workbench For ColdFire v1.22 IAR Embedded Workbench For HCS12 v3.20 IAR Embedded Workbench For HCS08 v1.10 IAR Embedded Workbench For STM8 v1.10 IAR Embedded Workbench For Renesas SuperH v2.10 截止2010年06月15日,IAR官网上23款软件,只剩“Embedded Workbench for MK5 v1.25A”无法完成注册 另外说明下,此注册机针对的是IAR官网上下载的EV版(评估板),至于从其他渠道获得的CD版或者FULL版的软件,没有测试。 ---------------------------------------www.shddz.com.cn--------------------------------------------------- 版本更新说明: ---------------------------------------------------------------------------------------------------------- 20100615版: 更新 IAR Embedded Workbench For Renesas RX v2.10 ---------------------------------------------------------------------------------------------------------- 20100430版: 更新 IAR Embedded Workbench For Atmel AVR v5.50 更新 IAR Embedded Workbench For Renesas R32C v1.31 -----------------------------------------
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值