软件平台:CCS
V5.4.0
硬件平台:SEED-DEC5502
说明:创建工程见“DspBios V542_CSL LED测试程序1”,该工程是基于DspBios
V5.4.2.01.09例程mail
说明:
邮箱(不用我们平时用的邮箱)是用来做任务同步的,可以进行任务之间的切换。对于使用过操作系统的人,应该比较清楚,我不做详细叙述。
在DSP/BIOS中邮箱机制,有这样一个结构体
typedef struct MsgObj {
Int id; /* writer task id */
Char val; /* message value */
} MsgObj, *Msg;
通过英文注释也能比较清楚的了解,一个是邮箱发送者的id号,一个是邮箱发送过来的消息。具体使用见附件的代码。
工程设置的步骤:
A、 双击打开mailbox.tcf,在TSK中删除writer1以及writer2任务,同时修改writer0的优秀级为2,使优先级高于reader任务(上面的修改是为了更好的帮助我们理解)
B、 关闭tcf配置窗口,并再修改mailbox.c文件为附件中内容,并在工程的Properties中将CSL库文件的路径添加进去,见附图1
C、 下载运行,调用RAW Logs查看输出结果,记住选择查看trace的输出结果(这样比较清晰),见附图2
注意:完成步骤E后运行会提示#35 #error NO CHIP DEFINED,解决方法为:选择工程,右击选择Properties,然后Build->C5500
Compiler->Advanced Options->Predefined Symbols中添加"CHIP_5502"
附件:
-
#include <std.h>
-
-
#include <log.h>
-
#include <mbx.h>
-
#include <tsk.h>
-
-
#include "mailboxcfg.h"
-
-
-
#define NUMMSGS 2 /* number of messages */
-
-
#define TIMEOUT 10
-
-
typedef struct MsgObj {
-
Int id; /* writer task id */
-
Char val; /* message value */
-
} MsgObj, *Msg;
-
-
-
Void reader(Void);
-
Void writer(Arg id_arg);
-
-
/*
-
* ======== main ========
-
*/
-
Void main()
-
{
-
/* Does nothing */
-
}
-
-
/*
-
* ======== reader ========
-
*/
-
Void reader(Void)
-
{
-
MsgObj msg;
-
Int i;
-
-
for (i=0; ;i++) {
-
-
/* wait for mailbox to be posted by writer() */
-
if (MBX_pend(&mbx, &msg, TIMEOUT) == 0) {
-
LOG_printf(&trace, "timeout expired for MBX_pend()");
-
break;
-
}
-
-
/* print value */
-
LOG_printf(&trace, "read '%c' from (%d).", msg.val, msg.id);
-
}
-
LOG_printf(&trace, "reader done.");
-
}
-
-
/*
-
* ======== writer ========
-
*/
-
Void writer(Arg id_arg)
-
{
-
MsgObj msg;
-
Int i;
-
Int id = ArgToInt (id_arg);
-
-
for (i=0; i < NUMMSGS; i++) {
-
/* fill in value */
-
msg.id = id;
-
msg.val = i % NUMMSGS + (Int)('a');
-
-
/* enqueue message */
-
MBX_post(&mbx, &msg, TIMEOUT);
-
-
LOG_printf(&trace, "(%d) writing '%c' ...", id, (Int)msg.val);
-
-
/* what happens if you call TSK_yield() here? */
-
/* TSK_yield(); */
-
}
-
-
LOG_printf(&trace, "writer (%d) done.", id);
-
}
附图
附图1
附图2
阅读(6540) | 评论(0) | 转发(0) |