(toppers-users 3619) Re: タスクを生成するだけでE_CTX

霧島遼二 kirishima9315 @ gmail.com
2011年 10月 18日 (火) 09:29:23 JST


高橋様、斉藤様、村中様
返事が遅れて申し訳ありません。桐島です。
皆様のご指摘の通り、スタックサイズが原因でした。
試しにスタックサイズを調整してやると上手くいきました。
スタックにも気を付けないといけなかったのですね。
その辺りを全く気にせずサイズを確保してしまっていたので恥ずかしい限りです。
わざわざTMをインストールして確認していただけたり、たくさんの返答に本当に感謝しています。
どうもありがとうございました。

2011年10月15日8:08 高橋和浩@nifty <takahashi_kazuhiro @ nifty.com>:

> おはようございます。アライブビジョンソフトウェアの高橋です。
>
> TMをインストールして、ビルドしてみました。
> オリジナルのtimer3m.cfgのタスクを追加してみました。(ちょっと横着)
> CRE_TSK(TIMER_TASK, { TA_HLNG, (VP_INT) 0, timer_task, TIMER_PRIORITY,
> STACK_SIZE, NULL });
> CRE_TSK(TIMER_TASK2, { TA_HLNG, (VP_INT) 0, timer_task, TIMER_PRIORITY,
> STACK_SIZE, NULL }); //追加
>
> Jsp14Timer3m.mapは以下のようになります。
> 抜粋
> # SECTION                        ATR TYPE    START  LENGTH ALIGN MODULENAME
> data_NE                          REL DATA    000400 000000 2     START
>                                 REL DATA    000400 000028       SERIAL_MINI
> data_NO                          REL DATA    000428 000000 2     START
> bss_NE                           REL DATA    000428 000000 2     START
>                                 REL DATA    000428 000004       SYSLOG_MINI
>                                 REL DATA    00042C 000002       STARTUP
>                                 REL DATA    00042E 00004A       TASK
>                                 REL DATA    000478 00000E       TIME_EVENT
>                                 REL DATA    000486 000720       KERNEL_CFG
>                                 REL DATA    000BA6 000054
> TASK_EXPANSION
>                                 REL DATA    000BFA 00003E       OAKS16
>                                 REL DATA    000C38 000010       MONITOR
> bss_NO                           REL DATA    000C48 000000 2     START
>                                 REL DATA    000C48 000001       CPU_CONFIG
>                                 REL DATA    000C49 000001
> OAKS16_DEVICE
>                                 REL DATA    000C4A 000052       MONITOR
>                                 REL DATA    000C9C 000001       TIMER3
> program                          REL CODE    0F0000 00006E       START
>
> jspのバージョンとコンパイラのバージョン等の違いから全く一致しないかもしれませんが
> 上記のように、c00H越えしていることが確認できます。
> モニタータスクのワークの途中がエリア外になっているようです。どこがエリア外に
> なるかわかりませんが、そうなるとどのように異常動作するのかもわかりにくいですね。
>
> ですので、マップファイルでC00H以内になるようにスタックサイズを減らしてみるとか
> トライしてみればよいかと思います。
>
> 例:
> タスク起動しないのなら、コンテキスト分も不要かもしれませんが、
> 以下ぐらい減らしてやればいいように思います。
>
> CRE_TSK(TIMER_TASK2, { TA_HLNG, (VP_INT) 0, timer_task, TIMER_PRIORITY, 50,
> NULL }); //追加
>
>
>
> On Fri, 14 Oct 2011 08:48:30 +0900
> 高橋和浩@nifty <takahashi_kazuhiro @ nifty.com> wrote:
>
> > いつもMLを拝見しています。 アライブビジョンソフトウエアの高橋と申します。
> >
> > 外れていたらごめんなさい。単純にメモリ(RAM)が不足しているのではないかと思います。
> > マップファイルを確認してみればその真意がわかると思います。
> >
> > #本当はビルドして確認すればよいのですが、今さらTMインストールしたくないなぁというのが
> > #あります。
> >
> >
> > On Thu, 13 Oct 2011 13:54:12 +0900
> > 霧島遼二 <kirishima9315 @ gmail.com> wrote:
> >
> > > 斉藤様
> > > 桐島です。
> > > エラーが出た周辺のコードですが、初級実装セミナーのOAKS-MINIボード用教材
> > > BeginnerTrainingSeminar0010103/jsp14-m16c-edc-041008/OBJ/TIMER3
> > > にある timer3m.cfg, timer3.c, timer3.h に以下の部分を追加しました。
> > >
> シリアル通信を行った瞬間にE_CTXが繰り返し発生するので、TEST_TASKを生成するところでおかしなことになっているのではないかと思うのですが。
> > >
> > > -------timer3m.cfg-------
> > > INCLUDE("\"timer3.h\"");
> > > CRE_TSK(ENTRY_TASK, { TA_HLNG, 0, entry_task,
> > > DEFAULT_MAIN_PRIORITY,STACK_SIZE, NULL});
> > > CRE_TSK(TIMER_TASK, { TA_HLNG, (VP_INT) 0, timer_task, TIMER_PRIORITY,
> > > STACK_SIZE, NULL });
> > > CRE_TSK(TEST_TASK,{ TA_HLNG, (VP_INT) 0,
> > > test_task,TEST_PRIORITY,STACK_SIZE,NULL}); // 追加
> > > -------------------------
> > >
> > > -------timer3.c-------
> > > /* 一番後ろに追加 */
> > > void
> > > test_task(VP_INT exinf)
> > > {
> > > }
> > > ----------------------
> > >
> > > -------timer3.h-------
> > > /*
> > >  *  タスク優先度の設定
> > >  */
> > > #define DEFAULT_MAIN_PRIORITY  8
> > > #define TIMER_PRIORITY         9
> > > #define TEST_PRIORITY          9 // 追加
> > >
> > >
> > > /*
> > >  *  関数のプロトタイプ宣言
> > >  */
> > > #ifndef _MACRO_ONLY
> > >
> > > extern void entry_task(VP_INT exinf);
> > > extern void  timer_task(VP_INT exinf);
> > > extern void  test_task(VP_INT exinf); // 追加
> > > #endif /* _MACRO_ONLY */
> > > ----------------------
> > >
> > > 2011年10月13日12:47 Saito Naoki <saito.naoki @ nmiri.city.nagoya.jp>:
> > >
> > > > 桐島さん
> > > >
> > > > 斉藤と申します.
> > > >
> > > > エラーが出た周辺のコードなどは見せていただくことは可能でしょうか.
> > > >
> > > >
> > > > (11/10/13 10:42), 霧島遼二 wrote:
> > > > > お世話になります。
> > > > > 桐島と申します。
> > > > > 最近μitronの勉強を始めました。
> > > > > 初級実装セミナーのOAKS-MINIボード用教材でサンプルをボード(OAKS16-MINI
> > > > > FullKit)に実装して動作確認をしていたのですが、試しにTIMER3にCRE_TSKで新
> > > > > しくタスク(中身は空)を追加してみたところ、E_CTX reported by `isig_tim()'
> > > > > in line 63 of `timer.c' というコンテキストエラーが発生します。
> > > > > タスクを追加するだけでこのようなエラーが出るものなのでしょうか。
> > > > > 組み込みは全くの初心者なのでよろしくお願いします。
> > > >
> > > >
> > > >
> > ---
> > アライブビジョンソフトウエア株式会社
> > 高橋和浩
> > 673-0005兵庫県明石市小久保2-2-7幹線ビル4F
> > Email:takahashi_kazuhiro @ nifty.com
> > http://homepage3.nifty.com/ALVS/
> > TEL:078-922-2177
> > FAX:078-597-8290
> > 携帯:080-1495-8094
> > PHS:070-6923-2908
> >
> ---
> アライブビジョンソフトウエア株式会社
> 高橋和浩
> 673-0005兵庫県明石市小久保2-2-7幹線ビル4F
> Email:takahashi_kazuhiro @ nifty.com
> http://homepage3.nifty.com/ALVS/
> TEL:078-922-2177
> FAX:078-597-8290
> 携帯:080-1495-8094
> PHS:070-6923-2908
>
>
-------------- next part --------------
HTMLの添付ファイルを保管しました...
URL: <http://www.toppers.jp/pipermail/users/attachments/20111018/06aba8a0/attachment.html>