DSP学习心得笔记Word文档下载推荐.docx
- 文档编号:21583504
- 上传时间:2023-01-31
- 格式:DOCX
- 页数:18
- 大小:275.63KB
DSP学习心得笔记Word文档下载推荐.docx
《DSP学习心得笔记Word文档下载推荐.docx》由会员分享,可在线阅读,更多相关《DSP学习心得笔记Word文档下载推荐.docx(18页珍藏版)》请在冰豆网上搜索。
symbolreferencingerrors-./Debug/GPIO_Study.outnotbuilt解决办法都是下面:
这个问题是因为没有加在库文件,请在projectbuildoptionslinkerlibraries中加入rts2800.lib。
问题3:
warning:
creating.stacksectionwithdefaultsizeof400(hex)words.Use-stackoptiontochangethedefaultsize.error:
cantallocate.stack,size00000400(page1)inRAMM1(avail:
00000380)error:
errorsininput-./Debug/GPIO_Study.outnotbuilt解决办法:
这个问题是关于堆栈存储大小的问题,他是说,创建堆栈段使用与设置400个字,并建议在“堆栈操作”中改变这个与设置。
这时,需要进行如下修改就可通过:
projectbuildoptionsLinkerbasic,在StackSize(-stack):
填入800或者其他小于1024的数值。
调试程序:
在编译完成之后,要来下载程序并进行功能调试。
FileLoadProgram,在工程文件夹下面的Debug文件夹下,选中*.out文件,点击打开,便开始下载程序了。
将*.out文件下载到目标板上2812的RAM中。
注意,这里是调试,所以将程序下载到RAM。
等到最后您要固化程序的时候,就得下载到FLASH了,因为断电之后,RAM里面所有的数据都会消失。
(Run和Animate的区别,Run是如果遇到断点的话它就停下来了。
而Animate就算遇到断点时先停止DSP内核,刷新窗口,然后接着继续启动运行,常用来连续刷新变量窗口和生成graph图形等)知识储备。
添加断点:
加上断点的方法很简单,只要在该行代码前双击就行。
双击之后,这行代码前面会出现一个红色圆块。
另外一种添加断点的方法,就是在刚才的编译工具栏上,点一下那个小手图形的按钮,前提是你要把光标移动到想要设置断点的哪一行上。
使用watchwindow:
Watchwindow的作用是来观察程序运行过程中的各个变量的值。
调用watchwindow的方法是点击菜单栏的View,watchwindow,这时watchwindow就会显示在CCS下方的信息区域;
选中所要观察的变量,然后右键,在右键菜单中选择addtowatchwindow。
调试代码观察:
我们在调试程序的时候经常想让程序从Main函数开使运行,点DebugGomain。
既能看到源文件中代码的执行情况,又能看到汇编指令的执行情况ViewMixedSource/Asm;
关于F2812中用C语言来实现中断的说明1.首先在.cmd中定位系统中断表:
MEMORYPAGE0:
.PAGE1:
.PIE_VECT:
origin=0x000D00,length=0x000100.SECTIONS.PieVectTable:
PIE_VECT,PAGE=1.2.在C中制定该中断的结构体:
#pragmaDATA_SECTION(PieVectTable,PieVectTable);
structPIE_VECT_TABLEPieVectTable;
(在DSP28_GlobalVariableDefs.C中初始化)3.用一组常数(按照中断向量的顺序)初始化该名字为PIE_VECT_TABLE的表:
typedefinterruptvoid(*PINT)(void);
这里有些一问,一下应该为函数名?
/DefineVectorTable:
structPIE_VECT_TABLE/Resetisneverfetchedfromthistable./Itwillalwaysbefetchedfrom0x3FFFC0ineither/bootROMorXINTFZone7dependingonthestateof/theXMP/MCinputsignal.OntheF2810itisalways/fetchedfrombootROM.PINTPIE1_RESERVED;
PINTPIE2_RESERVED;
PINTPIE3_RESERVED;
PINTPIE4_RESERVED;
PINTPIE5_RESERVED;
PINTPIE6_RESERVED;
PINTPIE7_RESERVED;
PINTPIE8_RESERVED;
PINTPIE9_RESERVED;
PINTPIE10_RESERVED;
PINTPIE11_RESERVED;
PINTPIE12_RESERVED;
PINTPIE13_RESERVED;
/Non-PeripheralInterrupts:
PINTXINT13;
/XINT13PINTTINT2;
/CPU-Timer2PINTDATALOG;
/DatalogginginterruptPINTRTOSINT;
/RTOSinterruptPINTEMUINT;
/EmulationinterruptPINTXNMI;
/Non-maskableinterruptPINTILLEGAL;
/IllegaloperationTRAPPINTUSER0;
/UserDefinedtrap0PINTUSER1;
/UserDefinedtrap1PINTUSER2;
/UserDefinedtrap2PINTUSER3;
/UserDefinedtrap3PINTUSER4;
/UserDefinedtrap4PINTUSER5;
/UserDefinedtrap5PINTUSER6;
/UserDefinedtrap6PINTUSER7;
/UserDefinedtrap7PINTUSER8;
/UserDefinedtrap8PINTUSER9;
/UserDefinedtrap9PINTUSER10;
/UserDefinedtrap10PINTUSER11;
/UserDefinedtrap11/Group1PIEPeripheralVectors:
PINTPDPINTA;
/EV-APINTPDPINTB;
/EV-BPINTrsvd1_3;
PINTXINT1;
PINTXINT2;
PINTADCINT;
/ADCPINTTINT0;
/Timer0PINTWAKEINT;
/WD./Group12PIEPeripheralVectors:
PINTrsvd12_1;
PINTrsvd12_2;
PINTrsvd12_3;
PINTrsvd12_4;
PINTrsvd12_5;
PINTrsvd12_6;
PINTrsvd12_7;
PINTrsvd12_8;
然后在使我们在.cmd文件中定义的表有以上属性:
externstructPIE_VECT_TABLEPieVectTable;
(在.h文件中)4.初始化该表(在.c文件中)使之能够为主程序所使用:
conststructPIE_VECT_TABLEPieVectTableInit=PIE_RESERVED,/ReservedspacePIE_RESERVED,PIE_RESERVED,PIE_RESERVED,PIE_RESERVED,PIE_RESERVED,PIE_RESERVED,PIE_RESERVED,PIE_RESERVED,PIE_RESERVED,PIE_RESERVED,PIE_RESERVED,PIE_RESERVED,/Non-PeripheralInterruptsINT13_ISR,/XINT13orCPU-Timer1INT14_ISR,/CPU-Timer2DATALOG_ISR,/DatalogginginterruptRTOSINT_ISR,/RTOSinterruptEMUINT_ISR,/EmulationinterruptNMI_ISR,/Non-maskableinterruptILLEGAL_ISR,/IllegaloperationTRAPUSER0_ISR,/UserDefinedtrap0USER1_ISR,/UserDefinedtrap1USER2_ISR,/UserDefinedtrap2USER3_ISR,/UserDefinedtrap3USER4_ISR,/UserDefinedtrap4USER5_ISR,/UserDefinedtrap5USER6_ISR,/UserDefinedtrap6USER7_ISR,/UserDefinedtrap7USER8_ISR,/UserDefinedtrap8USER9_ISR,/UserDefinedtrap9USER10_ISR,/UserDefinedtrap10USER11_ISR,/UserDefinedtrap11/Group1PIEVectorsPDPINTA_ISR,/EV-APDPINTB_ISR,/EV-Brsvd_ISR,XINT1_ISR,XINT2_ISR,ADCINT_ISR,/ADCTINT0_ISR,/Timer0WAKEINT_ISR,/WD./Group12EVectorsrsvd_ISR,rsvd_ISR,rsvd_ISR,rsvd_ISR,rsvd_ISR,rsvd_ISR,rsvd_ISR,rsvd_ISR,;
/-/InitPieVectTable:
/-/ThisfunctioninitializesthePIEvectortabletoaknownstate./Thisfunctionmustbeexecutedafterboottime./voidInitPieVectTable(void)int16i;
Uint32*Source=(void*)&
PieVectTableInit;
Uint32*Dest=(void*)&
PieVectTable;
EALLOW;
for(i=0;
ibuiltoptions-linker-libraries-rts2800_ml.lib,因为之前一直用它,后来改成rts2800.lib就出现这个问题了,改回去就可以了。
dataverificationfailedataddress0x8000Pleaseverifytargetmemoryandmemorymap解决方法:
可能是gel的问题,重新载入几次,如果不行的话,就把仿真器重新接几次,问题就应该没有了,多数是硬件的问题。
针对CCS的图像显示,一个方式为对程序中的某些变量画图,另一种方式是对DSP采集的数据画图,两者在方法上有所不同。
首先声明画图很简单,只要把重要的记住就可以了,其他的尝试怎么用就OK了,不用刻意去学,浪费时间;
至于这张图中各个栏代表什么,你随便找个资料就给你说得很清楚,但是没有一份资料教你怎么用的,这就是网上资料的弊端。
你只要把右图画绿线的看懂就总够了,其他的试着改变参数,看看结果你就明白了。
接下来给你看看我的配置:
Dualtime和singletime的区别在于显示几个波形Svpwm_Time1和Svpwm_Time0是我程序内部的两个变量,也就是SVPWM的t1,t0,记得前面加&
,不然结果不对,AcquisitionBufferSize设为1,因为我想通过终端来调试,每次终端,然后刷新一次数据,这样很方便,找点资料看,这里不详细说明了,还有采样时间,根据你的要求来定。
波形如下:
是不是很matlab中一样哈!
另一种方式,不能采用中断了,因为中断时间太长,影响采样速度。
建议:
在程序中建一个大的数组,然后运行一段时间,再将数组显示在CCS中,AcquisitionBufferSize此时不能为1了,要和你的数组一样长,DisplayDataSize等于AcquisitionBufferSize就可以,显示出来就可以了。
如下图:
这是我AD采样的波形,采集一个正弦波形,采用两个通道。
2011.01.24error:
symbol_mainredefined:
firstdefinedinD:
DSPstudyDSP_PerfectDsp_Perfect_110121WPerfectDebugPerfect.obj;
redefinedinD:
DSPstudyDSP_PerfectDsp_Perfect_110121WPerfectDebugSCI_485.obj解决办法:
这个问题是系统编译以后,在perfect.c和SCI_485.c中分别有main();
结果编译会报错。
2011.01.22D:
DSPstudyDSP_PerfectDsp_Perfect_110121WcmdF28016.cmd,line125:
error:
runplacementfailsforobject.ebss,size0x3ba(page1).Availableranges:
RAMM1size:
0x380unused:
0x380maxhole:
0x380error:
errorsencounteredduringlinking;
./Debug/Perfect.outnotbuilt解决办法:
双击错误提示,进入错误的地方,原因是我们申明的变量数,超过了RAMM1的声明的大小,所以找过RAMM1,然后把size扩大就可以了,RAMM1:
origin=0x000480,length=0x000400/*on-chipRAMblockM1*/,注意但是不能超过1024,也就是说最大是0x000400。
同时也把projectbuildoptionsLinkerbasic,在StackSize(-stack):
以免以后有出些不明的问题。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- DSP 学习心得 笔记