(toppers-users 3609) Re: タスクを生成するだけでE_CTX
高橋和浩@nifty
takahashi_kazuhiro @ nifty.com
2011年 10月 15日 (土) 08:08:51 JST
おはようございます。アライブビジョンソフトウェアの高橋です。
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