当前位置:首页 > 工业控制 > 电子设计自动化
[导读]因ICD2是在线仿真,所以会占用部分芯片资源。但编译器的链接文件不够聪明,不知道哪些资源会被ICD2占用,有可能链接器分配的ROM和RAM空间恰巧是被ICD2占用的,会引起用户程序和ICD2的调试程序发生冲突,通常表现为调

因ICD2是在线仿真,所以会占用部分芯片资源。但编译器的链接文件不够聪明,不知道哪些资源会被ICD2占用,有可能链接器分配的ROM和RAM空间恰巧是被ICD2占用的,会引起用户程序和ICD2的调试程序发生冲突,通常表现为调试运行时程序会莫名其妙的复位,从而浪费大家的调试时间。那么如何让链接器知道哪些空间不分配给用户程序,而保留给ICD2呢?

下面是针对PICC,PICC18,MCC18,C30几个PIC开发中常见C编译器,基于MPLABIDE集成开发环境中给出的解决办法:

1.HITECHC+ICD2.

PICC和PICC18的设置一样,通过设置编译选项来实现。
编译程序前,在MPLABIDE中的PROJECT菜单下,按如下操作PROJECT->BUILDOPTIONS->PROJECT->PICCGlobal在PICCGlobal选项卡中选择"compileforICD",确定后就可以编译程序。

2.MCC18+ICD2

和PICC不一样,在MCC18下是选择合适的linkerscripts文件来实现,对于每个PIC18Fxxxx型号,在C:mcc18lkr文件夹,都有两个链接脚本文件,例如PIC18F452,分别是18f452.lkr和18f452i.lkr.

如果您要使用ICD2调试,请选用带i的链接文件编译.

如果打开18f452i.lkr,会看到代码区和数据区分别有:

“CODEPAGENAME=debugSTART=0x7DC0END=0x7FFFPROTECTED”

“DATABANKNAME=dbgsprSTART=0x5F4END=0x5FFPROTECTED”

这部分空间都是会被ICD2占用的,所以“PROTECTED”,不分配给用户程序。

3.C30+ICD2

C30是通过设置编译选项实现。

操作如下:MPLABIDE->PROJECT->BUILDOPTIONS->PROJECT->MPLABLINK30,选中“LinkforICD2”确定即可。

对于dsPIC和PIC24系列来说RAM区0800h-0822h是为ICD2保留的,如果编译时没有选择“linkforICD2”,全局变量很有可能分配到800h-822h间.这也是为什么可以在watch窗口看到全局变量的地址,但在值那栏却显示“reservedmemory”的原因之一。


来源:ks990次

本站声明: 本文章由作者或相关机构授权发布,目的在于传递更多信息,并不代表本站赞同其观点,本站亦不保证或承诺内容真实性等。需要转载请联系该专栏作者,如若文章内容侵犯您的权益,请及时联系本站删除。
换一批
延伸阅读

MIKROE增加了图形功能,CLANG支持ARM和RISC-V以及许多其他功能

关键字: 编译器 RISC-V架构 工业自动化

IAR Embedded Workbench for Arm已全面支持恩智浦最新的S32系列,可加速软件定义汽车的车身和舒适性应用的开发

关键字: 电机控制 电动汽车 编译器

这款新编译器专为dsPIC®数字信号控制器 (DSC)优化设计,可为实时应用定制许可选项

关键字: 编译器 数字信号控制器 自动驾驶

C语言编译器是一种用于将C语言源代码转换为可执行程序的软件工具。它的主要功能是将C语言代码翻译成机器语言,以便计算机能够理解和执行。C语言编译器通常包括预处理器、编译器、汇编器和链接器等多个组件,它们协同工作以完成编译过...

关键字: C语言 编译器 Microsoft Visual C++

仿真的概念其实使用非常广,最终的含义就是使用可控的手段来模仿真实的情况。在嵌入式系统的设计中,仿真应用的范围主要集中在对程序的仿真上。

关键字: 单片机 仿真器 程序

IAR Embedded Workbench 9.40版本引入了与指针验证和分支目标识别(PACBTI)扩展的无缝兼容性,保护嵌入式应用程序免受各种安全攻击。

关键字: 代码 嵌入式应用程序 编译器

在过去数十年,摩尔定律一直支配着半导体的发展。随着MCU的性能越来越强,嵌入式产品也越来越智能,嵌入式软件也变得越来越复杂。编译器作为嵌入式软件开发的基础工具,将程序员编写的源代码转换为底层硬件可以执行的机器指令。一款优...

关键字: 摩尔定律 嵌入式 软件开发 编译器

Python的创始人是一位荷兰籍的程序员——吉多·范罗苏姆(Guido van Rossum),江湖外号“龟叔”。据说这个外号是由于Guido的开头与龟的拼音gui相同得来的,所以Guido也被程序员们戏称为“龟叔”。在...

关键字: Python 编译器 人工智能

步进电动机是将电脉冲激励信号转换成相应的角位移或线位移的离散值控制电动机,这种电动机每当输入一个电脉冲就动一步,所以又称脉冲电动机。

关键字: 步进电机 正反转 程序

KeilμVision4是Keil软件公司为8051系列微控制器及其兼容产品设计的集成式软件开发环境。μVision4集成了C51编译器和A51汇编器,其界面类似于Microsoft VS,支持C语言和汇编语言程序的编写...

关键字: 程序 编译 链接
关闭
关闭