TOPPERS/ASP3カーネル 変更履歴 対応バージョン: Release 3.0.0 最終更新: 2016年1月10日 このドキュメントは,TOPPERS/ASP3カーネルの変更履歴を,新しい方から順に 記述したものである.また,TOPPERS/ASPカーネル Release 1.9.1との主な違い についても記載している. ---------------------------------------------------------------------- TOPPERS/ASP Kernel Toyohashi Open Platform for Embedded Real-Time Systems/ Advanced Standard Profile Kernel Copyright (C) 2014-2016 by Embedded and Real-Time Systems Laboratory Graduate School of Information Science, Nagoya Univ., JAPAN 上記著作権者は,以下の(1)〜(4)の条件を満たす場合に限り,本ソフトウェ ア(本ソフトウェアを改変したものを含む.以下同じ)を使用・複製・改 変・再配布(以下,利用と呼ぶ)することを無償で許諾する. (1) 本ソフトウェアをソースコードの形で利用する場合には,上記の著作 権表示,この利用条件および下記の無保証規定が,そのままの形でソー スコード中に含まれていること. (2) 本ソフトウェアを,ライブラリ形式など,他のソフトウェア開発に使 用できる形で再配布する場合には,再配布に伴うドキュメント(利用 者マニュアルなど)に,上記の著作権表示,この利用条件および下記 の無保証規定を掲載すること. (3) 本ソフトウェアを,機器に組み込むなど,他のソフトウェア開発に使 用できない形で再配布する場合には,次のいずれかの条件を満たすこ と. (a) 再配布に伴うドキュメント(利用者マニュアルなど)に,上記の著 作権表示,この利用条件および下記の無保証規定を掲載すること. (b) 再配布の形態を,別に定める方法によって,TOPPERSプロジェクトに 報告すること. (4) 本ソフトウェアの利用により直接的または間接的に生じるいかなる損 害からも,上記著作権者およびTOPPERSプロジェクトを免責すること. また,本ソフトウェアのユーザまたはエンドユーザからのいかなる理 由に基づく請求からも,上記著作権者およびTOPPERSプロジェクトを 免責すること. 本ソフトウェアは,無保証で提供されているものである.上記著作権者お よびTOPPERSプロジェクトは,本ソフトウェアに関して,特定の使用目的 に対する適合性も含めて,いかなる保証も行わない.また,本ソフトウェ アの利用により直接的または間接的に生じたいかなる損害に関しても,そ の責任を負わない. $Id: version.txt 507 2016-01-12 01:58:33Z ertl-hiro $ ---------------------------------------------------------------------- TOPPERS/ASP3カーネル Release 3.B.0 から 3.0.0 への主な変更点 ○変更点のリスト ・lock_cpu_dsp/unlock_cpu_dspの導入 - タスクディスパッチできる状態において,CPUロック状態に遷移/復帰さ せる関数として,lock_cpu_dsp/unlock_cpu_dspを導入した. ・非タスクコンテキストからのディスパッチ要求 - 非タスクコンテキストにおいてタスク切換えが必要になった場合に, request_dispatchを呼ぶように修正した(ARM Cortex-M対応). ・その他のバグフィックス - 通知ハンドラのための変数にstaticを付けるのをやめる. ・テストプログラムの追加 - カーネル性能評価プログラム(5)(perf5)を追加. ・kernel_cfg.h,offset.hへの依存関係の修正 - move-if-changeを用いて,不必要な再コンパイルが行われないように, Makefileと各テンプレートファイルを修正. - utils/move-if-changeを追加. ・Makefileの修正 - 依存関係ファイルを,GCCの-MDオプションを用いて生成するように修正. - APPLDIR,APPL_DIR,SYSSVC_DIR,KERNEL_DIRを,それぞれ,…DIRS(複 数形)にリネーム. - DBGENVの廃止. - 不要になった変数等の削除. ・configureの大幅な仕様変更 - サンプルプログラムを生成する処理を削除. - -uオプションを廃止(-aオプションに統合). - -tオプションと-dオプションの役割を変更. - -cオプション,-Cオプション,-wオプション,-Vオプション,-Gオプショ ンを追加. - perlのプログラムの場所を検索する処理を削除. - コンフィギュレータが用意できているかのチェックを削除. ・その他の修正 - OVRTIM型をPRCTIM型にリネーム. - bit_kernel.c,bit_mutex.cを見直し(ASP3対応を考慮). - test_raster1を,bit_kernelを使用するように修正. - 性能評価プログラムで実行時間分布を表示する際に,システムログ機能 のフラッシュを呼ぶのをやめる(低レベル出力を使うので不要). - テストプログラム用サービスの関数定義方法を変更. - トレースログ機能のログ時刻を取り出すマクロ名を変更. - トレースログ機能のモードの扱いの見直し. ・ドキュメントの充実,コメントの修正 ・バージョン番号の更新 - カーネルのバージョン番号を更新. ○ターゲット依存部の要修正箇所(3.B.0 → 3.0.0) (1) lock_cpu_dsp/unlock_cpu_dspの定義を追加 - lock_cpu_dsp/unlock_cpu_dspの定義を追加する.最適化をしないので あれば,lock_cpu/unlock_cpuに定義すればよい. (2) request_dispatchの定義を追加 - request_dispatchの定義を追加する.標準通りの実装の場合は,空に定 義すればよい. (3) OVRTIM型をPRCTIM型にリネーム - ターゲット依存部でOVRTIM型を使っている箇所があれば,PRCTIM型に修 正する. (4) kernel_cfg.hとoffset.hのファイル名 - ターゲット依存部のテンプレートファイルで,出力先をkernel_cfg.hか offset.hにするFILE記述があれば,それぞれ,kernel_cfg.h.newと offset.h.newにファイル名を変更する. (5) ディレクトリを指定する変数名のリネーム - Makefileのターゲット依存部で,APPL_DIR,SYSSVC_DIR,KERNEL_DIRを 設定している記述があれば,それぞれ,APPL_DIRS,SYSSVC_DIRS, KERNEL_DIRSにリネームする. (6) 開発環境依存のコンパイルオプション - Makefileのターゲット依存部で,DBGENVを設定している記述があれば, COPTSを用いた設定に変更する. ---------------------------------------------------------------------- TOPPERS/ASP3カーネル Release 3.A.0 から 3.B.0 への主な変更点 ○変更点のリスト ・周期ハンドラ機能とアラームハンドラ機能を,周期通知機能とアラーム通知  機能に拡張 ・有効な割込み番号,割込みハンドラ番号,CPU例外ハンドラ番号,割込み優先  度をターゲット依存部で定義する方法の変更 ・delay_for_interruptの導入 - 一時的にCPUロック状態を解除する時に,割込みが受け付けられるように するための関数として,delay_for_interruptを呼び出すようにした. ・テストプログラム用ライブラリの修正 - テストプログラム用サービスの位置付けとし,ファイル名とディレクト リを変更. - test_finishはサービスの内部関数とし,外部からはcheck_finish(0U)を 呼ぶように変更(保護機能対応カーネルを考慮した修正). - check_stateから,check_ipmを分離.check_state_iを廃止. - syslog_flushを,syslog_fls_logとリネームし,システムログ機能のサー ビスコールと位置付けることに. ・実行時間分布集計モジュールの修正 - 実行時間分布集計サービスの位置付けとし,ディレクトリを変更. - print_histで,ログ情報の出力関数をパラメータとして渡すように変更. ・テストプログラムの追加 - 通知処理のテスト(1)(test_notify1)を追加. - ドリフト調整機能拡張パッケージにドリフト調整機能のテスト(1) (test_drift1)を追加. ・その他のバグフィックス - トレースログ記録のサンプルコードの修正(SYSLOG型の変更への追従漏れ). - test_cpuexc10.cのチェック値の誤りの修正. - makereleaseのエラーチェックコードの修正. ・その他の修正 - LOG_DSP_ENTERの呼出し箇所を変更した(ポーティングガイド). - USE_INHINIB_TABLEとUSE_INTINIB_TABLEの定義方法を変更した. - CANNOT_RETURN_CPUEXCをPREPARE_RETURN_CPUEXCに置き換えた. - kernel_chk.tfのリファクタリング. - ヘッダファイルが自己完結するように修正. - インクルード記述の方法を変更. - syslog_ref_logの出口のログ出力マクロ(LOG_SYSLOG_REF_LOG_LEAVE) のパラメータにエラーコードを追加. - MakefileにおけるLDFLAGSの意味を変更. - trace_config.cfgを追加. ・ドキュメントの充実,コメントの修正 ・バージョン番号の更新 - カーネルのバージョン番号を更新. ○ターゲット依存部の要修正箇所(3.A.0 → 3.B.0) (1) CHECK_INTPTR_ALIGNとCHECK_INTPTR_NONNULLの追加 - 必要であれば,CHECK_INTPTR_ALIGNとCHECK_INTPTR_NONNULLの定義を追 加する. (2) 有効な割込み番号,割込みハンドラ番号,CPU例外ハンドラ番号,割込み優 先度の定義方法の変更 - VALID_INTNOを用意する(必要ない場合もある). - VALID_INTNO_DISINT/VALID_INTNO_CREISRの定義がVALID_INTNOと一致し ていれば,定義を削除する. - VALID_INTNO_CFGINTをVALID_INTNOに,INTNO_CFGINT_VALIDをINTNO_VALIDに, それぞれ置き換える. - VALID_INHNO_DEFINHをVALID_INHNOに,INHNO_DEFINH_VALIDをINHNO_VALIDに, それぞれ置き換える. - VALID_EXCNO_DEFEXCをVALID_EXCNOに,EXCNO_DEFEXC_VALIDをEXCNO_VALIDに, それぞれ置き換える. - INTNO_CREISR_VALID/INHNO_CREISR_VALIDの定義が,それぞれINTNO_VALID/ INHNO_VALIDと一致していれば,定義を削除する. - INTPRI_CFGINT_VALIDの定義が標準通りでよい場合には,定義を削除する. (3) MakefileにおけるLDFLAGSの意味の変更 - これまで,LDFLAGSはカーネルのリンク時にのみ適用され,cfg1_out.cの リンク時には適用されなかったが,その両方に適用されるようになった. そのため,両者のリンク時に必要なオプションは,LDFLAGSに追加すれば, CFG1_OUT_LDFLAGSには追加しなくてよくなった.一方,カーネルのリン ク時のみに適用したいオプションは,OBJ_LDFLAGSに追加する. (4) delay_for_interruptの追加 - delay_for_interruptの実装を追加する. (5) USE_INHINIB_TABLEとUSE_INTINIB_TABLEの定義方法の変更 - コンフィギュレータのパス2のテンプレートファイルのターゲット依存部 で,USE_INHINIB_TABLE/USE_INTINIB_TABLEを設定していた場合には, カーネルのターゲット依存部でのマクロ定義に変更する.また,ターゲッ ト依存部で定義していたINHINIB/INTINIBを,必要に応じて削除する. (6) CANNOT_RETURN_CPUEXCをPREPARE_RETURN_CPUEXCに置き換え - PREPARE_RETURN_CPUEXCの定義を追加する.CANNOT_RETURN_CPUEXCが定義 されていた場合には,PREPARE_RETURN_CPUEXCを定義しない. (7) LOG_DSP_ENTERの呼出し箇所を変更に対応 - ポーティングガイドにおいて,LOG_DSP_ENTERの呼出し箇所を変更し, dispatcher_0のラベルを設けたのに対応する(本質的には同じことなの で,コードを修正しなくても問題ない). (8) インクルード記述の方法の変更に対応 - 開発環境/プロセッサコア/チップ依存部ディレクトリに置かれている ヘッダファイルのインクルード方法を変更する.詳しくは,「ターゲッ ト依存部 ポーティングガイド」の「1.4 インクルード記述の方法」の節 を参照すること. ---------------------------------------------------------------------- TOPPERS/ASP3カーネル Release 1.9.1 から 3.A.0 への主な変更点 ○主な変更点のリスト ※ 以下の変更点のリストは,主なもののみをリストアップしたものであり,網 羅的なリストではない. ・機能の追加/廃止 - ミューテックス機能を標準パッケージに追加(一部機能制限あり). - タスク例外処理機能を廃止し,タスク終了要求機能を追加. - メールボックス機能を廃止. - システム時刻の調整機能と設定機能を追加. - 起動要求をキューイングしないタスクを追加. - タスクとスケジューリング状態の参照機能を追加. ・拡張パッケージの追加/廃止 - ドリフト調整機能拡張パッケージを追加. - サブ優先度機能拡張パッケージを追加. - ミューテックス機能拡張パッケージを廃止(標準パッケージに). ・仕様の変更 - SIZE型をsize_t型に変更. - システム時刻,相対時間,タイムアウト時間の時間単位を,マイクロ秒 に変更.システム時刻のサイズを64ビットに変更.相対時間とタイムア ウト時間のサイズを32ビットと規定.タイムアウト時間を符号無し整数 型に変更. - サービスコール名が"i"で始まる非タスクコンテキスト専用のサービスコー ルを廃止し,非タスクコンテキストからもタスクコンテキストと同じ名 称のサービスコールを呼び出せるように. - ena_intとena_intを,非タスクコンテキストから呼び出せるように. - ATT_ISRを廃止して,CRE_ISRを追加. - get_utmを廃止して,fch_hrtを追加. - 割込みサービスルーチンとタイムイベントハンドラの実行開始/リター ン時の割込み優先度マスクの扱いを変更. ・タイムイベント処理のティックレス化 - タイムイベント処理モジュールを全面的に修正. ・スケジューラの実装の変更 - アイドル処理の実装方法を変更(主にターゲット依存部). - reqflgとipmflgを廃止.disdspをenadspに変更. - スケジューラの関数が,ディスパッチの要否を返すのをやめた. - p_schedtskの意味を,最高優先順位のタスクから,実行すべきタスクに 変更(ディスパッチ保留状態での扱いが異なる). ・その他の実装の変更 - kernel.tfを,機能モジュール毎に分割. - 静的エラーのチェック方法(CHECKマクロの構成)を変更. - サービスコールの出口ログマクロのパラメータを変更. - lock_cpu/unlock_cpu/sense_lockを,タスクコンテキスト用と非タス クコンテキスト用で別々に用意するのをやめた. - TCB中での待ち状態の表現方法を変更. - WINFO_FLG中のwaiptnとflgptnを共用(flgptnを廃止). - WINFO_SDTQとWINFO_RDTQを区別して扱うように修正. ・バージョン番号の更新 - カーネルのバージョン番号を更新. ○ターゲット依存部の主な要修正箇所(1.9.0 → 3.A.0) (1) target_config.[hc]を,target_kernel_impl.[hc]にリネーム (2) オフセットファイルの生成方法の変更 - target_cfg1_out.hに,TCBのデータ定義が含まれている場合には,新し いTCBの構造に合わせて修正する. - オフセットファイル(offset.h)を,makeoffset.cとgenoffsetを用いて 生成している場合には,コンフィギュレータを用いる方法に変更する. (3) メモリ領域をサイズを表すデータ型の変更 - t_stddef.hに,size_t型の定義が含まれるようにする. - TOPPERS_sizeの定義を削除する. - SIZE型を使っているところを,size_t型に変更する. (4) コンテキスト依存で呼び出す関数の変更 - x_lock_cpu/x_unlock_cpu/x_sense_lock/x_disable_int/x_enable_int/ x_clear_int/x_probe_intを,"x_"を外した名前に変更する.これらの 関数に対応する"t_"または"i_"で始まる関数は削除する. - x_define_inh/x_config_int/x_define_excを使用している場合には, これらを,"x_"を外した名前に変更する. - x_set_ipm/i_set_ipm/x_get_ipm/i_get_ipmを削除する("t_"で始ま る関数は残す). - i_begin_intとi_end_intを削除する. (5) ディスパッチャ本体の変更 - dispatcher中のアイドル処理の実装を変更する. - log_dsp_enterを呼ぶ処理を,ディスパッチャ本体から,それを呼ぶ処理 の側(dispatch,exit_and_dispatch,割込みの出入口処理,CPU例外の 出入口処理)に移動する. (6) ディスパッチャの動作開始処理の変更 - start_dispatchに,スタックをIDが1のタスクのスタック領域に切り換え る処理を追加する. (7) 割込みハンドラ/CPU例外ハンドラの出入口処理の変更 - reqflgの廃止に対応する. - タスク切換えの条件判定で,dspflgをチェックする必要がなくなったこ とに対応する. - アイドル処理の実装変更により,ret_int/ret_excからのタスク切換え において,p_runtskがNULLとなっている状況を考える必要が生じたこと に対応する. (8) テンプレートファイル変数の変更 - INTNO_ATTISR_VALIDとINHNO_ATTISR_VALIDを,INTNO_CREISR_VALIDと INHNO_CREISR_VALIDに変更する. (9) 高分解能タイマドライバの実装 - ティックベースのタイマドライバを削除し,高分解能タイマドライバを 実装する. ----------------------------------------------------------------------