在IAR环境下调试CC2510二疑惑
来源:互联网 发布:sql server 取绝对值 编辑:程序博客网 时间:2024/06/05 08:26
原文地址::http://blog.gkong.com/jili1986729_110437.ashx
相关文章
1、IAR Embedded Workbench 不能调试的问题----http://wenku.baidu.com/link?url=W3b6DxljMLdSC7DvBwattDvNDd32MDzRS8rjaE_4LwxQeg9_lYg4CDVQADTa6POw4zGON7ap1MVcIJaE77ulKipVmLs-YDTyLZ7vXvxs7N3
2、 IAR调试出现The stack plug-in failed to set a breakpoint on "main". ……的解决方法----http://bbs.csdn.net/topics/390393118
3、IAR无法仿真调试解决办法----http://download.csdn.net/detail/bianyuanshuren/7889359
在使用IAR调试CC2510过程中遇到了两个问题:
一、总出现无法编译错误
提示:Fatal Error[Pe005]: could not open source file "string.h"
提示有严重问题:无法打开string.h文件!
用Windows搜索功能搜索到string.h文件,并且拷到项目文件夹内,还是不行。初步判断IAR的编译程序找不到string.h文件,说明路径是不对。按“ALT+F7”进入“Options for node”,点左边的“C/C++ Compiler”,再点右边的标签“Preprocessor”如下图:
问题就出在这里:在Include paths框内包含文件的路径设置不对:
$TOOLKIT_DIR$\INC\
该句话就是指定包含文件的路径;
其中“$TOOLKIT_DIR$ ” 的意思是:包含文件的路径在IAR安装路径的8051文件夹下,对于我的电脑IAR安装在C盘,那么具体就表示它就表示:
$TOOLKIT_DIR$相当于:
C:\Program Files\IAR Systems\Embedded Workbench 4.05 Evaluation version\8051
$TOOLKIT_DIR$\INC\相当于:
C:\Program Files\IAR Systems\Embedded Workbench 4.05 Evaluation version\8051\INC\
可是在INC目录下找不到string.h文件,这就是问题所在。在INC目录下又有两个文件夹:CLIB和DLIB,而string.h文件在CLIB文件夹内;将Include paths框内改为:$TOOLKIT_DIR$\INC\CLIB\;编译又出现错误提示:
Fatal Error[Pe005]: could not open source file "iocc2510.h"
将Include paths框内改为:
$TOOLKIT_DIR$\INC\
$TOOLKIT_DIR$\INC\CLIB\;
编译正常!
另外,$PROJ_DIR$的意思是包含文件指向工程目录的上一级目录中,例如:我们的工程文件为:D: \DESIGN\WIRELESS\CC2510; 那么$PROJ_DIR$就表示:D: \DESIGN\WIRELESS\;了解这些,我们就可灵活配置。
二、指令总是判断错误
看以下程序:
#include <ioCC2510.h>
#define uint unsigned int
#define uchar unsigned char
#define led1 P1_0 //控制红LED
#define led2 P1_1 //控制绿LED
uint TempFlag; //用来标志是否要闪烁
/***************************
//主函数
***************************/
void main()
{
// uint TempFlag; //AA句
while(1)
{
TempFlag = 5; //A句
if(5 == TempFlag) //B句
{
led1 = !led1; //C句
TempFlag = 0;
Delay(600);
}
else
{
Led2 = !led2; //D句
Delay(600);
}
}
}
看以上程序,尽管有A句-- TempFlag = 5,但是B句--if(5 == TempFlag) 判断总是不成立,C句总不执行;将A句--TempFlag = 5改了好多数字都没有改观。若将变量TempFlag定义在AA句处,改为局部变量就正常了;但是其他地方也要用变量TempFlag,所以这样改不行;查看汇编程序,发现if(5 == TempFlag)语句对应的汇编指令用MOVX,也就是变量TempFlag被定义在了外部RAM;可线路板上并未扩展外部RAM;那么TempFlag的数据很可能是0XFF,将A句改为:TempFlag = 0xff,C句就可执行了。可能是IAR设置不合适:按“ALT+F7”进入“Options for node”,点左边的“General Options”,再点右边的标签“Target”,如下图:
可见:Data model栏设置不对,改为:small就正常了。 wbymcs51.blog.bokee.net
通过以上两例,我们可以看出,IAR的环境设置比较重要。在使用IAR或KEIL C时,不能仅仅按有些简单的说明步骤去做,一定要清楚每个设置是在做什么,为什么要这样做,才会心中有数。我们觉得徐爱钧老师的两本书讲的比较详细:《单片机高级语言C51 Windows 环境编程与应用 》和《IAR EWARM嵌入式系统编程与实践 》,讲到了编译、汇编和连接的相关命令。其实,以上界面的每个设置都对应增减一条命令代码或在某个命令中增减一个参数项,通过界面设置和命令代码对比,就会知其然,更知其所以然。
- 在IAR环境下调试CC2510二疑惑
- IAR 环境下基于JLINK在RAM中调试STM32
- 在IAR环境中使用TKScope调试S5PV210(Cortex-A8)
- 嵌入式调试方式(IAR 环境)
- TI z-stack 在IAR环境下的错误处理
- IAR环境下ucosii在STM32上的移植
- IAR环境下中断控制
- IAR调试S3C6410的笔记(二)
- 在linux环境下配置thinkphp3.2.3框架运行环境的一些疑惑杂谈
- IAR下uCOS调试任务name为"?"
- 在IAR环境下,lpc2478 用户程序的地址及中断向量设置
- 在IAR环境下,lpc2478 用户程序的地址及中断向量设置
- 在iar环境下,把一个普通的stm32工程上移植入ucosii
- static __inline 在IAR和keil开发环境下的差别
- MIMXRT1050-EVK开发板在IAR环境下的下载问题
- IAR 调试
- IAR环境下中断函数无反应
- IAR环境下中断函数无反应
- linux shell if 参数
- 商务打印将迈入智能化时代------点评惠普M277dw
- 【持久化框架】SpringMVC+Spring4+Mybatis3集成,开发简单Web项目+源码下载
- jsp动作总结
- AX EXCEL
- 在IAR环境下调试CC2510二疑惑
- HttpClient使用详解
- getDimension,getDimensionPixelOffset和getDimensionPixelSize
- [前端] H5 drag drop 拖动
- 软件测试-白盒&灰盒篇
- div text圆角
- 学习笔记-利用反射拿到隐藏的方法
- 容器
- eclipse下gradle配置