CCS 如何指定函数或变量在FLASH的存储地址
- 格式:pdf
- 大小:199.28 KB
- 文档页数:1
CCS使⽤指南CCSV5.4使⽤指南前⾔:MSP430单⽚机是德州仪器(TI公司)推出的16位超低功耗单⽚机系列,低功耗的特性及丰富多样化的外设使其越来越受学习者的青睐,在16位单⽚机市场中独领风骚。
俗话说“⼯欲善其事必先利其器”,为了更好地学习单⽚机,和进⾏嵌⼊式开发,⼀个好的调试平台是必须的。
CCS的全称是Code Composer Studio,它是美国德州仪器公司出品的代码开发和调试套件,供⽤户开发和调试DSP和MCU程序。
对于刚接触MSP系列单⽚机的初学者⽽⾔,⼀个实⽤的CCS使⽤指南往往能帮助其更快地熟悉和使⽤程序开发平台,更好地学习单⽚机。
从初学者和实⽤的⾓度出发,本⼩节以实例的形式演⽰如何在CCSV5.4平台上建⽴⼀个⼯程,如何进⾏程序编译和调试,并且将对菜单栏⾥的⼀些常⽤功能进⾏介绍。
⼀新建⼯程1.1⾸先打开CCSV5.4确定⼯作区间,然后点击File->New->CCS Project弹出如下对话框如图1.1图1.11.2 在 Project name中输⼊新建⼯程的名字,在此输⼊lesson24。
1.3 在 Output type中有两个选项:Executable和Static library,前者为构建⼀个完整的可执⾏程序,后者为静态库。
在此保留:Executable可执⾏程序1.4 在Location中选择存储路径,在此选择默认路径 F:\workspace_v5_4。
1.5 在Device部分选择器件的型号:在此Family选择MSP430;Variant选择MSP430GXXX Family系列,芯⽚选择MSP430G2553;Connection保持默认。
1.6 选择Empty Project(with main.c)即带主函数的空⼯程,点击Finish完成新⼯程创建.点击View->Project Explorer,新⼯程将显⽰Project Explorer 中,如图1.6所⽰图1.6⼆程序编译2.1 假设在程序编辑区编写了如下程序如图2.1图2.12.2 点击程序上⽅⼯具栏上的锤⼦按钮,进⾏程序编译.点View->Problems 弹出Problems窗⼝如图2.2,在该窗⼝中查看编译是否有错(注:如果锤⼦按钮没出来,点击右上⽅的CCS Edit,如图2.3)图2.2图2.3如图⽰,程序没有错误,如果程序有错,该窗⼝会显⽰错误信息,根据错误显⽰修改程序,重新进⾏编译,直⾄⽆错⽅可进⾏调试。
分享——如何在CCS仿真时查看外部SDRAM中的变量值
笔者日前在做项目时,发现在仿真过程中,不能查看存储于外部SDRAM中的Expressions Value:
通过TI E2E社区专家的指点,找到以下解决办法:
1.打开项目所用的GEL文件:
2.双击GEL Files列表中的对应文件,打开文件,因该文件默认属性为只读,所以此时还不能对其进行编辑。
3.在您安装CCS的路径(ccsv5\ccs_base\emulation\gel)下找到对应的文件,取消其只读属性。
本例所用文件为f28m35h52c1_m3.gel:
4.打开gel文件(本例为f28m35h52c1_m3.gel),找到F28M35H52C1_Memory_Map()函数:
函数中对Memery的配置代码如下:
5.在函数F28M35H52C1_Memory_Map()中的适当位置添加您需要的修改,如本例中,项目所用SDRAM的开始地址为0x60000000,大小为8M Bytes,所以增加以下修改:
GEL_MapAddStr(0x60000000, 0, 0x800000, "R|W", 0); /* External SDRAM */
修改完毕,保存文件,然后在GEL Files窗口中右键点击已修改的gel文件,点击“Reload”,此时就可以正常看到位于SDRAM中的变量值了。
问题解决,可以正常显示的Expressions Value:。
第四章CCS的使用利用CCS集成开发环境,用户可以在一个开发环境下完成工程定义、程序编辑、编译链接、调试和数据分析等工作环节.使用CCS开发应用程序的一般步骤为:(1)打开或创建一个工程文件.工程文件中包括源程序(C或汇编)、目标文件、库文件、连接命令文件和包含文件.(2)编辑各类文件.如头文件(.h文件),命令文件(.cmd文件)和源程序(.c,.asm文件)等.可以使用一般的编辑软件或CCS集成编辑环境进行各类文件编辑.(3)对工程进行编译.如果有语法错误,将在构建(Build)窗口中显示出来.用户可以根据显示的信息定位错误位置,更改错误.(4)排除程序的语法错误后,用户可以对计算结果/输出数据进行分析,评估算法性能.CCS提供了探针、图形显示、性能测试等工具来分析数据、评估性能.下图为典型CCS集成开发环境窗口示例。
整个窗口由主菜单、工具条、工程窗口、编辑窗口、图形显示窗口、内存单元显示窗口和寄存器显示窗口等构成。
工程窗口用来组织用户的若干程序构成一个项目,用户可以从工程列表中选中需要编辑和调试的特定程序;在源程序编辑/调试窗口中用户既可以编辑程序,又可以设置断点和针(对于C程序),调试程序;反汇编窗口可以帮助用户查看机器指令,查找错误(汇编程序探针、断点的设置应在反汇编窗口中进行);内存和寄存器显示窗口可以查看、编辑内存单元和寄存器.图形显示窗口可以根据用户需要直接或经过处理后显示数据;用户可以通过主莱单Windows条目来管理各窗口.在CCS窗口中单击鼠标右键都可以弹出与此窗口内容相关联的菜单.主菜单和工具条项的具体功能参见附录。
一、建立工程文件与Visual Basic、Visual C和Delphi等集成开发工具类似,CCS采用工程文件来集中管理一个工程.一个工程包括源程序、库文件、链接命令文件和头文件等,它们按照目录树的结构组织在工程文件中.工程构建(编译链接)完成后生成可执行文件.工程视窗显示了工程的整个内容.例如下图显示了工程codec_eg.mak所包含的内容.其中Include文件夹包含源文件中以”.include”声明的文件,Libraies文件夹包含所有后缀为”.lib”的库文件,Source文件夹包含所有后缀为”.c”和”.asm”的源文件.文件夹上的”+”符号表示该文件夹被折叠,”-“表示该文件夹被展开.一)创建、打开和关闭工程命令Project→New用于创建一个新的工程文件(后缀为”.mak”),此后用户就可以编辑源程序、链接命令文件和头文件等,然后加入到工程中.工程编译链接后产生的可执行程序后缀为”.out”.命令Project→Open用于打一个已存在的工程文件,例如用户打开位于”c:\ti\c5400\dsk\examples\dsp”目录下的codec_eg.mak工程文件时, 工程中包含的各项信息也被载入,其工程窗口如前图所示.命令Project→Close用于关闭当前工程文件.二)在工程中添加/删除文件以下任一操作都可以添加文件到工程中:①选择命令Project→Add File to Project …②在工程视图中右键单击调出关联菜单,选择Add File…在工程中源文件、链接命令文件及库文件(Libraries)需要用户指定加入,头文件(Include 文件)通过扫描相关性(Scan All Dependencies)自动加入到工程中.在工程视图中右键单击某文件,从关联莱单中选择”Remove from project”可以从工程中删除此文件.三)编辑源程序CCS集成编辑环境可以编辑任何文本文件(对C程序和汇编程序),可以打开多个窗口或对同一文件打开多个窗口,进行多窗口显示.点击主莱单命令File→New→Source File弹出编辑窗口进行编辑.四)工具条和快捷键命令View→Standard Toolbar和View→Edit Toolbar分别调出标准工具条和编辑工具条.工具条上按钮的含义参见附录。
CCS5.4烧写FLASH教程(以TMS320F2812为例)一、前期文件准备如上图所示,CCS5.4环境下烧写FLASH必须将以上文件添加到工程文件夹中,DSP28xxx_CodeStartBranch.asm和DSP28xxx_SectionCopy_nonBIOS.asm可以将FLASH中的部分内容移植到RAM中,增加运行速度。
二、具体步骤1、如下图所示,打开工程设置,在general选项卡中,将configuration由Debug[Active]改为Release[Active],并将Linker command filer改为下图所示的CMD 文件。
2、在Predefined Symbols 选项卡中添加FLASH 预定义符号。
3、在Debug 选项中,修改FLASH下载基本设置,根据实际板子情况,修改晶振OSCCLK。
(实验室里的2812板子晶振为20MHz,而28335板子的晶振为30MHz)4、在主函数中添加一下代码:#ifdef FLASH// Copy time critical code and Flash setup code to RAM// The RamfuncsLoadStart, RamfuncsLoadEnd, and RamfuncsRunStart// symbols are created by the linker. Refer to the linke MemCopy(&RamfuncsLoadStart, &RamfuncsLoadEnd,&RamfuncsRunStart);// Call Flash Initialization to setup flash waitstates// This function must reside in RAMInitFlash(); // Call the flash wrapper init function#endif并且在主函数前面定义变量:extern Uint16 RamfuncsLoadStart;extern Uint16 RamfuncsLoadEnd;extern Uint16 RamfuncsRunStart;最终效果如下:5、打开工程文件夹中的DSP28_SysCtrl.c,在程序开头添加以下语句:#pragma CODE_SECTION(InitFlash, "ramfuncs");并且检查此C文件中有没有定义InitFlash函数,如果没有,添加以下代码:void InitFlash(void){EALLOW;FlashRegs.FOPT.bit.ENPIPE = 1;FlashRegs.FBANKWAIT.bit.RANDWAIT = 3;//5;FlashRegs.FBANKWAIT.bit.PAGEWAIT = 3;//5;FlashRegs.FSTDBYWAIT.bit.STDBYWAIT = 0x01FF;FlashRegs.FACTIVEWAIT.bit.ACTIVEWAIT = 0x01FF;EDIS;asm(" RPT #6 || NOP");}6、最后在F281x_nonBIOS_flash.cmd中添加以下代码:ramfuncs : LOAD = FLASH_CD,RUN = RAM_H0,LOAD_START(_RamfuncsLoadStart),LOAD_END(_RamfuncsLoadEnd),RUN_START(_RamfuncsRunStart),PAGE = 0最终效果如下:三、编译烧录1、Bulid工程文件,修改相应的错误。
Flash与C#.NET的变量相互通信Flash发送到C# :在Flash中设计一个按钮,事件为:btn.onRelease = function(){fscommand("Send Action", "");};在c#中插入Shockwave Flash Object 对象movie的属性就是Flash[SWF]影片的地址。
在Shockwave Flash Object 的FSCommand 事件中插入:if(mand == "Send Action"){MessageBox.Show("调用FLASH按钮事件成功"+e.args) ;}解释:从Flash中发送函数Send Action 另加一个参数txt 到C#中!而在C#中的FSCommand 事件中判断所发送的函数名:if(mand == "Send Action")如果要获取参数e.args 就是txt 的参数值!C#发送到Flash :在c#中放入一个按钮,事件:private void button1_Click(object sender, System.EventArgs e){string flashData = "一二三四五六七";axShockwaveFlash1.SetVariable("txt",flashData);}而在Flash中就写两句代码就可以了:var mo:Object=new Object();mo.watch("txt");这时在Flash中声明了一个娈量txt 值为"一二三四五六七"就被这两句代码给接收了!你可以再Flash中多添加一个按钮trace(txt) 试试!import Flash.external.ExternalInterface;function loadAndPlayVideo(uri:String):Void{videoPlayer.contentPath = uri;}ExternalInterface.addCallback("loadAndPlayVideo", null, loadAndPlayVideo);/************************************************************************************************* 函数解释****************************************************************************************public static addCallback(methodName:String, instance:Object, method:Function) : Boolea n将ActionScript 方法注册为可从容器调用。
数据存储在程序存储器(flash)空间的定义(1)flash 常量:#include//须增加的头文件const prog_uchar FlashConst = 3;//定义uchar 型的常量n 定义在flash 里(flash 常量)unsigned char RamVar; //定义无符号整型变量(Ram 变量)RamVar = pgm_read_byte(&FlashConst); //读取flash常量到ram 变量(2)flash 一维数据:#includeconst prog_uchar s[5] = { 1, 2, 3, 4,5 };unsigned char RamVar; //定义无符号整型变量(Ram 变量)RamVar = pgm_read_byte( &s[1] ); //读取s[1]的值到RamVar, or RamVar = pgm_read_byte(s+1 );(3)flash 多维数据:#includeconst prog_uchar s[4][16] = { {14, 4,13, 1, 2,15,11, 8, 3,10, 6,12, 5, 9, 0, 7 },{ 0,15, 7, 4,14, 2,13, 1,10, 6,12,11, 9, 5, 3, 8 },{ 4, 1,14, 8,13, 6, 2,11,15,12, 9, 7, 3,10, 5, 0 },{15,12, 8, 2, 4, 9, 1, 7, 5,11, 3,14,10, 0, 6,13 }};unsigned char RamVar[4],[16]; //定义无符号整型变量(Ram 变量)register char i, j;for(i=0; i<4; ++){for(j=0; j<16; j++){RamVar[i][j] = pgm_read_byte( &s[i][j]); //读取数组s 的值到RamVar}//end for 2}//end for 1(4)扩展部分avr 对ram和flash 是独立编址的,ram 是按8 位编址,而flash 却按16 位编址,读ram 和读flash 的汇编指令也是不同的。
实验一 CCS使用和数据存储实验一、实验目的1. 掌握CCS的使用2. 掌握TMS320C54X 程序空间的分配;3. 掌握TMS320C54X 数据空间的分配;4. 能够熟练运用TMS320C54X 数据空间的指令。
二、实验设备计算机,CCS 3.1版软件,DSP仿真器,E300实验箱,DSP-54XP CPU板。
三、实验步骤与内容1. 在进行DSP实验之前,需先连接好仿真器、实验箱及计算机,连接方法如下所示:2. E300 底板的开关SW4 的第1位置ON,其余位置OFF。
其余开关设置为OFF。
3. 上电复位在硬件安装完成后,确认安装正确、各实验部件及电源连接无误后,启动计算机,接通仿真器电源,此时,仿真器上的“红色指示灯”应点亮,否则DSP开发系统与计算机连接存在问题。
4. 运行CCS程序1) 待计算机启动成功后,实验箱220V电源置“ON”,实验箱上电2) 启动CCS3.1,进入CCS界面后,点击“Debug—Connect”3) 此时仿真器上的“绿色指示灯”应点亮,CCS正常启动,表明系统连接正常;否则仿真器的连接、JTAG 接口或CCS 相关设置存在问题,这时需掉电检查仿真器的连接、JTAG 接口连接是否正确,或检查CCS相关设置是否存在问题。
5. 成功运行CCS 程序后,首先应熟悉CCS的用户界面;6. 学会在CCS环境下创建工程文件、添加程序文件、编写程序、编译、装载、调试,学习如何使用观察窗口等。
7. 用“Project\open”打开“\normal\ 01_mem\ mem.pjt”.编译并装载“\ 01_mem\Debug\mem.out”8.用“Edit”下拉菜单中的“Memory/Fill”编辑内存单元,参数设置如下图:单击“OK”此时以0x1000 为起始地址的16个内存单元被修改成:0x00099.用“View”下拉菜单“Memory”观察内存单元变化,输入要查看的内存单元地址,本实验要查看0x1000H~0x100FH 单元的数值变化,输入地址0x1000H;单击“OK”如下图所示:10. 点击“Debug\Go main”进入主程序,在程序中“加软件断点1”和“加软件断点2”处施加软件断点。