使用C編譯器+ICD2調(diào)試程序需要注意的問(wèn)題
發(fā)布時(shí)間:2008/5/28 0:00:00 訪問(wèn)次數(shù):1392
因icd2是在線仿真,所以會(huì)占用部分芯片資源。但編譯器的鏈接文件不夠聰明,不知道哪些資源會(huì)被icd2占用,有可能鏈接器分配的rom和ram空間恰巧是被icd2占用的,會(huì)引起用戶程序和icd2的調(diào)試程序發(fā)生沖突,通常表現(xiàn)為調(diào)試運(yùn)行時(shí)程序會(huì)莫名其妙的復(fù)位,從而浪費(fèi)大家的調(diào)試時(shí)間。那么如何讓鏈接器知道哪些空間不分配給用戶程序,而保留給icd2呢?
下面是針對(duì)picc,picc18,mcc18,c30幾個(gè)pic開(kāi)發(fā)中常見(jiàn)c編譯器,基于mplabide集成開(kāi)發(fā)環(huán)境中給出的解決辦法:
1.hitechc+icd2.
picc和picc18的設(shè)置一樣,通過(guò)設(shè)置編譯選項(xiàng)來(lái)實(shí)現(xiàn)。
編譯程序前,在mplabide中的project菜單下,按如下操作project->buildoptions->project->piccglobal在piccglobal選項(xiàng)卡中選擇"compileforicd",確定后就可以編譯程序。
2.mcc18+icd2
和picc不一樣,在mcc18下是選擇合適的linkerscripts文件來(lái)實(shí)現(xiàn),對(duì)于每個(gè)pic18fxxxx型號(hào),在c:\mcc18\lkr文件夾,都有兩個(gè)鏈接腳本文件,例如pic18f452,分別是18f452.lkr和18f452i.lkr.
如果您要使用icd2調(diào)試,請(qǐng)選用帶i的鏈接文件編譯.
如果打開(kāi)18f452i.lkr,會(huì)看到代碼區(qū)和數(shù)據(jù)區(qū)分別有:
“codepagename=debugstart=0x7dc0end=0x7fffprotected”
“databankname=dbgsprstart=0x5f4end=0x5ffprotected”
這部分空間都是會(huì)被icd2占用的,所以“protected”,不分配給用戶程序。
3.c30+icd2
c30是通過(guò)設(shè)置編譯選項(xiàng)實(shí)現(xiàn)。
操作如下:mplabide->project->buildoptions->project->mplablink30,選中“l(fā)inkforicd2”確定即可。
對(duì)于dspic和pic24系列來(lái)說(shuō)ram區(qū)0800h-0822h是為icd2保留的,如果編譯時(shí)沒(méi)有選擇“l(fā)inkforicd2”,全局變量很有可能分配到800h-822h間.這也是為什么可以在watch窗口看到全局變量的地址,但在值那欄卻顯示“reservedmemory”的原因之一。
下面是針對(duì)picc,picc18,mcc18,c30幾個(gè)pic開(kāi)發(fā)中常見(jiàn)c編譯器,基于mplabide集成開(kāi)發(fā)環(huán)境中給出的解決辦法:
1.hitechc+icd2.
picc和picc18的設(shè)置一樣,通過(guò)設(shè)置編譯選項(xiàng)來(lái)實(shí)現(xiàn)。
編譯程序前,在mplabide中的project菜單下,按如下操作project->buildoptions->project->piccglobal在piccglobal選項(xiàng)卡中選擇"compileforicd",確定后就可以編譯程序。
2.mcc18+icd2
和picc不一樣,在mcc18下是選擇合適的linkerscripts文件來(lái)實(shí)現(xiàn),對(duì)于每個(gè)pic18fxxxx型號(hào),在c:\mcc18\lkr文件夾,都有兩個(gè)鏈接腳本文件,例如pic18f452,分別是18f452.lkr和18f452i.lkr.
如果您要使用icd2調(diào)試,請(qǐng)選用帶i的鏈接文件編譯.
如果打開(kāi)18f452i.lkr,會(huì)看到代碼區(qū)和數(shù)據(jù)區(qū)分別有:
“codepagename=debugstart=0x7dc0end=0x7fffprotected”
“databankname=dbgsprstart=0x5f4end=0x5ffprotected”
這部分空間都是會(huì)被icd2占用的,所以“protected”,不分配給用戶程序。
3.c30+icd2
c30是通過(guò)設(shè)置編譯選項(xiàng)實(shí)現(xiàn)。
操作如下:mplabide->project->buildoptions->project->mplablink30,選中“l(fā)inkforicd2”確定即可。
對(duì)于dspic和pic24系列來(lái)說(shuō)ram區(qū)0800h-0822h是為icd2保留的,如果編譯時(shí)沒(méi)有選擇“l(fā)inkforicd2”,全局變量很有可能分配到800h-822h間.這也是為什么可以在watch窗口看到全局變量的地址,但在值那欄卻顯示“reservedmemory”的原因之一。
因icd2是在線仿真,所以會(huì)占用部分芯片資源。但編譯器的鏈接文件不夠聰明,不知道哪些資源會(huì)被icd2占用,有可能鏈接器分配的rom和ram空間恰巧是被icd2占用的,會(huì)引起用戶程序和icd2的調(diào)試程序發(fā)生沖突,通常表現(xiàn)為調(diào)試運(yùn)行時(shí)程序會(huì)莫名其妙的復(fù)位,從而浪費(fèi)大家的調(diào)試時(shí)間。那么如何讓鏈接器知道哪些空間不分配給用戶程序,而保留給icd2呢?
下面是針對(duì)picc,picc18,mcc18,c30幾個(gè)pic開(kāi)發(fā)中常見(jiàn)c編譯器,基于mplabide集成開(kāi)發(fā)環(huán)境中給出的解決辦法:
1.hitechc+icd2.
picc和picc18的設(shè)置一樣,通過(guò)設(shè)置編譯選項(xiàng)來(lái)實(shí)現(xiàn)。
編譯程序前,在mplabide中的project菜單下,按如下操作project->buildoptions->project->piccglobal在piccglobal選項(xiàng)卡中選擇"compileforicd",確定后就可以編譯程序。
2.mcc18+icd2
和picc不一樣,在mcc18下是選擇合適的linkerscripts文件來(lái)實(shí)現(xiàn),對(duì)于每個(gè)pic18fxxxx型號(hào),在c:\mcc18\lkr文件夾,都有兩個(gè)鏈接腳本文件,例如pic18f452,分別是18f452.lkr和18f452i.lkr.
如果您要使用icd2調(diào)試,請(qǐng)選用帶i的鏈接文件編譯.
如果打開(kāi)18f452i.lkr,會(huì)看到代碼區(qū)和數(shù)據(jù)區(qū)分別有:
“codepagename=debugstart=0x7dc0end=0x7fffprotected”
“databankname=dbgsprstart=0x5f4end=0x5ffprotected”
這部分空間都是會(huì)被icd2占用的,所以“protected”,不分配給用戶程序。
3.c30+icd2
c30是通過(guò)設(shè)置編譯選項(xiàng)實(shí)現(xiàn)。
操作如下:mplabide->project->buildoptions->project->mplablink30,選中“l(fā)inkforicd2”確定即可。
對(duì)于dspic和pic24系列來(lái)說(shuō)ram區(qū)0800h-0822h是為icd2保留的,如果編譯時(shí)沒(méi)有選擇“l(fā)inkforicd2”,全局變量很有可能分配到800h-822h間.這也是為什么可以在watch窗口看到全局變量的地址,但在值那欄卻顯示“reservedmemory”的原因之一。
下面是針對(duì)picc,picc18,mcc18,c30幾個(gè)pic開(kāi)發(fā)中常見(jiàn)c編譯器,基于mplabide集成開(kāi)發(fā)環(huán)境中給出的解決辦法:
1.hitechc+icd2.
picc和picc18的設(shè)置一樣,通過(guò)設(shè)置編譯選項(xiàng)來(lái)實(shí)現(xiàn)。
編譯程序前,在mplabide中的project菜單下,按如下操作project->buildoptions->project->piccglobal在piccglobal選項(xiàng)卡中選擇"compileforicd",確定后就可以編譯程序。
2.mcc18+icd2
和picc不一樣,在mcc18下是選擇合適的linkerscripts文件來(lái)實(shí)現(xiàn),對(duì)于每個(gè)pic18fxxxx型號(hào),在c:\mcc18\lkr文件夾,都有兩個(gè)鏈接腳本文件,例如pic18f452,分別是18f452.lkr和18f452i.lkr.
如果您要使用icd2調(diào)試,請(qǐng)選用帶i的鏈接文件編譯.
如果打開(kāi)18f452i.lkr,會(huì)看到代碼區(qū)和數(shù)據(jù)區(qū)分別有:
“codepagename=debugstart=0x7dc0end=0x7fffprotected”
“databankname=dbgsprstart=0x5f4end=0x5ffprotected”
這部分空間都是會(huì)被icd2占用的,所以“protected”,不分配給用戶程序。
3.c30+icd2
c30是通過(guò)設(shè)置編譯選項(xiàng)實(shí)現(xiàn)。
操作如下:mplabide->project->buildoptions->project->mplablink30,選中“l(fā)inkforicd2”確定即可。
對(duì)于dspic和pic24系列來(lái)說(shuō)ram區(qū)0800h-0822h是為icd2保留的,如果編譯時(shí)沒(méi)有選擇“l(fā)inkforicd2”,全局變量很有可能分配到800h-822h間.這也是為什么可以在watch窗口看到全局變量的地址,但在值那欄卻顯示“reservedmemory”的原因之一。
熱門點(diǎn)擊
- Xilinx FPGA全局時(shí)鐘和第二全局時(shí)鐘
- 使用C編譯器+ICD2調(diào)試程序需要注意的問(wèn)題
- 基于VHDL的彩燈控制
- FPGA與DDR3 SDRAM的接口設(shè)計(jì)
- 基于IP模塊的PCI接口設(shè)計(jì)及FPGA實(shí)現(xiàn)
- 基于GCC的嵌入式程序插裝技術(shù)
- 組態(tài)王6.53
- ELD
- EDA技術(shù)在數(shù)字系統(tǒng)設(shè)計(jì)分析中的應(yīng)用
- 天碁科技與恩智浦率先實(shí)現(xiàn)TD-SCDMA/G
推薦技術(shù)資料
- 聲道前級(jí)設(shè)計(jì)特點(diǎn)
- 與通常的Hi-Fi前級(jí)不同,EP9307-CRZ這臺(tái)分... [詳細(xì)]
- 超低功耗角度位置傳感器參數(shù)技術(shù)
- 四路輸出 DC/DC 降壓電源
- 降壓變換器和升降壓變換器優(yōu)特點(diǎn)
- 業(yè)界首創(chuàng)可在線編程電源模塊 m
- 可編程門陣列 (FPGA)智能 電源解決方案
- 高效先進(jìn)封裝工藝
- 多媒體協(xié)處理器SM501在嵌入式系統(tǒng)中的應(yīng)用
- 基于IEEE802.11b的EPA溫度變送器
- QUICCEngine新引擎推動(dòng)IP網(wǎng)絡(luò)革新
- SoC面世八年后的產(chǎn)業(yè)機(jī)遇
- MPC8xx系列處理器的嵌入式系統(tǒng)電源設(shè)計(jì)
- dsPIC及其在交流變頻調(diào)速中的應(yīng)用研究