实验二:DSP_BIOS同步对象实验

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

实验2:CCS中DSP/BIOS操作实验
一、实验工程与目的
学习DSP/BIOS中线程task、旗语、邮箱的使用方法,同时进一步练习C语言编程及调试。

二、实验设备
计算机,CC版软件
三、实验内容与步骤
1.配置CCS软件
在桌面上翻开,按照图1所示配置。

然后点击“Save & Quit〞按钮后退出CCS设置工具,启动CCS。

图1 CCS配置界面
2.建立带有DSP/BIOS的工程文件
〔1〕在桌面上有一个名为tsktest.c的文件,也就是我们实验的源程序文件。

〔2〕双击桌面上的图标,启动CCS。

〔3〕在Project菜单下点击New,在出现的工程创立窗口中输入工程文件名称。

名称任意,例如“tsktest〞。

如图2所示:
\
图2 建立工程
4〕拷贝到当前工程的目录下,然后再参加到工程中,如图3所示:
图3
5)在工程文件查看窗口中翻开“+〞号展开下面的文件,然后双击文件tsktest.c,在主窗口〔右半窗口〕显示相应文件的源程序,出现图4,此时可以浏览并检查源程序。

图4 浏览源程序和工程
3.向工程中参加DSP/BIOS配置文件
该工程是一个任务、邮箱、旗语的综合测试例程,任务测试局部为3个函数taskA/taskB/taskC,其代码一样。

为方便理解,故放在这3个函数中。

void taskA(Arg id_arg)
{
Int id = ArgToInt (id_arg);
Int i;
LOG_printf(&trace, "Task %d Begin Working...",id);
for (i = 0; i < NLOOPS ; i++)
{
LOG_printf(&trace, "Loop Num = %d: Task ID = %d", i, id);
TSK_yield();
}
LOG_printf(&trace, "Task %d DONE", id);
}
这三个函数每个都是一个单独的任务,所以需要在DSP/BIOS环境中运行,下面新建并参加DSP/BIOS配置文件。

1〕向工程中参加DSP/BIOS系统,步骤为点击菜单“File->New->DSP/BIOS configuration〞,如图5所示:
图5 新建DSP/BIOS配置文件
出现图6所示界面,选择ti.platforms.sim64xx,然后点击OK。

2)点击保存图标,把文件保存为tsktest.tcf,图7所示。

3〕用和参加tsktest.c程序同样方法将tsktest.tcf参加工程,注意文件类型选择*.tcf,否那么找不到文件:
参加后的工程如图9所示,DSP/BIOS Config下面有了内容,也就是tsktest.tcf:
图9 参加DSP/BIOS后的工程
4)修改HEAP的配置,在MEM上面右键,然后“Properties〞(图),弹出内存的属性配置,如图10和11所示:
图10修改MEM的属性
然后选中No Dynamic Memort Heaps后,确定即可。

图11 修改MEM属性
4.静态建立任务
接下来对DSP/BIOS进展配置,参加三个线程task0/task1/task2,分别用来调用taskA/taskB/taskC三个函数。

这三个函数功能是在日志中写入运行状态,用来演示线程是同时、并行运行的。

在工程中双击tsktest.tcf文件,翻开BIOS配置界面。

然后点开〞scheduling〞,新建一个任务(task),如图12所示:
图12 建立任务
然后按照同样的方法分别建立task1、task2,最后如图13所示。

图13 建立3个任务task0/task1/task2
修改任务的属性,在task0上点右键,然后选择“属性〞,按照图14所示填写内容,它调用函数taskA,第一个参数0作为初始值传入函数taskA中。

图14 设置task0的属性这个值作为参数传入线程函数中。

再分别设置task1、task2的属性,其调用的函数分别是taskB和taskC;传入的参数分别是1和2。

5.静态建立信号量
建立信号量sem,如图15所示:
图15 建立信号量sem
5.静态建立邮箱
1〕在DSP/BIOS中建立了一个邮箱mbx〔图16所示〕,大小为24字节,长度是2,用来存放构造体数据。

图16 建立邮箱并设置
2〕再为邮箱建立任务线程,分别是读线程taskMbx1和邮箱写线程taskMbx2〔图17所示〕,用来读写邮箱,分别调用函数mbxReader和mbxWriter。

图17 邮箱测试线程
3〕在DSP/BIOS中建立了旗语sem,旗语测试采用线程triggerSem,调用函数tskSem,如图18所示。

图18 建立旗语测试线程
4)除此之外,为方便调试和跟踪程序,在DSP/BIOS中建立了LOG对象trace,用来显示消息,如图19所示。

图19 建立LOG对象trace
到此就完成了对象的创立,开场编译程序,点击图标进展编译。

此时会报错,再把文件tsktestcfg d参加工程后重新编译即可。

6.运行程序,观察结果
〔1〕测试和观察线程
1)编译程序,点击图标,编译成功后,点击File/Load Program…,显示图20所示界面。

图20 载入程序
2)点击Debug菜单,选择tsktest.out文件后点击按钮“翻开〞,加载程序。

3)点击菜单DSP/BIOS下的message log菜单〔图21〕。

图21 message Log菜单
弹出图7所示界面,显示出message log窗口
图22 message log窗口
4)单击工具条中的按钮或按F5键,或选择Debug→Run,开场运行程序。

等待一会儿后,在message log中显示图8所示信息,表示了task0、task1、task2的执行情况。

图23 message Log信息
该信息说明,task0/task1/task2先后启动,同时运行。

图24 去除所有LOG消息
5〕在message Log窗口中点鼠标右键,在弹出窗口中选择Clear , 去除所有消息。

6〕,双击变量g_trigger,使之变成全选状态,然后右键,在弹出的菜单中选择Add Watch Window〔图25〕。

图25 增加变量g_trigger进入观察窗口
显示图26所示界面。

图26 观察g_trigger变量的值
7〕点击Value 0,然后把0修改成1;再右键在弹出的菜单中点击Refresh(图27)。

图27 更新Watch Window
在Log窗口中出现mbx发送和接收的日志,说明已经触发了旗语,从而完成一次邮箱发送和读取操作。

可以重复这个过程,能够看到mbx的id号一直在增加。

四、实验说明
本实验是从建立工程开场,熟悉这个过程后,也可以直接翻开文件夹中的工程,从第6步开场运行程序。

如有侵权请联系告知删除,感谢你们的配合!
实用文档.。

相关文档
最新文档