实验1文档格式.docx
- 文档编号:21674728
- 上传时间:2023-01-31
- 格式:DOCX
- 页数:19
- 大小:251.31KB
实验1文档格式.docx
《实验1文档格式.docx》由会员分享,可在线阅读,更多相关《实验1文档格式.docx(19页珍藏版)》请在冰豆网上搜索。
3、实验步骤:
1.准备工作
在D盘下,建立以自己学号命名的子目录,(如:
D:
\DSP\2013073006)以后自己的所有实验程序都在此子目录下运行。
将实验一的文件夹拷贝至自己的子目录内。
在
PC
机的
软件仿真环境(Simulator)下,选择
TMS320C5416
软件仿真模式,并在此模式下进行实验。
2.预习实验程序
实验一提供了三个有关程序:
汇编主程序
test1.asm、中断矢量处理程序
vectors.asm
及命令文件
test1.cmd(参见实验一参考程序)。
(1)读懂主程序
test1.asm,分析程序中各操作所提供的原始数据、中间过程和最终结果。
在实验前先填写主程序注释中的括号部分,然后通过实验验证自己的分析正确否。
(2)通过预习程序(特别是预习
test1.cmd),了解该工程中
格式段的划分及存储器的分配情况。
(3)在程序
中有从复位中断(RESET)到主程序入口
c_int00
的一些汇编指令。
通过阅读它们,了解在
软件仿真环境(Simulator)下,怎样编写中断矢量入口的处理程序。
3.运行CCSsetup,选择“C5416DeviceSimulator”,如图1-1所示。
单击“Import”按钮,即可将其添加到系统配置(System
Configuration)中,单击“Save
and
Quit”按钮,就可以启动CCS在C5416软件仿真环境下工作。
图1
CCS安装界面
4.创建一个新的工程项目
启动CCS。
从CCS的主菜单“Project”下选择子菜单“New”,将出现“Project
Creation”对话框,如图1-2所示。
在对话框的“Project
Name”处输入“test1”,在“Location”处用浏览方式选入在第1步中建立的文件夹,在“Project
Type”处选择“Executable(.out)”类型,在“Target”中选择
所配置的目标DSP类型,最后单击“Finish”完成。
5.向工程添加各类型文件
(1)在主菜单中单击“Project”,选择“Add
Files
to
Project”命令,然后在弹出的添加文件对话框中找到文件
vectors.asm及test1.asm,单击“Open”。
也可在工程图标处单击鼠标右键,然后在快捷菜单中选择“Add
Project”,或将文件拖入工程视图窗口的文件夹中)。
(2)在主菜单中单击“Project”,选择“Add
Project”命令,使用上述同样的方法选择链接命令文件“test1.cmd”,单击Open。
图2新建工程窗口
(注:
在一个工程项目中,通常包括源程序、库文件、链接命令文件和头文件等。
本工程项目中没有库文件和头文件,因此不需添加它们)。
实验所需的3个文件到此添加完毕。
在工程浏览窗中,单击工程名左边的“+”标记展开工程文件列表,如图3所示。
在工程浏览窗里的某个文件名上双击鼠标,即可在CCS的编辑窗中看到该文件的源代码。
图3展开工程文件列表图4
装载程序
6.建造和装载程序
在主菜单中单击“Project”,选择“Rebuild
All”命令或者单击工具条图标,即可自动完成编译、汇编和连接这三个步骤,并在底部窗口中同步的显示汇编连接信息。
连接完毕,将生成一个“test1.out”文件,默认存放在目录“test1”下的“debug”目录内。
在修改文件后,选择“ReBuild
All”命令,或者单击工具条图标,CCS将重新对工程中的所有文件进行编译、汇编和连接。
建造完毕后,在主菜单中单击“File”,选择“Load
Program”如图4所示。
在对话框中选择文件test1.out,单击“Open”打开。
这样,CCS就将可执行代码载入到目标DSP中。
选择主菜单“View”下的“Mixed
Source/ASM”,将同时看到汇编源代码和相应的机器代
码,如图5所示。
如果要查找某条汇编指令的功能,只需将光标放在该汇编指令的前面,并
按F1键,CCS就会搜索并显示该条指令的帮助信息,这在调试中是很有用的。
图5观察指令代码
7.运行和调试
选择主菜单“Debug”下的“Run”或单击工具按钮,可使程序全速运行。
通过“Debug”
下的“Halt”或单击工具按钮可停止程序的运行。
设置断点的方法是:
把光标移到某一行,按F9键或单击工具按钮,在这一行前面会出现一个红点,表示在该行加了一个断点。
8.寄存器的察看和修改
选择主菜单“View”下的“Registers——>
CPU
Registers”或点击CCS操作界面左侧的调试工具栏图标,就会在CCS工作区底部打开一个CPU寄存器窗口,其中列出了所有CPU寄存器的值,并列出了ST0、ST1和PMST中有特殊意义的位和位域,如图6所示。
要修改某个寄存器值,只要双击该寄存器名称,既可出现“Edit
Register”对话框,只要在“Value”文本框中输入新的值,单击“Done”按纽,即修改成功。
图6
CPU寄存器窗口
选择主菜单“View”下的“Memory”或点击CCS操作界面左侧的调试工具栏图标,就会弹出一个“MemoryWindowOptions”对话框,如图7所示。
选择Data或Program,输入存储器的地址,即可观察以该存储器地址开始的内容,如图1-8所示。
要修改某个存储器地址中的内容,可以双击该地址,在出现的对话框中修改即可。
图
1-7
存储器窗口
1-8
存储器显示及修改对话框
图7存储器显示
9.观察存储器映象Map文件
选择主菜单“File”下的“Open”,打开test1.Map文件,观察存储器的配置、段的定位及全局符号等各项内容,将它们与test1.cmd文件中的设置进行比较,进一步理解cmd文件的作用。
四、实验结果:
1、实验源程序清单及运行结果。
(1)主程序
test1.asm
;
************************************************************************;
实验一集成开发环境
应用基础
************************************************************************
.title"
example1.asm"
.mmregs;
使能存储器映像寄存器
stack.usect"
STACK"
10h
.def_c_int00
------------------------------------------------------------------------------
.text
_c_int00:
stm#
stack+10h,
SP;
设置堆栈指针
stm#0x0000,
SWWSR;
所有存储器未加软件延迟
================================================
stm#0x70,AR2
st#0xff80,*AR2
SXM
的作用
当
=0
时,进行无符号数的加载
rsbxSXM
nop
ld*AR2,
A;
(A)=(00
0000
FF80)
------------------------
=1
时,进行有符号数的加载
ssbxSXM
(A)=(FF
FFFF
OVM
OVM=0
时,对溢出不进行处理
rsbxOVM
ld#0x7fff,
16,
B
add#0x7fff,
B;
(B)=(00
FFFE
0000)
OVM=1
时,对溢出进行处理
ssbxOVM
add#0x7fff,
7FFFF
FFFF)
;
C16
C16=0
时,进行
32
位双精度数加法运算
ssbxOVM
ld#0x0001,
A
dstA,
*AR2
or#0xffff,
rsbxC16
nop
dadd*AR2,
A,
0003
7FFE)
C16=1
时,进行两个独立的
16
位数加法运算
ssbxC16
(B)=((00
0002
FRCT=0
时,对乘积不进行移位
ld#0x1234,
rsbxFRCT
mpya*AR2;
1234)
FRCT=1
时,对乘积左移
位
ssbxFRCT
2468)
观察测试位
TC
bitf*AR2,
#0x8000;
(TC)=(0)
#0x0001;
(TC)=
(1)
C
ld#0x8000,
maxA;
(C)=(0)
minB;
(C)=
(1)
OVA,
OVB
rsbxOVA
add#0xffff,
(OVA)=(0)
(OVA)=
(1)
dead_loop:
bdead_loop
.end
(2)命令文件
test1.cmd
vectors.obj
test1.obj
-otest1.out
-m
test1.map
MEMORY
{
PAGE
0:
EPROM:
org=0xE000,
len=0x100
VECS:
org=0xFF80,
len=0x80
1:
SPRAM:
org=0x0060,
len=0x0020
DARAM:
org=0x0080,
}
SECTIONS
{.text
:
>
EPROM
.data:
.bss
SPRAM
1
STACK
DARAM
vectors:
VECSPAGE
(3)中断矢量处理程序
vectors.asm
.ref
_c_int00
.sect
"
vectors"
int_RESET:
b_c_int00;
复位时跳转至_c_int00
.space124*16;
没有其它中断应用,为它们留出空间
(4)运行结果(如图8所示)
图8实验结果
2、程序分析
(1)说明3个文件的作用,说明各个文件中伪指令的作用。
1)text1.asm文件为实验主程序。
Vectors.asm文件用于处理中断,在本程序中规定了上电复位的跳转地址,并屏蔽其他用不到的中断。
Test1.cmd文件是存储器分配说明文件,主要功能是指定工程中的各段分配到那段存储器中,比如有片内RAM(起始地址,大小)和SDRAM等,为连接器提供段定位信息。
2)EPROM程存空间为从E000h开始的100h个存储单元,SPRAM数据空间为从0060h开始的32个存储单元,VECS程存空间为从FF80h开始的128个存储单元,DARAM数据空间为从0080h开始的256个存储单元。
设置的.text段和.data段在0页EEPROM存储空间,.bss段在1页SPRAM存储空间,STACK段在1页DARAM存储空间,Vectors段在0页VECS存储空间。
3)ext1.asm中使用了以下伪指令:
.title
“example.asm”允许汇编器在每页顶部打印标题
.mmregs将存储映射寄存器送入符号表中
.usect“STACK”为未初始化变量保留存储空间的自定义段STACK
.def
_c_int00在当前模块中定义符号_c_int00,使其在其他模块中可使用
.text设置已初始化段.text
.end终止汇编,放置在源程序最后一行
Vectors.asm中使用了以下伪指令:
_c_int00在模块test1.asm中定义的符号_c_int00,在当前模块中可用
“vectors”设置自定义已初始化段vectors
.space
124*16在当前段中保留指定的位,共124位*16bit
.end终止汇编,放置在源程序最后一行
Test1.cmd中使用了以下伪指令:
.text
设置已初始化段.text
.data
设置已初始化段.data
设置未初始化段.bss
(2)分析主程序的结构和功能,对每条指令进行注释,写出执行结果。
允许汇编器在每页顶部打印标题
10h;
为未初始化变量保留存储空间的自定义段STACK
.def_c_int00
.text;
stm#0x70,AR2;
0x70→AR2
st#0xff80,*AR2;
0xff80→0x70h
rsbxSXM
SXM=0时,((AR2))→A
ssbxSXM;
SXM=1时,((AR2))→A
rsbxOVM
OVM=0时,不处理溢出
B;
0x7fff左移16位后送B
ssbxOVM
0VM=1时,处理溢出
B;
;
ssbxOVM;
当OVM=1时,处理溢出
ld#0x0001,
A
(A)=00
0001
0000
A;
7FFF
dstA,
*AR2
暂存00
or#0xffff,
A
FFFF
rsbxC16
Nop
等待流水线
dadd*AR2,
ssbxC16;
OVM=1,处理溢出
ld#0x1234,
0x1234左移16位后送A,(A)=00
1234
mpya*AR2;
#0x8000;
#0x0001;
ssbxSXM;
当SXM=1时,进行有符号数的加载
A;
A=00
B;
B=FF
8000
maxA;
=====================================
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 实验
![提示](https://static.bdocx.com/images/bang_tan.gif)