DSP学习笔记

合集下载

DSP汇编指令学习笔记

DSP汇编指令学习笔记

Knowledge问题谁在DSP的汇编语言中加入了NOP指令?NOP指令加入的条件是什么?About DSP1.DSP是实时数字信号处理的核心和标志。

2.DSP分为专用和通用两种类型。

专用DSP一般采用定点数据结构(一般不支持小数),数据结构简单,处理速度快;通用DSP灵活性好,但是处理速度有所降低。

3.DSP采用取指、译码、执行三个阶段的流水线(Pipeline)技术,缩短了执行时间,提高了运行速率。

DSP具有8个Functional unit,如果并行处理的话,以600MHz的时钟计算,如果执行的指令是single cycle指令,则可以4800MIPS(指令每秒)。

4.DSP的8个functional Unit,具有独特的功能,对滤波、矩阵运算、FFT(傅里叶变换)具有哈弗结构把指令空间与数据空间隔离的存储方式。

这样实现是为了实现指令的连续读取,而实现pipeline流水线结构。

传统哈弗结构:两个独立的存储空间,还使用独立总线。

让取指与执行存储独立,加快执行速度。

改进型哈弗结构:指令与数据的存储空间还是独立的。

但是使用公共的总线(地址总线与数据总线)。

这样实现的原因是因为出现了CACHE,数据的存储动作大部分被内部的CACHE 总线承接了,所以总线冲突的情况会大大减少。

同时让总线的结构与控制变得简单,CACHE 存储的速度也明显快于外设存储器。

冯诺依曼结构:是指令空间与数据空间共享的存放方式。

它不能实现pipeline的执行过程。

Pipeline(流水线)技术是把指令的取指-译码和指令的执行独立开来的技术。

虽然每条指令的过程还是要经过取指-译码-执行三个阶段最少3个CPU Cycle。

但是多个指令同时并行先后进行,保证总体的指令吞吐速率理想情况下可以保证在每个指令只要一个CPU CYCLE。

Pipeline技术必须要有哈弗结构支持,即必须把指令空间与数据空间隔离存放。

流水线阻断流水线中阻断现象也十分普遍,下面就各种阻断情况下的流水线性能进行详细分析。

dsp知识点总结

dsp知识点总结

dsp知识点总结一、DSP基础知识1. 信号的概念信号是指用来传输信息的载体,它可以是声音、图像、视频、数据等各种形式。

信号可以分为模拟信号和数字信号两种形式。

在DSP中,我们主要研究数字信号的处理方法。

2. 采样和量化采样是指将连续的模拟信号转换为离散的数字信号的过程。

量化是指将信号的幅度离散化为一系列离散的取值。

采样和量化是数字信号处理的基础,它们决定了数字信号的质量和准确度。

3. 傅里叶变换傅里叶变换是一种将时域信号转换为频域信号的方法,它可以将信号的频率分量分解出来,从而可以对信号进行频域分析和处理。

傅里叶变换在DSP中有着广泛的应用,比如滤波器设计、频谱分析等。

4. 信号处理系统信号处理系统是指用来处理信号的系统,它包括信号采集、滤波、变换、编解码、存储等各种功能。

DSP技术主要用于设计和实现各种类型的信号处理系统。

二、数字滤波技术1. FIR滤波器FIR滤波器是一种具有有限长冲激响应的滤波器,它的特点是结构简单、稳定性好、易于设计。

FIR滤波器在数字信号处理中有着广泛的应用,比如音频处理、图像处理等。

2. IIR滤波器IIR滤波器是一种具有无限长冲激响应的滤波器,它的特点是频率选择性好、相位延迟小。

IIR滤波器在数字信号处理中也有着重要的应用,比如通信系统、控制系统等。

3. 数字滤波器设计数字滤波器的设计是数字信号处理的重要内容之一,它包括频域设计、时域设计、优化设计等各种方法。

数字滤波器设计的目标是满足给定的频率响应要求,并且具有良好的稳定性和性能。

4. 自适应滤波自适应滤波是指根据输入信号的特性自动调整滤波器参数的一种方法,它可以有效地抑制噪声、增强信号等。

自适应滤波在通信系统、雷达系统等领域有着重要的应用。

三、数字信号处理技术1. 数字信号处理器数字信号处理器(DSP)是一种专门用于数字信号处理的特定硬件,它具有高速运算、低功耗、灵活性好等特点。

DSP广泛应用于通信、音频、图像等领域,是数字信号处理技术的核心。

DSP入门必须掌握知识点

DSP入门必须掌握知识点

1.DSP选型:主要考虑处理速度、功耗、程序存储器和数据存储器的容量、片内的资源,如定时器的数量、I/O 口数量、中断数量、DMA通道数等。

DSP的主要供应商有TI,ADI,Motorola,Lucent和Zilog等,其中TI占有最大的市场份额。

选择DSP可以根据以下几方面决定:1)速度:DSP速度一般用MIPS或FLOPS表示,即百万次/秒钟。

根据您对处理速度的要求选择适合的器件。

一般选择处理速度不要过高,速度高的DSP,系统实现也较困难。

2)精度:DSP芯片分为定点、浮点处理器,对于运算精度要求很高的处理,可选择浮点处理器。

定点处理器也可完成浮点运算,但精度和速度会有影响。

3)寻址空间:不同系列DSP程序、数据、I/O 空间大小不一,与普通MCU不同,DSP在一个指令周期内能完成多个操作,所以DSP的指令效率很高,程序空间一般不会有问题,关键是数据空间是否满足。

数据空间的大小可以通过DMA的帮助,借助程序空间扩大。

4)成本:一般定点DSP的成本会比浮点DSP的要低,速度也较快。

要获得低成本的DSP系统,尽量用定点算法,用定点DSP。

5)实现方便:浮点DSP的结构实现DSP系统较容易,不用考虑寻址空间的问题,指令对C语言支持的效率也较高。

6)内部部件:根据应用要求,选择具有特殊部件的DSP。

如:C2000适合于电机控制;OMAP适合于多媒体等。

1)C5000系列(定点、低功耗):C54X,C54XX,C55X相比其它系列的主要特点是低功耗,所以最适合个人与便携式上网以及无线通信应用,如手机、PDA、GPS等应用。

处理速度在80MIPS--400MIPS之间。

C54XX和C55XX一般只具有McBSP同步串口、HPI并行接口、定时器、DMA等外设。

值得注意的是C55XX提供了EMIF外部存储器扩展接口,可以直接使用SDRAM,而C54XX则不能直接使用。

两个系列的数字IO 都只有两条。

2)C2000系列(定点、控制器):C20X,F20X,F24X,F24XX ,C28x该系芯片具有大量外设资源,如:A/D、定时器、各种串口(同步和异步),WATCHDOG、CAN总线/PWM 发生器、数字IO 脚等。

Dsp学习笔记

Dsp学习笔记

1GPIO作为通用I/O口使用a)EALLOW;//防止私自写或覆盖寄存器的内容,加了这句,接下来可以操作寄存器了b)GpioCtrlRegs.GPAMUX1.bit.GPIO0 = 0; // GPIO0复用为普通I/O功能c)GpioCtrlRegs.GPADIR.bit.GPIO0 = 1; // 1,设置为输出;0设置为输入d)EDIS;//加了这句,接下来不可以操作寄存器注:EALLOW,EDIS总是成对出现2中断过程(代码以配置SCIB模块的接收中断为例,LSPCLK是37.5MHz)中断共分三级,1,外设级;2,PIE级;3,CPU级;外设级的中断标志必须手动清零;PIE级和CPU级的中断标志位由硬件自动清零。

中断响应例程:第一步,配置中断源,即允许产生什么类型点中断。

例如,定时器中断,串口中断,外部中断等。

ScibRegs.SCICTL2.bit.RXBKINTENA =1;允许接收中断第二步,配置PIE(外部中断扩展)a) InitPieCtrl();//初始化Pie控制b) InitPieVectTable();//初始化Pie向量表控制c) EALLOW;d) PieVectTable.SCIRXINTB=&scibreceive;//指定中断服务程序地址e) EDIS;f) PieCtrlRegs.PIECTRL.bit.ENPIE=1;//使能从PIECTRL中读取中断向量g) PieCtrlRegs.PIEIER9.bit.INTx3=1;//使能SCIB的接收中断h) IER |= M_INT9;//允许外部中断i) EINT;j) ERTM;第三步,中断响应在中断服务程序里,必须用PieCtrlRegs.PIEACK.all = PIEACK_GROUP9;//清楚中断已响应标识,再写自己等程序代码3串口配置InitScibGpio();scib_echoback_init();4AD转换InitAdc();//允许ADC时钟,带隙和参考电路上电,核中模拟电路上电AdcRegs.ADCTRL2.all = 0x2000;//ADC模块开始转换程序在FLASH运行时,需要加如下两句代码:(不知道具体原因)MemCopy(&RamfuncsLoadStart, &RamfuncsLoadEnd, &RamfuncsRunStart);InitFlash();。

DSP课堂笔记总结

DSP课堂笔记总结

1.数字信号处理是利用计算机或专用处理设备,以数字形式对信号进行采集、变换、滤波、估值、增强、压缩、识别等处理,以得到符合人们需要的信号形式。

输入信号可以是语音信号、传真信号,也可以是视频信号,还可以是传感器(如温度传感器)的输出信号。

输入信号经过带限滤波后,通过A/D转换器将模拟信号转换成数字信号。

根据采样定理,采样频率至少是输入带限信号最高频率的2倍,在实际应用中,一般为4倍以上。

数字信号处理一般是用DSP芯片和在其上运行的实时处理软件对输入数字信号按照一定的算法进行处理,然后将处理后的信号输出给D/A转换器,经D/A转换、内插和平滑滤波后得到连续的模拟信号。

3.数字信号处理的实现方法一般有以下几种:(1) 在通用型计算机上用软件实现。

一般采用C语言、MA TLAB语言等编程,主要用于DSP算法的模拟与仿真,验证算法的正确性和性能。

优点是灵活方便,缺点是速度较慢。

(2) 在通用型计算机系统中加上专用的加速处理器实现。

专用性强,应用受到很大的限制,也不便于系统的独立运行。

(3) 在通用型单片机(如MCS-51、MCS-96系列等)上实现。

只适用于简单的DSP算法,可用于实现一些不太复杂的数字信号处理任务,如数字控制。

(4) 用通用型可编程DSP芯片实现。

与单片机相比,DSP芯片具有更加适合于数字信号处理的软件和硬件资源,可用于复杂的数字信号处理算法。

特点是灵活、速度快,可实时处理。

(5) 用专用型DSP芯片实现。

在一些特殊的场合,要求信号处理速度极高,用通用型DSP芯片很难实现,例如专用于FFT、数字滤波、卷积、相关等算法的DSP芯片,这种芯片将相应的信号处理算法在芯片内部用硬件实现,无须进行编程。

处理速度极高,但专用性强,应用受到限制。

在上述几种实现方法中,(1)~(3)和(5)都有使用的限制,只有(4)才使数字信号处理的应用打开了新的局面。

4.DSP系统的特点基于通用DSP芯片的数字信号处理系统与模拟信号处理系统相比,具有以下优点:(1) 精度高,抗干扰能力强,稳定性好。

dsp基础学习总结笔记

dsp基础学习总结笔记

1、cj431电压基准芯片,2.5v2、电平标准3、驱动器74HC245(为增强PWM的驱动负载能力)4、增加输入端的抗干扰能力:在芯片的输入端加上拉电阻加电源或者下拉电阻接地,没有用到的采样端口尽量不要悬空。

5、D/A电路方案通用扩展语言GEL和c相似,但是有所不同。

GEL语言是C语言的一个子集。

与c语言不同的是gel不需要指定函数返回值的类型。

Gel中的while语句和c中的while语句相同,gel不支持标准c的break和continue语句6、一个完整的dsp工程包括头文件(.h),库文件(.lib),源文件(.c),以及配置文件.Cmd使用关键字MENUITEM可以在gel菜单下选择用户自定义的菜单项,然后用hotmenu、dialog或slider等关键字,在这个新的下拉菜单中添加新的菜单项。

7、关于添加文件遇到的问题8、变量查找:edit→find:Ctrl+f9、调试时,添加断点的快捷方法如下点击图上的小手即可10、单步调试第一个的意思是单击一步走一步,第二个的意思是指在单步运行时遇到子函数不进入子函数内部进行而是把它当成一步来执行,第三个的意思是当执行到子函数内部时使用这个按钮就可以执行完剩下的部分返回上一层函数。

如果想在一个窗口内同时看到c和汇编,则有操作View→mixed source/asm 11、观察变量右击变量→add to watch window 可以得到变量的值、类型、地址等。

12、位域定义、结构体以及共同体的知识结构体先定义再声明Union SCIFFCT_REG {Uint16 all;Struct SCIFFCT_BITS bit;};//---------------------------------------------------------------------------// SCI Register File://Struct SCI_REGS {Union SCICCR_REG SCICCR; // Communications control register Union SCICTL1_REG SCICTL1; // Control register 1Uint16 SCIHBAUD; // Baud rate (high) registerUint16 SCILBAUD; // Baud rate (low) registerUnion SCICTL2_REG SCICTL2; // Control register 2Union SCIRXST_REG SCIRXST; // Receive status registerUint16 SCIRXEMU; // Receive emulation buffer registerUnion SCIRXBUF_REG SCIRXBUF; // Receive data bufferUint16 rsvd1; // reservedUint16 SCITXBUF; // Transmit data bufferUnion SCIFFTX_REG SCIFFTX; // FIFO transmit registerUnion SCIFFRX_REG SCIFFRX; // FIFO receive registerUnion SCIFFCT_REG SCIFFCT; // FIFO control registerUint16 rsvd2; // reservedUint16 rsvd3; // reservedUnion SCIPRI_REG SCIPRI; // FIFO Priority control};//---------------------------------------------------------------------------// SCI External References & Function Declarations://Extern volatile struct SCI_REGS SciaRegs;Extern volatile struct SCI_REGS ScibRegs;由于scihbaud和scilbaud定义时为unit16型的,所以不能用.all或者.bit 的方式来访问,只能直接给寄存器整体进行赋值。

DSP学习笔记心得

DSP学习笔记心得

DSP学习心得笔记---------------- 白建成.baijc.icekoor引言:学习DSP的时间有两个多月了,收获很多新知识,我们要每天都有进步才行,以下内容没有特别的顺序,跟具自己的学习情况写的,如果有不对的地方希望指出来,如果有不懂得也可以问我,大家相互交流很重要,我的一个邮箱:baijc@欢迎联系!建立新工程过程中:问题1:"GPIO_Study.c", line 61: fatal error: could not open source file "DSP280x_Device.h"1 fatal error detected in the compilation of "GPIO_Study.c".解决方法:因为project →build options→compiler→preprocessor中,要包含的头文件的地址没有加进去,你可以找到头文件的地址,然后加进去。

问题2:undefined first referencedsymbol in file--------- ----------------_c_int00 D:\DSP study\test3\Debug\DSP280x_CodeStartBranch.objFS$$MPY D:\DSP study\test3\Debug\DSP280x_CpuTimers.objFS$$TOL D:\DSP study\test3\Debug\DSP280x_CpuTimers.obj>> error: symbol referencing errors - './Debug/test3.out' not built或者下面的问题:undefined first referencedsymbol in file--------- ----------------_c_int00 D:\DSPstudy\GPIO_Study\Debug\DSP280x_CodeStartBranch.obj>> error: symbol referencing errors - './Debug/GPIO_Study.out' not built解决办法都是下面:这个问题是因为没有加在库文件,请在project →build options→linker→libraries 中加入rts2800.lib。

dsp学习笔记(下)

dsp学习笔记(下)

GPIO寄存器一共分为两大类:一类是控制寄存器:主要由功能控制寄存器GPxMUX,方向控制寄存器GPxDIR,输入限定控制寄存器GPxQUAL组成。

另一类是数据寄存器:主要由数据寄存器GPxDAT,置位寄存器GPxSET,清除寄存器GPxCLEAR和取反寄存器GPxTOGGLE 组成。

假设已经设置为数字I/O口,那么输入输出又是怎么定义的呢?如下所示:输入限定控制寄存器、可以通过这个寄存器对输入信号进行量化限制、改善输入信号从而去除不希望的噪声污染。

连续采样到多个相同的电平时才认为是该电平、滤除了干扰信号。

LED闪烁实验系统初始化函数、GPIO初始化函数、主函数、延时子函数在寄存器中结构体的运用Struct GPADIR_BITS { // bits descriptionUint16 GPIOA0:1; // 0Uint16 GPIOA1:1; // 1Uint16 GPIOA2:1; // 2Uint16 GPIOA3:1; // 3Uint16 GPIOA4:1; // 4Uint16 GPIOA5:1; // 5Uint16 GPIOA6:1; // 6Uint16 GPIOA7:1; // 7Uint16 GPIOA8:1; // 8Uint16 GPIOA9:1; // 9Uint16 GPIOA10:1; // 10Uint16 GPIOA11:1; // 11Uint16 GPIOA12:1; // 12Uint16 GPIOA13:1; // 13Uint16 GPIOA14:1; // 14Uint16 GPIOA15:1; // 15};Union GPADIR_REG {Uint16 all;Struct GPADIR_BITS bit;};第10章 CPU定时器32位定时器周期寄存器、32位计数器寄存器、16位定时器分频器寄存器(决定了每一步的时间)、16位的预定标计数器寄存器只有定时器0是能用的第11章中断系统可屏蔽中断、不可屏蔽中断中断使能寄存器IER某一位为1则屏蔽该对应中断高两位保留、低14位对应着相应的14个中断中断标志寄存器IFR:说明CPU中断提出了相应中断请求若相对应位为0、则说明没有未处理的对应中断若相对应位为1、则说明至少有一个对应中断没有处理INTM 总开关PIE中断控制器组的概念:被分布在不同的组里μC/OS-II由Micrium公司提供,是一个可移植、可固化的、可裁剪的、占先式多任务实时内核,它适用于多种微处理器,微控制器和数字处理芯片(已经移植到超过100种以上的微处理器应用中)。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

一、如何开始DSP的学习以下为各网友学习DSP的一些经验fxw451:大家先大体上看一遍书,把大体的知识了解一下。

其次就是看例子了,例子是关键,例子里有你学的所有的东西,这次你再拿出一本书来看,这次是有针对性的看,比如你做的spi的,你就直接看spi那张,一边看例子一边看书,这样你就可以把一些重要的寄存器给记住了。

对于初学者来说,一直好奇的就是ccs的使用,拿我第一次使用ccs来说,当我把ccs 和板子连载一起时,我相当高兴,成功感油然升起,接下来就是用ccs里的看自带的例子了,看完后你就会发现,这些是什么东东哦,什么都不会,这就对了,你要是看一开始看会了你就是神仙了,dsp不像单片机那么容易上手,所以你要花费点功夫吃透它,好东西不是那么容易就可以搞定的。

到了自己编程的时候了,这个时候不要要求自己能编一个什么样的程序,你要仿着例子里的东西全部搞定就可以了,这就是你编程的第一步,当然也是成功的一步,在这成功下,我相信你的积极性肯定被调到起来,对dsp越来越热爱了。

suary:1)把存储器映射结构搞清楚----说的具体点就是dsp内到底有那些存储器(ram,rom,flash,etc),这些存储器到底是如何分配的,这个可以参考相关的.cmd文件的写法,它定义了存储器映射和输入输出段的位置2)编译器的堆栈操作---有关这点我还是没有具体弄清楚,就是中断或是子程序调用时,系统自己的堆栈操作。

2407有一个8级硬件堆栈,而2812没有,这个区别比较大,所以在编一边针对堆栈操作的程序(eg. rtos)时就要特别注意了。

3) 中断系统----每个mcu的中断系统搞清楚了,会给编程带来很大的便利,所以一定要对所用的mcu的中断过程了解的清清楚楚。

4)数据结构---设计好的,适合的数据结构会使自己的程序编写变得结构清楚而且“容易”。

dsp31:我的经验是:DSP不管是软件和硬件开发一定要多思考,多比较。

软件人员一定要会调试和定位硬件电路的问题点。

硬件人员一定要考虑接口设计,电平转换,电源稳定性,还有ESD防护等等。

cysmwander:首先得对C熟悉,但会C语言并不能说明你会编程,编程有结构设计的问题,C 语言只是工具,看不懂的就好好去想,想通了就发现自己又上了一个台阶;在学习DSP之前,我觉得应该需要去明白DSP能干什么,所以你一定要先看看DATASHEET,看看DSP的外设和资源,看看你能做啥。

开发环境建立完了你要熟悉开发流程,就是说你有一个IDEA,怎么把这个IDEA在目标板上实现,先做什么后做什么,这个一定要想清楚。

这些都准备好了,你就可以开始干了,千万别犹豫,古人说:临渊慕鱼,不如退而结网。

千万别怕。

一定要立即动手,毫无顾忌,不要想着,这个东西这么复杂,我从哪里动手阿,万事开头难,你就从你认为对的开始做,做错了重头来。

我和我们公司新来的同事都说:多动手,烧掉几块板子和几个MCU都是小事,关键是你要动手。

我不建议大家直接拿例程来做试验,因为那样你MCU的结构没有把握,你把例程跑得再好,那也不是你的东西,一定要自己写,例程只能作为参照,一定要一个字母一个字母地去写程序。

yangyansky:1、看书,这是必要的,也是基础。

第一遍,不用太详细,不过要让自己大概知道书里都有些什么内容。

2、重点了解2812的片内资源的分配情况,尤其是存储器的映射,知道了这个你就明白了你写的哪部分内容是具体存到哪里去了。

掌握bootload的工作原理,知道程序是在哪里,怎么启动的运行的。

至于spi、sci这些外设,我觉得等到具体运用的时候再看不迟。

结合具体的运用还比较容易理解。

3、看例程,在自己编写自己需要功能的代码时要看看已有的例程,看看例程里的各种寄存器是怎么配置的,配置时又是怎么实现的,根据看懂的编写自己想要的,然后跑跑自己的程序看和已有的例程有什么异同,是不是自己想要的。

当然,调试环节是最难的一个环节,这个过程中会出现很多意想不到的问题,只能慢慢摸索慢慢前进了。

4、重点理解中断、定时器、系统时钟的工作过程,这对程序里的时间分配问题很重要。

5、我觉得写程序要规范,这会简便很多操作,使编译得以优化,比如相关的文件定义要放在相应的头文件里,全局变量等的定义最好放在GlobalVariableDefs.c里,相应的中断程序要放在DefaultIsr.c里,等等。

最后是自己的一些感悟:开发板,仿真器是必要的,它能带给我们更加直观的感受,有空去TI官网转转,里面东西还是挺多的,另外坚持不懈的等待TI--MM拒绝我的芯片申请。

囧......资料书推荐清华的那个《tms320c28x系列dsp的cpu与外设》可当工具书查,还就是一本关于例程详解的,两本配合看。

另外一个好的程序模板也是很关键的,TI官网上2812例程,结构严谨并且最大的发挥了CCS的功能,建议先搞懂后再依据此创建自己的模板程序.还有就是芯片的DATASHEET,由于大多数都是英文的看起来比较痛苦,但确都是必须的....想我,四级都还没过来着。

关键还是耐心...最后友情提点下谷歌金山词霸。

我汗...~二、完整工程的构成首先那些最基本的仿真驱动安装,CCS配置等我就不在此累赘了...一个完整工程文件的构成总的说一个完整的工程需要由库文件(.lib),头文件(.h),源文件(.c)和CMD文件(.CMD)组成,缺一不可。

至于各文件内容将在以后中详细说明2812的库文件--文件夹地址C:\CCStudio_v3.3\C2000\cgtools\lib\rts2800.librts2800_ml.lib --- 大存储器模式头文件头文件的作用是定义了2812内部寄存器的数据结构。

头文件一般情况下不需要修改,如果你需要定义一些在整个工程内都具有作用域的全局变量的时候,可以在头文件中定义这些变量,具体的方法我们以后在例程或项目实践中应该会有介绍。

C文件(主函数)ADC.C ——外设AD的初始化函数,与外设AD相关CodeStartBranch.asm——引导过程中屏蔽看门狗定时器。

DSP28_CpuTimers.C——CPU定时器的初始化和配置函数,与CPU的定时器相关DefaultIsr_nonBIOS.C——包含了2812所有的中断函数,写中断时,只要将程序写在对应的函数内就可以,大大保证了中断的成功率。

DelayUs.asm——延时微秒DSP28x_GlobalVariableDefs.C——全局变量的定义,定义了2812的寄存器,中断向量表等内容。

Ev.C——外设EV的初始化函数,与外设EV相关。

Gpio.C——GPIO的初始化函数,只和GPIO相关。

Main_nonBIOS.c——主函数PieCtrl_nonBIOS.C——PIE初始化函数,和中断相关,很重要。

PieVect_nonBIOS.C——PIE中断向量表定义以及初始化,很重要。

SetDBGIER.asm——real time仿真SysCtrl.C——系统初始化,主要对开门狗,时钟等模块进行初始化,以保证2812正常工作,非常重要。

Watchdog.C——看门狗初始化Xintf.C——外部接口的初始化函数。

通过上面的分析我们可以看到几个文件非常重要,因此大家每次新建工程的时候,就把这些未编辑过的文件复制过来。

其他的外设相关的文件,您这个工程中涉及到哪个外设,您就把这个外设相关的源文件复制过来,一起加入工程。

CMD文件以.CMD为扩展名的文件,这个文件的作用是用来分配存储空间的。

由于DSP编译器的编译结果是未定位的,DSP也没有操作系统来定位执行代码,DSP系统的配置需求也不尽相同,因此我们根据实际的需求,自己定义代码的存储位置。

打个通俗的比喻,就是我们有一个仓库,现在需要把货物存放到仓库里面去,为了便于日后取用货物,我们将货物分门别类,然后把它们存放到指定的位置去。

把哪些货物放到哪个位置的规则,就是我们的CMD文件的内容。

CMD文件又分成两种。

一种是分配RAM空间的--微计算机模式(仿真模式)---XMP/MC`=0,用来将程序load到RAM内进行调试,因为我们大部分时间都是在调试程序,所以多用这类CMD,另一种是分配FLASH空间;微处理器模式---XMP/MC`=1,当程序调试完毕后,需要将其烧写到FLASH内部进行固化,这个时侯我们就需要使用这类CMD文件了。

其中DSP281x_Headers_nonBIOS.cmd---用于分配编译产生的各个段至存储器F2812_EzDSP_RAM_lnk.cmd ---用于将281x的外设寄存器结构产生的数据段映射至对应的存储器空间以上2个CMD文件均为仿真模式下无BIOS的CMD文件,CMD文件内容将在以后详细解释第二课课后1.什么是GEL文件?GEL文件的作用是什么呢?答:GEL是通用扩展语言(GeneralExte;2.Lib文件内部究竟是什么内容,我们自己能编辑;答:.lib是库文件,rts.lib是TI提供的;我们也可以添加自己的库,可在newproject;三、CCS的操作;中国有句古话叫“磨刀不误砍柴工”,如果您将CCS;1、CCS的布局和结构;菜单栏——和CCS所有功能相关的菜单都在这里面;编译工具栏——编译程答:GEL是通用扩展语言(General Extension Language)是一种解释语言,类似于C语言。

GEL函数可以用来扩展CC的功能,方便用户调试程序。

CCS提供丰富的内嵌GEL函数,用户也可以定义自己的GEL函数。

在处理器属性的GEL文件窗内为每个处理器选择用户的GEL文件(扩展名为 .gel) GEL文件用于初始化DSP。

GEL在CCS下有一个菜单,可以根据DSP的对象不同,可以用gel来调用一些菜单命令,对DSP的存储器进行配置,设置不同的初始化程序。

2. Lib文件内部究竟是什么内容,我们自己能编辑LIB文件吗答:.lib是库文件,rts.lib是TI提供的运行时支持库,如果是C代码写的源程序,必须要包含该库。

该库由TI公司做好了,放在CCS的\cgtools\lib中,源代码TI网站可以下载。

但是我们无法查看.编辑TI所提供的库文件内容我们也可以添加自己的库,可在newproject中新建三、CCS的操作中国有句古话叫“磨刀不误砍柴工”,如果您将CCS这把常用的利刃磨锋利了,那么我相信为您的DSP开发过程节省不少的工夫。

1、CCS的布局和结构菜单栏——和CCS所有功能相关的菜单都在这里面。

编译工具栏——编译程序时常用的一些工具。

调试工具栏——调试程序时常用的一些工具。

工程文件框——打开的工程所有文件会按类别放在这里代码编辑区——代码都是在这里编辑完成的了,最主要的工作区域。

相关文档
最新文档