(toppers-users 3514) TOPPERS/FMPカーネル Release 1.2.0 のリリース
Shinya Honda
honda @ ertl.jp
2011年 7月 27日 (水) 10:19:37 JST
皆様
名古屋大学の本田です。
TOPPERS/FMPカーネル Release 1.2.0 をリリースしましたのでお知らせします.
http://www.toppers.jp/fmp-e-download.html
http://www.toppers.jp/fmp-d-download.html
Release 1.1.1 からの主な変更点は以下の通りです.詳細について
は,version.txt 及び各ターゲット依存部のドキュメントを参照して下さい.
変更点概要
------------------------------------------------------------------------
・リリース方法をASPと同様に変更
・コンフィギュレータ 1.7.0対応
・ASP 1.7.0 対応
・TTSPによる検証済み
・多くのバグの修正.
------------------------------------------------------------------------
変更点詳細
----------------------------------------------------------------------
TOPPERS/FMPカーネル
Release 1.1.1 から 1.2.0 への変更点
リリース日時 2011-7-15
○変更点のリスト
・コンフィギュレータ(kernel.tf)の問題の修正.
・DEF_INHのパラメータエラーがチェックされない問題の修正.
・エラーメッセージのASPとの統一.
・不正な割込み番号をDEF_INH()/CFG_INT()/ATT_ISR()にしても正しいエラ
ーコードを返さない問題の修正.
・非タスクのスタックの先頭アドレスのチェックがなされない問題を修正.
・ter_tsk()のデッドロック回避コードの修正.
・dly_tsk()をT_CHECK_DISPATCH(my_p_pcb)を用いてディスパッチのチェック
をするように変更.
・ディスパッチ禁止状態で呼び出し可能なAPIを過度状態で呼び出すと無限ル
ープとなる問題を修正.
・Makefileでのプロセッサ数指定マクロの追加.
・共通部ロックの解放関数で行っていた,dspreqのチェックとディスパッチャ
呼び出しを,APIの方で記述するように変更.
・カバレッジの取得の関係.
・該当関数
・release_tsk_lock_and_dispatch
・release_obj_lock_and_dispatch
・release_dual_tsk_lock_and_dispatch
・細粒度ロックの際,オブジェクトロックの初期化関数名を間違って呼び出し
ていた問題の修正.
・共通部ロック関数で,while()を記述している場合,カバレッジの取得ため,
各分岐で直接リターンせず,breakでwhile()を抜けるように修正.
・効率化のため,call_texrtn()の引数にPCB *my_p_pcb を追加.
・サンプルプログラムのサーバータスクのIDを表示する様に変更.
・iras_tex()の入り口でi_lock_cpu()ではなく,i_unlock_cpu()を呼び出して
いた問題を修正.
・iset_flg()の入り口でi_lock_cpu()ではなく,t_lock_cpu()を呼び出してい
た問題を修正.
・ネイティブ方式のiunl_spn()のCPUロック取得解放ルーチンの問題を修正.
・ter_tsk()(プロセッサ・細粒度ロック時コード)で,オブジェクト待ち以外
の状態の場合のルーチンで,待ち状態(オブジェクト待ち以外)のタスクに
対してもwait_dequeue_tmevtb()を呼び出していた問題を修正.
・ter_tsk()(プロセッサ・細粒度ロック時コード)で,起動要求キューイング
あり,他プロセッサにマイグレーションありのコードで,
dispatch_request()の戻り値をチェックしていたが,このパスでは必要ない
ため削除.
・ter_tsk()(ジャイアントロック時コード)で,他タスクへのキューイングが
ペンディングしていた場合,マイグレーションと起動の後,ディスパッチリ
クエストを要求する必要がある場合,dispatch_request()の引数にマイグレ
ーション前のPCBを指定していた問題を修正.
・サンプルプログラムでグローバルタイマ方式の場合のコア4用の周期ハンド
ラとアラームハンドラのsample.cfgでの定義を修正.
・ter_tsk()(プロセッサ・細粒度ロック時コード)で,起動要求キューイング
あり,他プロセッサにマイグレーションありのコードで,対象タスクが強制
待ち状態の場合にリトライしていた不具合を修正.
・DEF_EXC()において,CPU例外ハンドラ番号が示すプロセッサIDと初期割付プ
ロセッサが異なる場合のチェック抜けを修正.
・CRE_SPN()において,スピンロック属性にTA_NULL以外を指定しても,
E_RSATRエラーが発生しない問題を修正.
・CFG_INT()において,ATT_ISRとCFG_INTが異なるクラスに所属している場合
のエラーコードをE_RSATRに修正.
・DEF_INH()/CFG_INT()/ATT_ISR()において,割込み番号・割込みハンドラ番
号と所属するクラス間に不整合がある場合のエラーコードをE_RSATRに修正.
・ATT_ISR()において,割込み番号が不正な場合のエラー出力が正しくなく,
cfgが内部エラーを起こす問題を修正.
・ATT_ISR()において,同じ割込み番号に対するATT_ISR()が異なるクラスに属
していた場合のエラー出力にエラー番号が抜けていた問題を修正.
・CFG_INTで指定された割込み番号を受け付け可能なプロセッサが,指定され
たクラスの割付け可能プロセッサに含まれるかのチェックをしないように変
更(仕様ではATT_ISR/DEF_INHのみチェックする).
・irel_wai() のプロセッサロック,細粒度ロックの時のコードに無駄なディス
パッチ要求のコードがあったため削除.
・chg_pri() のプロセッサロック,細粒度ロックの時のコードに
change_priority() の特定のパスを実行しなかったため,コードの構造を
ter_tsk() と合わせて,change_priority() の全てのパスを通るように変更
.
・過渡状態からext_tskを呼び出した場合は,ロック取得時に割込みを許可し
ないように変更.ext_tskの実行時間が長くなる可能性があるので注意.
・スピンロック解放API(ネイティブ方式)において,ターゲット依存のスピン
ロック解放関数を呼び出して解放した後に,OS内部データを変更していた問
題を修正.
・ter_tsk()(プロセッサ・細粒度ロック時コード)で,起動要求キューイング
あり,他プロセッサにマイグレーションありのコードで,dispatch_request()
の戻り値をチェックしていたが,このパスでは必要ないため削除.
・ena_tex()/ras_tex()において,自タスクのタスク例外処理ルーチンを呼び
出し中に他のプロセッサへマイグレーションした場合に,タスク例外処理ル
ーチンからリターンすると正しいタスクロックを解放しない問題を修正.
・wait_tmout()のデッドロック回避に伴う問題を修正.デッドロック回避のた
め,ロックを解放した間に他のAPIで待ち解除が行われ,タイムイベントキ
ューから2重に削除される問題を修正.
・カーネルの終了処理でSILスピンロックを取得している場合に解放するよう
に変更.
○ターゲット依存部の修正が必要な変更点
・VALID_INTNO_DISINT()/VALID_INTNO_CFGINT()の引数にprcidを追加し,
prcidからdis_int()/ena_int()ないしCFG_INTが呼び出せない場合にはfalse
を返すように変更.
・グローバルタイマ方式の場合のタイムイベントハンドラを登録するクラスの
名前を TCL_ADMIN_PRC から TCL_SYSTIM_PRC に変更.
・割付け可能プロセッサが初期割付けプロセッサのみのクラスを追加.
・ATT_ISRのintnoとクラスの割付け可能プロセッサの整合性のチェックを修正.
登録する割込みサービスルーチンの属するクラスの割付け可能プロセッサが,
intnoで指定した割込み要求ラインが接続されたプロセッサの集合に含まれ
ているかチェックするように修正.
・ターゲット依存部でATT_ISRのクラス割付けをチェックするテンプレートフ
ァイルの関数 TARGET_CHECK_ATT_ISR を追加.
・INHNO_ATTISR_VALID には,グローバルな割込み要求ラインに対する割込み
ハンドラ番号は,上位ビットが0の割込みハンドラ番号を設定する.
・SILスピンロックを取得している場合に解放する
TOPPERS_sil_force_unl_spn を追加する.