10/04/28 06:52:10
>469
1)ter_tskで自タスクは終了できなかったと思う。ext_tskかな
2)それ以外のタスクをter_tskで終了させていいかどうかはタスクの処理
内容によりますね。一般的にはクリティカルセクションがある場合の対策
が必要ですね。
対策としては、クリティカルセクションでディスパッチ禁止にするか
ミューテックスを使う方法と、タスクに終了してくれとメッセージを送って
終わってくれるのを待つ方法だと思う。
471:Be名無しさん
10/04/28 20:28:30
終了させる必要はないんじゃ?
常に実行状態ならないようにしたら
472:Be名無しさん
10/04/28 22:30:56
a
473:Be名無しさん
10/04/28 23:01:47
toppers/jspのsample1に関して質問です。
TASK1,TASK2,TASK3が起動されており、TASK1がまず動作します。
eを押し、ext_tskします。するとTASK2が動作します。
ここまではいいのですが、ここでeを押してもTASK2はextしません。
これはどういうことなんでしょうか?
474:Be名無しさん
10/04/29 00:00:33
>>473
TOPPERSの配布物を使う場合は、付属のドキュメントとキッチリ読むことがまず大事ですね。
後、最初自分もわからなかったのですが、μITRON4.0仕様書に書かれている内容については
ダウンロード対象の配布物に入っていません。実装定義、実装依存部の説明のみです。
さて、ご質問ですが、sample1.cの頭のほうの説明をみましょう、書いてますよ。
475:Be名無しさん
10/04/29 00:15:40
>>474
1,2,3を入力しないとダメなんですね。わかりました。
周期ハンドラは,三つの優先度(HIGH_PRIORITY,MID_PRIORITY,
* LOW_PRIORITY)のレディキューを回転させる.プログラムの起動直後は,
* 周期ハンドラは停止状態になっている.
というのがよくわかりません。 なぜ回転させるんですか?
回転というのがそもそもよくわかりません。
476:Be名無しさん
10/04/29 08:05:34
>475
なるほど、レディキューという言葉を使っているのが適切でないですね。
正確には、タスク優先順位の回転 ですね。
それが何かは、μITRON4.0仕様書を確認してください。
なぜそうするかは、ラウンドロビン風にタイムシェアスケジュールしたいからじゃないかと思う。
477:Be名無しさん
10/04/30 21:46:03
toppers/jspのsample1のVC用、2010だと開けなくなってない?
478:Be名無しさん
10/05/01 09:31:37
確認したらtoppersメーリングリストへ
479:Be名無しさん
10/05/01 13:32:33
>477
コンパイラのバージョンアップしたらうまくいかない。カーネルパッケージのバージョンアップしたら文字コードが
おかしい とか言うのは結構すくなくない。 これに会員は年間10万(団体)払って、自分たちで直しましょう とか
言う対応なのかな。
480:Be名無しさん
10/05/01 23:59:52
雛形出来きたから、後はお好きに状態とか
481:Be名無しさん
10/05/05 18:53:26
>>471
別に終了じゃなくてもslp_tskでもいいと思ったけど、他タスクに対してslp_tsk
ができないので、ter_tskならIDで自タスク以外に対してできるのでそっちのが簡単かなと
思ったんです。
482:Be名無しさん
10/05/05 19:08:38
sus_tskは?
483:470
10/05/05 20:18:15
>481 >482
ter_tskが一番安全じゃないのかと思う。
終了させるタスクが、広義の待ち状態になる場合があった場合に面倒が少ないように思うから。
あくまでタスクの動き方というかアプリケーションによるけど、最初からまた繰り返すようなケースなら
ter_tsk、 途中から再度レジュームならsus_tskでいいと思う。sus_tskの場合にサスペンド状態時に
待ちが解除されるイベントを受けるならそれでもいいがその間受けないならなんらかの対応が
必要になる。別の言い方をするとしがらみが多い作りになる
また、相手タスクが勝手に休止状態になるような場合には、sus_tskで停止する場合には、タスク起動をしてやらないと
続行できないのでひとつ判断が必要になると思う。
484:Be名無しさん
10/05/06 21:06:39
こういうモード遷移で定石みたいなやり方ってないんですかね?
こいうときはこうするみたいなのが載ってる本とかあると助かるんだけど。
485:Be名無しさん
10/05/07 09:03:20
ITRON系ってサンプルコード本が無いんだおねw
486:Be名無しさん
10/05/08 21:51:12
開発環境HEWでNORTIをポーティングしてるんだけど、
nortiがSTACKっていうセクション使ってるみたいでSTACKセクション
作ったんだけど、HEWもプロジェクト作成するとデフォルトでSって
いうSTACKセクションもってて、HEWがデフォルトで作るSはいらないかなと思って、
削除するとSがないって怒られるんだけど、SとSTACK2つあるのはおかしいですよね?
ずっと昔ポーティングしたことがあって、そのときはセクション見ると
STACKだけだったのでSの方はなくす(統合?)ことができると思うのですが、
やり方がわかりません。わかる方いますか?
487:Be名無しさん
10/05/10 14:06:48
>486
NORTi Version 4 (SuperH/SHC)補足説明書
というのに書いてあるけど、たぶん見てないでしょうね。
Interface 2006年8月号対応「NORTi Version 4 (SuperH/SHC) 体験版カーネル」
URLリンク(www.mispo.co.jp)
というので、SH用のサンプルプロジェクトもあれば、
上記マニュアルも含まれているよ。
第4章移植ガイド にHewプロジェクトの作り方が書いてあるよ。
488:Be名無しさん
10/05/18 01:49:23
H8だと、こんなコードを吐くからね
00000000 _PowerON_Reset: ; function: PowerON_Reset
00000000 7A0700000000 MOV.L #STARTOF S+SIZEOF S,SP
489:Be名無しさん
10/05/20 22:50:34
>>488
どうもデフォルトで生成される下記コードが
__entry(vect=0) void PowerON_Reset(void)
488のコードを生成するせいでSがないって怒られるみたいですね。
ぶっちゃけSセクションとSTACKセクション2つあっても問題ないかな?
マルチタスク環境に移行したらSTACKを使うわけだし、SはPowerON_Reset
で呼び出す関数から戻るときにしか使わないわけでしょ?
490:Be名無しさん
10/05/24 11:01:18
SHとH8が違うにしても、HEWで使う方法の基本は同じじゃないかな
NORTiではHEWの自動生成は使わないのが基本
>どうもデフォルトで生成される下記コードが
というのは、マニュアル読んでないのでしょうね。
4.1 新規プロジェクト作成時の注意
4.1.1 Empty Application の選択
NORTi では、HEW が自動的に生成する次のような雛形ソースファイルを使用しません。
lowlvl.src, dbscr.c, hwsetup.c, intprg.c, lowsrc.c, resetprg.c, sbrk.c, vecttbl.c,
lowsrc.h, iodefine.h, sbrk.h, stacksct.h, vect.h
新規プロジェクトワークスペース作成する場合、プロジェクトタイプとして必ず「Empty
Application」を選択して、これらのファイルの生成を抑制してください。