嵌入式电力参数测量系统实验指导书学生用161013.docx
《嵌入式电力参数测量系统实验指导书学生用161013.docx》由会员分享,可在线阅读,更多相关《嵌入式电力参数测量系统实验指导书学生用161013.docx(53页珍藏版)》请在冰点文库上搜索。
![嵌入式电力参数测量系统实验指导书学生用161013.docx](https://file1.bingdoc.com/fileroot1/2023-6/17/04e45e2b-30a8-4f37-8b87-40ce18cb8c08/04e45e2b-30a8-4f37-8b87-40ce18cb8c081.gif)
嵌入式电力参数测量系统实验指导书学生用161013
嵌入式电力参数测量系统
实验指导书
哈尔滨工业大学电气工程系
2012年10月
实验1仿真软件的使用
1.1构造DSP开发软件环境
1、安装CCS软件(此文档假定用户将CCS安装在默认目录C:
\CCStudio_v3.3中,同时
也建议用户按照默认安装目录安装)
(1)将实验箱附带的教学光盘插入计算机光盘驱动器。
(2)打开教学光盘的根目录中有“ccs3.3”目录,用鼠标右键单击文件夹中“Setup.exe”,
进入安装程序。
建议您安装时使用默认路径“C:
\CCStudio_v3.3”。
(3)选择“CodeComposerStudio”,按照安装提示进行安装,并重新启动计算机。
(4)安装完毕,桌面上出现两个新的图标,如下图。
1.2设置CCS
1、设置CCS工作在软件仿真环境CCS可以工作在纯软件仿真环境中,就是由软件在PC机内存中构造一个虚拟的DSP环境,可以调试、运行程序。
但一般软件无法构造DSP中的外设,所以软件仿真通常用于调试纯软件的算法和进行效率分析等。
在使用软件仿真方式工作时,无需连接板卡和仿真器等硬件。
(1)单击桌面上图标:
进入CCS设置窗口。
(2)在出现的窗口中按标号顺序进行如下设置:
图1.1删除掉原有的驱动设置
(3)在出现的窗口中按标号顺序进行如下设置:
图1.2选择软件仿真F2812芯片驱动
此时CCS已经被设置成Simulator方式(软件仿真TMS320F2812器件的方式),如果一直使用这一方式就不需要重新进行以上设置操作了。
2、设置CCS通过ICETEK-5100USB仿真器连接ICETEK–F2812-A硬件环境进行软件调试和开发。
(1)单击桌面上图标:
进入CCS设置窗口。
(2)在出现的窗口中按标号顺序进行如下设置:
图1.3删除掉原有的驱动设置
(3)在出现的窗口中按标号顺序进行如下设置:
图1.4选择硬件仿真F2812芯片驱动
(4)接着在下面的窗口中按标号顺序进行如下选择:
图1.5设置gel文件
(5)在出现的窗口按标号顺序进行如下设置:
图1.6加入gel文件
(6)在出现的窗口按标号顺序进行如下设置:
图1.7退出ccs设置界面
(7)在出现的窗口中按标号顺序进行如下设置:
图1.8保存退出
以上设置完成后,CCS已经被设置成Emulator的方式(用仿真器连接硬件板卡的方式),并且指定通过ICETEK-5100USB仿真器连接ICETEK–F2812-A评估板。
如果您需要一直使用这一方式就不需要重新进行以上设置操作了
1.3CodeComposerStudio入门
一、实验目的
1、掌握CodeComposerStudio3.3的安装和配置步骤过程。
2、了解DSP开发系统和计算机与目标系统的连接方法。
3、了解CodeComposerStudio3.3软件的操作环境和基本功能,了解TMS320C28xx软件开发过程。
(1)学习创建工程和管理工程的方法。
(2)了解基本的编译和调试功能。
(3)学习使用观察窗口。
(4)了解图形功能的使用。
*CodeComposerStudio3.3主要完成系统的软件开发和调试。
它提供一整套的程序编制、维护、编译、调试环境,能将汇编语言和C语言程序编译连接生成COFF(公共目标文件)格式的可执行文件,并能将程序下载到目标DSP上运行调试。
*用户系统的软件部分可以由CCS建立的工程文件进行管理,工程一般包含以下几种文件:
-源程序文件:
C语言或汇编语言文件(*.ASM或*.C)
-头文件(*.H)
-命令文件(*.CMD)
-库文件(*.LIB,*.OBJ)
二、实验步骤
1、实验准备
由于本实验采用软仿真模式,不需硬件设备。
2、设置CodeComposerStudio3.3在软仿真(Simulator)方式下运行
3、启动CodeComposerStudio3.3
成功地启动了CCS后会出现如下窗口:
注:
下面窗口是打开了所有CCS软件功能后显示的。
图1.9CCS软件界面介绍
实际上打开的CCS界面没有上图所示的那么多内容。
原始的刚打开的CCS界面包含如下图的基本元素:
图1.10初始CCS界面
图中的其他部分都是在工作中根据需要打开的。
而且图像和图形显示窗口打开时,还要做一些相关的参数设置才能正常使用,具体的设置方法我们留到后面实验中应用时再详细说明。
4、创建工程
(1)创建新的工程文件
(2)选择菜单“Project”的“New…”项。
图1.11创建工程文件
如下图,按编号顺序操作建立volume.pjt工程文件:
Location选项可选择任意目录。
图1.12新建工程
展开主窗口左侧工程管理窗口中“Projects”下新建立的“volume.pjt”,其各项均为空。
(2)在工程文件中添加程序文件:
选择菜单“Project”的“AddFilestoProject…”项;在“AddFilestoProject”对话框
中选择文件目录为C:
\ICETEK\F2812\DSP281x_examples\Lab0101-UseCCS,改变文件类型为“CSourceFiles(*.c;*.ccc)”,选择显示出来的文件“volum.c”;重复上述各步骤,添加C:
\ICETEK\F2812\DSP281x_examples\Lab0101-UseCCS\volume.cmd文件到volum工程中;添加C:
\CCStudio_v3.3\c2000\cgtools\lib\rts2800_ml.lib。
(3)编译连接工程:
选择菜单“Project”的“RebuildAll”项,或单击工具条中的按钮;
注意编译过程中CCS主窗口下部“Build”提示窗中显示编译信息,最后将给出错误和警告的统计数。
5、编辑修改工程中的文件
(1)查看工程文件
展开CCS主窗口左侧工程管理窗中的工程各分支,可以看到“volume.pjt”工程中包
含“volume.h”、“rts2800.lib”、“volume.c”和“volume.cmd”文件,其中第一个为程序在编译时根据程序中的“include”语句自动加入的。
(2)查看源文件
*双击工程管理窗中的“volume.c”文件,可以查看程序内容。
可以看到,用标准C
语言编制的程序,大致分成几个功能块:
-头文件。
描述标准库程序的调用规则和用户自定义数据、函数头、数据类型等。
具体
包含哪一个头文件,需要根据程序中使用了哪些函数或数据而定。
比如:
如果程序中
使用了printf函数,它是个标准C提供的输入/输出库函数,选中“printf”关键字,按
Shift+F1会启动关于此关键字的帮助,在帮助信息中可发现其头函数为stdio.h,那么
在此部分程序中需要增加一条语句:
#include“stdio.h”。
-工作变量定义。
定义全局变量。
-子程序调用规则。
这部分描述用户编制的子程序的调用规则。
也可以写到用户自己编
制的.h文件中去。
-主程序。
即main()函数。
它可分为两部分:
变量定义和初始化部分、主循环部分。
主
循环部分完成程序的主要功能。
-用户自定义函数。
这个程序是一个音频信号采集、处理输出的程序。
程序的主循环中调用自定义的函数
read_signals来获得音频数据并存入输入缓存inp_buffer数组;再调用自定义函数
write_buffer来处理音频数据并存入输出缓存;output_signals将输出缓冲区的数据送输出设备;最后调用标准C的显示信息的函数printf显示进度提示信息。
整个系统可以完成将输入的音频数据扩大volume倍后再输出的功能。
read_signal子程序中首先应有从外接AD设备获得音频数据的程序设计,但此例中由
于未采用实际AD设备,就未写相应控制程序。
此例打算用读文件的方式获得数据,模拟代替实际的AD输入信号数据。
write_buffer子程序中首先将输入缓冲区的数据进行放大处理,即乘以系数volume,
然后放入输出缓冲区。
output_signals函数完成将处理后的设备输出的功能,由于此例未具体操作硬件输出设
备,所以函数中未写具体操作语句。
*双击工程管理窗中的“volume.h”文件,打开此文件显示,可以看到其中有主程序中
要用到的一些宏定义如“BUF_SIZE”等。
*volume.cmd文件定义程序所放置的位置,此例中描述了F2812的存储器资源,指定了程序和数据在内存中的位置。
比如:
它首先将可用存储器分为八个部分,每个区给定起始地址和长度(区域地址空间不允许重叠);然后指定经编译器编译后产生的各模块放到哪个区。
这些区域需要根据硬件的具体情况来确定。
(3)编辑修改源文件及编译程序
打开“volume.c”,找到“main()”主函数,将语句“input=inp_buffer;”最后的分号去
掉,这样程序中就出现了一个语法错误;重新编译连接工程,可以发现编译信息窗口出现发现错误的提示;双击红色错误提示,CCS自动转到程序中出错的地方;将语句修改正确(将语句末尾的分号加上);重新编译;注意,重新编译时修改过的文件被CCS自动保存。
(4)修改工程文件的设置
图1.13修改工程文件
通过以上设置操作,重新编译后,程序中的用户堆栈的尺寸被设置成1024个字。
6、基本调试功能
(1)下载程序:
执行FileLoadProgram,在随后打开的对话框中选择刚刚建立的
C:
\....\Debug\volume.out文件。
(2)设置软件调试断点:
在项目浏览窗口中,双击volume.c激活这个文件,移动光标到main()行上,单击鼠标右键选择ToggleBreakpoint或按F9设置断点(另外,双击此行左边的灰色控制条也可以设置或删除断点标记)。
(3)利用断点调试程序:
选DebugRun或按F5运行程序,程序会自动停在main()函数上。
①按F10执行到write_buffer()函数。
②再按F11,程序将转到write_buffer函数中运行。
③此时,为了返回主函数,按shift-F11完成write_buffer函数的执行。
④再次执行到write_buffer一行,按F10执行程序,对比与F11执行的不同。
提示:
在执行C语言的程序时,为了快速的运行到主函数调试自己的代码,可以使用DebugGomain命令,上述实验中的使用的是较为繁琐的一种方法。
7、使用观察窗口
(1)执行ViewWatchWindow打开观察窗口。
(2)在volume.c中,用鼠标双击一个变量(比如num),再单击鼠标右键,选择“QuickWatch”,CCS将打开QuickWatch窗口并显示选中的变量。
(3)在volume.c中,选中变量num,单击鼠标右键,选择“AddtoWatchWindow”,CCS将把变量添加到观察窗口并显示选中的变量值。
(4)在观察窗口中双击变量,则弹出修改变量窗口。
此时,可以在这个窗口中改变变量的值。
(5)把str变量加到观察窗口中,点击变量左边的”+”,观察窗口可以展开结构变量,并且显示结构变量的每个元素的值。
8、文件输入/输出
下面介绍如何从PC机上加载数据到DSP上,用于利用已知的数据流测试算法。
(1)打开volume.c,找到Read_signals(input),F9设断点
(2)Debug菜单——>Breakpoints,打开断点管理窗口
(3)选中Read_signals(input)所在断点行,点右键菜单,选择Propertywindow...,打开断点属性页
(4)在Action列表框中,选择Readdatafromfile,然后在下边的条目中选择文件名,如sine2.dat
(5)WrapAround项目打勾,显示为True,让文件读到结尾时反绕到文件开头
(6)StartAddress填写文件数据填充到内存的位置,可以填写input,也可以填写数组的地址
(7)Length填写每次从文件中读出的数据长度,填写0x64,或者十进制数100
(8)点击该属性页上端的Sumbitchange按钮,保存设置,如图1.14所示
(9)此时,会出现一个类似播放器的窗口,可以显示和控制从文件读取数据的进度。
图1.14加载数据文件
配置好Probe断点和与之关联的事件后可以通过图形功能显示数据。
9、图形功能简介
为了更加直观地显示数据波形,可以使用Graph功能,如图1.15所示。
(1)View菜单——>Graph——>Time/Freq...,打开图形属性对话框
(2)缺省是单个图形的显示,SingleTime,在起始地址处填写input,采集缓冲区长度填写100,整个图显示的长度200,即,一张图要两次读取文件才能显示完整。
点击OK,显示出图形窗口,点击右键清显示。
(3)选择DSPDatatype为16位signedinteger
(4)F5运行程序,可以看到随着上述播放器的进度,内存数据变化,刷新图形,sine2波形也会随之变化。
(5)改变SingleTime为DualTime,在起始地址low处填写output,将输出波形显示在下端。
(6)再次运行程序,可以看到输入、输出波形的同时显示
图1.15设置图形显示功能
10、退出CCS。
三、实验结果
通过对工程文件“volume”的编译、执行后得到结果的图形显示如下:
图1.1.8结果显示
设计实验:
(1)分析数据文件的格式,并完成y=100sinωt+10sin3ωt一周期32点数据文件的构造。
(2)将该数据文件导入CCS3.3中,并进行显示
实验2TMS320F2812的C及汇编语言编程
一、实验目的
1、用标准C及汇编语言编制相同功能的程序,并在DSP中进行调试。
2、学习编制连接命令文件,并用来控制代码的连接。
3、熟悉仿真软件CCS3.3的使用方法。
4、对比C语言、汇编语言生成机器码的效率。
二、实验原理
1、标准C语言程序
CCS支持使用标准C语言开发DSP应用程序。
当使用标准C语言编制的程序时,其源程序文件名的后缀应为.c(如:
volume.c)。
CCS在编译标准C语言程序时,首先将其编译成相应汇编语言程序,再进一步编译成目标DSP的可执行代码。
最后生成的是coff格式的可下载到DSP中运行的文件,其文件名后缀为.out。
由于使用C语言编制程序,其中调用的标准C的库函数由专门的库提供,在编译连接时编译系统还负责构建C运行环境。
所以用户工程中需要注明使用C的支持库。
2、命令文件的作用
命令文件(文件名后缀为cmd)为链接程序提供程序和数据在具体DSP硬件中的位置分配信息。
通过编制命令文件,可以将某些特定的数据或程序按照设计人员的意图放置在DSP所管理的内存中。
命令文件也为链接程序提供了DSP外扩存储器的描述。
在程序中使用CMD文件描述硬件存储区,可以只说明使用部分,但只要是说明的,必须和硬件匹配,也就是只要说明的存储区必须是存在的和可用的。
3、内存映射(map)文件的作用
设计、开发的DSP程序在调试好后,要固化到系统的ROM中。
为了更精确地使用ROM空间,需要知道程序的大小和位置,通过建立目标程序的map文件可以了解DSP代码的确切信息。
当需要更改程序和数据的大小和位置时,就要适当修改cmd文件和源程序,再重新生成map文件来观察结果。
另外,通过观察map文件,可以掌握DSP存储器的使用和利用情况,以便进行存储器方面的优化工作。
4、程序设计要求
程序流程图:
三、实验步骤
1、实验准备
设置软件仿真模式。
2、建立新的工程文件
(1)双击桌面上图标,
启动CodeComposerStudio3.3。
(2)进行以下设置:
存储目录自己设定
图2.1建立CProgram.pjt
3、编辑输入源程序
(1)C语言程序编写
-先新建源程序窗口:
图2.2新建源文件
-输入源程序:
intx,y,z;
main()
{
x=1;y=2;
while
(1)
{
z=x+y;
}
}
-保存源程序为CProgram.c:
图2.3保存为c文件
(2)命令文件编写(cmd文件)
-如同第
(1)步操作,建立空的源程序窗口。
-输入连接命令文件内容:
-lrts2800.lib
-stack400h
-heap100
MEMORY
{
PAGE0:
PROG(R):
origin=0x3E8000,length=0x10000
PAGE0:
BOOT(R):
origin=0x3FF000,length=0xFC0
PAGE0:
RESET(R):
origin=0x3FFFC0,length=0x2
PAGE0:
VECTORS(R):
origin=0x3FFFC2,length=0x3E
PAGE1:
M0RAM(RW):
origin=0x000000,length=0x400
PAGE1:
M1RAM(RW):
origin=0x000400,length=0x400
PAGE1:
L0L1RAM(RW):
origin=0x008000,length=0x2000
PAGE1:
H0RAM(RW):
origin=0x3F8000,length=0x2000
}
SECTIONS
{
/*22-bitprogramsections*/
.reset:
>RESET,PAGE=0
vectors:
>VECTORS,PAGE=0
.pinit:
>PROG,PAGE=0
.cinit:
>PROG,PAGE=0
.text:
>PROG,PAGE=0
/*16-Bitdatasections*/
.const:
>L0L1RAM,PAGE=1
.bss:
>L0L1RAM,PAGE=1
.stack:
>M1RAM,PAGE=1
.sysmem:
>M0RAM,PAGE=1
/*32-bitdatasections*/
.ebss:
>H0RAM,PAGE=1
.econst:
>H0RAM,PAGE=1
.esysmem:
>H0RAM,PAGE=1
}
-如同第
(1)步操作,将文件存为:
CProgram.cmd
(3)将上述编译的源程序加入工程CProgram.pjt,具体操作参考实验1。
(注意加入的是C源程序文件和cmd文件)
4、编译源文件、下载可执行程序
(1)单击菜单“Project”、“RebuildAll”。
如出现CCS编译错误
fatalerror:
file"C:
\\CCStudio_v3.3\\MyProjects\\Motor\\rts2800.lib"
hasaTag_Memory_Modelattributevalueof"1"thatisdifferentthanone
previouslyseen("2");combiningincompatiblefiles
将project下buildoption中advanced下largememorymodel去掉即可
(2)执行FileLoadProgram,在随后打开的对话框中选择刚刚建立的
\debug\CProgram.out文件。
完成后,系统自动打开一个反汇编窗口“Disassembly”,并在其中指示程序的入口地址为“_c_int00”。
5、打开观察窗口
开启CPU寄存器观察窗口:
单击菜单View->Registers->CPURegisters(调试C语言程序也可不观察此项)。
6、观察程序运行结果
在“Disassembly”代表程序运行位置的绿色箭头指向程序的入口地址,程序将从此处开始执行。
(1)选择菜单中Debug->GoMain,CCS自动打开CProgram.c,程序会停在用户主程序入口main上,这从反汇编窗口和CProgram.c窗口中的指示箭头位置可以看出。
(2)在内存观察窗口中观察变量的值:
选择“View”菜单中“Memory…”项,在“MemroyWindowOptions”窗口中的“Adress”项中输入&x,单击“OK”完成设置;“Memory”窗口中x的当前取值显示在第1个地址的后。
(3)将变量x、y、z分别加入观察窗口:
在源程序中双击变量名,再单击鼠标右键,选择“AddtoWatchWindow”。
这时,这3个变量还未作初始化。
(4)单步运行2次,在观察窗中观察到变量x、y被赋值。
变化的值被显示成红色。
同时在“Memory”窗口中也能观察到x和y值的改变。
(5)再单步运行,可观察到z的值被计算出来。
双击观察窗口中变量x、y在“Value”栏中的取值并修改成其他取值,单步运行后观察结果。
(6)双击观察窗口中变量x、y在“Value”栏中的取值,并修改成0;选择菜单Debug->Restart,返回程序起点。
(7)重新单步运行程序,观察在CPU寄存器窗口中,各寄存器使用情况,观察哪个寄存器参与了运算。
7、内存映像文件
(1)选择菜单Project->BuildOptions…,启动“BuildOptions”工程设置对话框。
(2)单击“Linker”属性页,在“MapFilename”项中观察生成的map文件名和路径。
(3)单击“取消”退出。
8、对照观察map文件和cmd文件的内容
(1)选择菜单File->Open…,将找到
C:
\Debug目录,将文件类型改为“MemoryMapFiles”,选择CProgram.map文件、打开。
(2)打开CProgram.cmd文件。
(3)程序的入口地址:
map文件中“ENTRYPOINTSYMBOL”中说明了程序入口地址(_c_int00)。
(4)内存使用情况:
-map文件中“MEMORYCONFIGURATION”标明了程序占用RAM的使用情况,共
占用93H个存储单元。
-观察map文件中的“SECTIONALLOCATIONMAP”段,可以看出CProgram.obj的入口地址为0x3e801e,这也是main函数的入口地址