1、建立新的工程文件:建立 CProgram.pjt
2、新建c语言程序文档,
main()
{
int x,y,z;
x=1; y=2;
while ( 1 )
{
z=x+y;
}
}
保存源程序为 CProgram.c,在工程路径下。
3、连接命令文件:建立空的源程序窗口,输入连接命令文件内容:
-l rts64plus.lib
-l evmdm6437bsl.lib
-stack 0x00001000 /* k Stack e Size */
-heap 0x00001000 /* p Heap e Size */
MEMORY
{
L2RAM: o o o o = 0x10800000 l = 0x00020000
DDR2: o o o o = 0x80000000 l = 0x10000000
}
SECTIONS
{
.bss > L2RAM
.cinit > L2RAM
.cio > L2RAM
.const > L2RAM
.data > L2RAM
.far > L2RAM
.stack > L2RAM
.switch > L2RAM
.sysmem > L2RAM
.text > L2RAM
.ddr2 > DDR2
}
保存为CProgram.cmd,在工程路径下。 将上述编译的源程序加入工程 CProgram.pjt。
4、 ⑴ 单击菜单“Project ”、 “Rebuild All ” 。
⑵ 执 行 File->Load Program , 在 随 后 打 开 的 对 话 框 中 选 择 刚 刚 建 立 的CProgram.out 文件。完成后,系统自动打开一个
反汇编窗口“Disassembly ” ,并在其中指示程序的入口地址为“_c_int00 ” 。
5.打开观察窗口:开启 CPU 寄存器观察窗口:单击菜单 View->Registers->Core Registers。
6.观察程序运行结果:
⑴ 选择菜单中 Debug->Go Main , CCS 自动打开 CProgram.c,程序会停在用户主程序入口 main 上,这从反汇编窗口和 CProgram.c 窗口中的指示箭头位置可以看出。
⑵ 在内存观察窗口中观察变量的值:
选择“View”菜单中“Memory…”项,在“Memroy Window Options”窗口中的“Adress”项中输入&x,单击“OK” 完成设置; “Memory”窗口中 x 的当前取值显示在第 1 个地址的后。
⑶ 将变量 x、y、z 分别加入观察窗口:
在源程序中双击变量名,再单击鼠标右键,选择“Add to Watch Window ” 。这时, 这3 个变量还未作初始化。
⑷ 单步运行 2 次,在观察窗中观察到变量 x 、 y 被赋值。变化的值被显示成红 {MOD}。同时在
“Memory”窗口中也能观察到 x 和 y 值的改变。
⑸ 再单步运行,可观察到 z 的值被计算出来。双击观察窗口中变量 x、y 在“Value”栏
中的取值并修改成其他取值,单步运行后观察结果。
⑹ 双击观察窗口中变量 x、y 在“Value”栏中的取值,并修改成 0;选择菜单 Debug->Restart,返回程序起点。
⑺ 重新单步运行程序,观察在 CPU 寄存器窗口中,各寄存器使用情况,观察哪个寄存器参与了运算。
7.内存映像文件:
⑴ 选择菜单 Project->Build Options…,启动“Build Options”工程设置对话框。
⑵ 单击“Linker”属性页,在“Map Filename”项中观察生成的 map 文件名和路径。
⑶ 单击“取消”退出。
8.对照观察 map 文件和 cmd 文件的内容:
⑴ 选择菜单 File->Open…,将找到CProgramDebug 目录,将文件类型改为“Memory Map Files ” ,选择 CProgram.map 文件、打开。
⑵ 打开 CProgram.cmd 文件。
⑶ 程序的入口地址:map 文件中“ENTRY POINT SYMBOL”中说明了程序入口地址(_c_int00)。
⑷ 内存使用情况:
----map 文件中“MEMORY CONFIGURATION”标明了程序占用 L2RAM 的使用情况,共占用 0x148c 个存储单元。
----观察 map 文件中的“SECTION ALLOCATION MAP”段,可以看出 CProgram.obj的入口地址为 108012e0H,这也是 main 函数的入口地址。
----用户堆栈段从 10800000 开始,程序运行到 main 函数中后,变量 x、y、z 均开设在栈中。还能看出程序运行都需要调用 rts64plus.lib 中的哪些模块。
9.改变内存分配:修改 cmd 文件中的L2RAM: o = 0x10800000 l = 0x00020000改为L2RAM: o = 0x10800000 l = 0x00010000重新编译工程,观察 map 文件中有何变化。
10.退出 CCS。