(toppers-users 2792) Re: メールボックスの機能について
takaya_kakizaki @ gmx.yamaha.com
takaya_kakizaki @ gmx.yamaha.com
2008年 8月 7日 (木) 15:43:52 JST
杉山さま、宿口さま
柿崎です。
この課題の趣旨とは離れますが、
例のバグの回避法として宿口さんの例をださなかったのは
「タスク間通信にスタック領域を使うのは危険な香りがする」からです。
したがって、こういう場合は定石として固定長メモリプールを使った例を
覚えておいたほうがよいと思います。
----- 以下、想定される危険予知(例) -----
1) 以下のコードをFI4に移植しました。
2) 送信タスクをdel_tskしました(スタック開放)
3) メールボックスがうまく動きません
4) 泥沼デバッグ…
(どちらかというとSWESTネタですね。)
------------------------
柿崎 貴也
ヤマハ株式会社 INFOサウンド開発推進室
E-mail: takaya_kakizaki @ gmx.yamaha.com
SHUKUGUCHI Masahiro <mshukuguchi @ elec.nara-k.ac.jp>
2008/08/07 15:10
users @ toppers.jp へ
返信してください
宛先
users @ toppers.jp
cc
件名
(toppers-users 2791) Re: メールボックスの機能について
Shukuguchi
PS
> 普通は、恥の書きついでに以下のようにすればよいのでしょうか??
いくつかのやり方があります。固定長メモリプールを使用するのも手だと
思いますが、手っ取り早くやるなら
/*
送信タスク
*/
void send_task(VP_INT exinf){
MESSAGE msg_bdy[10];
MESSAGE *msg; //送信パケット
VP p_blk; //送信用固定メモリプール
INT i;
for(i=0;i<10;i++){
msg = &msg_bdy[cnti]
msg->n=i;
strcpy(&msg->buf[0],"thie is test message from task
\r\n");
snd_mbx(MAILBOX,(T_MSG*)msg);
}
}
ですかね(あくまでテストプロとして)
固定長メモリプールを使用する場合は、提示されたコードでよいと思います。