TOPPERS/ASPカーネル 変更履歴 対応バージョン: Release 1.9.2 最終更新: 2015年2月8日 このドキュメントは,TOPPERS/ASPカーネルのRelease 1.0.0以降の変更履歴を, 新しい方から順に記述したものである. ---------------------------------------------------------------------- TOPPERS/ASP Kernel Toyohashi Open Platform for Embedded Real-Time Systems/ Advanced Standard Profile Kernel Copyright (C) 2005-2015 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 2675 2015-02-08 10:11:33Z ertl-hiro $ ---------------------------------------------------------------------- TOPPERS/ASPカーネル Release 1.9.1 から 1.9.2 への変更点 ○変更点のリスト ・動的生成機能拡張のバグフィックス - acre_cycで,周期ハンドラを開始する処理のバグを修正. ・その他のバグフィックス - test_cpuexc10.cのチェック値の誤りの修正. ・ドキュメントの修正. ・バージョン番号の更新 - カーネルのバージョン番号を更新. ---------------------------------------------------------------------- TOPPERS/ASPカーネル Release 1.9.0 から 1.9.1 への変更点 ○変更点のリスト ・ミューテックス機能拡張の仕様変更 - 自タスクがロックしているミューテックスを再度ロックしようとした場 合と,自タスクがロックしていないミューテックスをロック解除しよう とした場合のエラーコードをE_OBJに変更. ・ミューテックス機能拡張のバグフィックス - タスク終了時のミューテックスの解放順序を逆順に. ・動的生成機能拡張のバグフィックス - オブジェクト未登録エラーのチェックの抜けおよびバグを修正. - オブジェクト未登録の場合の他のエラーのチェック場所の修正. ・オーバランハンドラ機能拡張のバグフィックス - オーバランタイマ割込みハンドラの起動と,オーバランタイマの再動作 開始/停止との競合の問題を修正. ・テストプログラム関係の修正 ・その他の修正 - xsns_dpnとxsns_xpnで,kerflgもチェックするように修正(安全性の向 上のための修正). - kernel.tf中で,スタック領域の確保にALLOC_STACKを使うように修正. ・ドキュメントの充実,コメントの修正 ・バージョン番号の更新 - カーネルのバージョン番号を更新. ---------------------------------------------------------------------- TOPPERS/ASPカーネル Release 1.8.0 から 1.9.0 への変更点 ○変更点のリスト ・メッセージバッファ機能拡張パッケージの追加 ・コンフィギュレータのパス3のテンプレートファイルに,ターゲット依存部で  設定したセクションを,LMAからVMAにコピーする処理を追加 ・サンプルのMakefileの修正 - C言語の時に-lcを付けるように修正. - CFG_OBJSを,CFG_ASMOBJSとCFG_COBJSに分離. ・先頭番地のチェックコードの修正 - 先頭番地のサイズが固定値になっていたところを,sizeof_FPに修正. - オーバランハンドラ機能拡張において,オーバランハンドラの先頭番地 のチェックを追加. ・静的APIにおけるエラーチェックの追加 - 符号無しのパラメータに負の値を指定した場合のエラーチェックを追加. - イベントフラグの初期ビットパターンのエラーチェックを追加. ・テストプログラム関係の修正 - テストライブラリに,test_startを追加. - テストプログラムの先頭で,プログラム名を表示するように修正. - gentestを拡張. ・動的生成機能拡張のバグフィックス - カーネルが割り付けるメモリ領域のサイズのチェックコードを修正. - DEF_KMMのkmmszが0以下の場合のエラーチェックを追加. - カーネル内部シンボルのリネーム表を修正. ・その他のバグフィックス - kernel_def.csvにTARGET_MIN_ISTKSZを追加. - オーバランハンドラ機能拡張で,オーバランハンドラをサポートしてい ないターゲットでDEF_OVRを使用した場合には,コンフィギュレータでエ ラーとするように修正. ・その他の修正 - reqdspをdspreqに,p_reqdspをp_dspreqにリネーム. - スタック領域と固定長メモリプール領域の先頭番地をユーザが指定した 場合には,kernel_cfg.c中で(void *)型にキャストするように修正.動 的生成機能拡張のカーネルが割り付けるメモリ領域の先頭番地も同様. - TNUM_PORTが5以上の時は,serial.cでエラーを報告する. - makedepとmakereleaseを改善. ・ドキュメントの充実,コメントの修正 - ユーザーズマニュアルに「1.6 Cygwin環境における注意事項」を追加. - ユーザーズマニュアルに「11.8 rodataセクションをRAMに置く場合」を 追加. ・バージョン番号の更新 - カーネルのバージョン番号を更新. ○ターゲット依存部の要修正箇所(1.8.0 → 1.9.0) (1) CFG_OBJSをCFG_COBJSにリネーム - Makefileのターゲット依存部でCFG_OBJSを定義している場合には, CFG_COBJSにリネームする. ---------------------------------------------------------------------- TOPPERS/ASPカーネル Release 1.7.0 から 1.8.0 への変更点 ○変更点のリスト ・char_t型の廃止 ・SILのメモリ空間読出し関数に渡すポインタの属性の変更 - sil_r??_???に渡しポインタに,const属性を追加. ・非タスクコンテキスト用のスタック領域のサイズチェックの追加 - DEF_ICSのistkszがターゲット定義の最小値(TARGET_MIN_ISTKSZ)より も小さい場合にE_PARエラーとする処理を追加. ・vasyslog.cをlibraryディレクトリに移動 ・MISRA-C対応のためのコードの修正 - 文をマクロ定義している箇所をdo{}while(false)で囲む. - コンマ演算子に使用を最小限に. - 多重代入文をやめる. - 符号無し整数定数にUをつける. - 標準的な名前を変数名として使わないように修正. - 返値を使わない関数呼出しを(void)にキャストする. ・その他のバグフィックス - ミューテックス機能拡張で,ref_tskがTTW_MTXを返す処理を追加. - 動的生成機能拡張で,acre_isrのエラーコードを修正. - 動的生成機能拡張で,オブジェクトコントロールブロックがない時に acre_yyyを呼んだ場合の問題を修正. - kernel_check.tfでエラーメッセージの出力処理を修正. - 拡張モジュールの追従ミスの修正. - TOPPERS_SUPPORT_OVRTIMをTOPPERS_SUPPORT_OVRHDRに修正. ・サンプルのMakefileの修正 - カーネルライブラリを別ディレクトリで作成する時に,カーネルライブ ラリが更新されたら,オブジェクトファイルを再構築するように修正. - CFG2_OUTをCFG2_OUT_SRCSにリネーム. - LDFLAGSは,cfg1_out.cのリンク時には適用されないように修正. - log_output.o,vasyslog.o,t_perror.o,strerror.oを,SYS_COBJSから APPL_COBJSに移動. ・その他の修正 - semaphore.h等からwait.hをインクルードするように修正. - TOPPERS_EMPTY_LABELのデフォルトの定義をkernel_int.hに移動. - __STDC_VERSION__が定義されていない場合に対応. - test_lib.hに多重インクルードの防止コードを追加. - ユーティリティプログラムを新しいperlに対応するように修正. - gentestを拡張(CPU例外ハンドラの生成,GOTOに対応など). - configureにオプションを追加. - test_tex1にテストケース1件を追加. ・ドキュメントの充実,コメントの修正 ・バージョン番号の更新 - カーネルのバージョン番号を更新. ○ターゲット依存部の要修正箇所(1.7.0 → 1.8.0) (1) char_t型をchar型に修正 (2) TARGET_MIN_ISTKSZの定義を追加(オプション) - 非タスクコンテキストのスタックサイズの最小値をチェックする場合に は,最小値をTARGET_MIN_ISTKSZに定義する. (3) CFG2_OUTをCFG2_OUT_SRCSにリネーム - Makefileのターゲット依存部でCFG2_OUTを定義している場合には, CFG2_OUT_SRCSにリネームする. (4) CFG1_OUT_LDFLAGSの定義 - Makefileのターゲット依存部で定義したLDFLAGSは,cfg1_out.cをリンク する際には適用されないように変更したため,LDFLAGSに定義したオプショ ンで,cfg1_out.cをリンクする際にも必要なものは,CFG1_OUT_LDFLAGS にも定義するように修正する. ---------------------------------------------------------------------- TOPPERS/ASPカーネル Release 1.6.0 から 1.7.0 への変更点 ○変更点のリスト ・動的生成機能拡張パッケージ,制約タスク拡張パッケージの追加 ・タスク例外処理ルーチンの実行開始条件の変更 - タスク例外処理ルーチンの実行に関するコードの修正. - ipmflgを導入. - exc_sense_unlockを廃止. ・データキューのコードの修正 - データ管理ブロックの導入(他のオブジェクトの実装と整合された). ・SILのメモリ空間アクセス関数に渡すポインタの型の変更 - void *を渡していたところを,サイズにあわせて,uint8_t *などに変更. ・動的生成機能拡張パッケージにあわせた修正 - t_stddef.hにMB_T型の定義を追加. - コンフィギュレータのテンプレートファイル(パス2および3)で定義し ていたターゲット依存情報を,ヘッダファイルに移動. - kernel_def.csvに,それらの値を取得するための記述を追加. - ポーティングガイドの修正. ・オフセットファイルをコンフィギュレータで生成する方法を追加 - genoffset.tfを追加. - kernel_def.csvに,SIL_ENDIAN_BIG/LITTLEを追加. - sample/Makefileを修正. - m68k依存部を,この方法に対応させる. - ポーティングガイドの修正. ・その他のバグフィックス - CHECK_INTPRI_CHGIPMの定義中のtypoを修正. - genoffsetのRelease 1.6.0におけるディグレードを修正. - オーバランハンドラ拡張機能で,ターゲット依存部がオーバランハンド ラをサポートしていない場合には,TCB中のleftotmを定義しないように 修正. ・その他の修正 - USE_TSKINICTXBをマクロ定義した場合のスタック領域の先頭番地のチェッ クのために,GET_STK_TSKINICTXBを導入. - kernel_cfg.c中で,タスクの先頭番地をTASK型にキャストするように kernel.tfを修正. - ext_tskのE_SYSの返し方を修正.ext_kerもE_SYSを返すコードに修正. - CFG_INTは,有効なすべての割込み番号に対応する方針に従い,コンフィ ギュレータのエラー条件を修正. - makedepに-Sオプションを追加. - シリアルドライバでサポートするポート数を,最大4ポートに変更. ・ドキュメントの充実,コメントの修正 ・バージョン番号の更新 - カーネルのバージョン番号を更新. ○ターゲット依存部の要修正箇所(1.6.0 → 1.7.0) (1) ターゲット依存部で,calltexを呼ぶ代わりにcalltexの内容をインライン 展開している場合に,call_texrtnを呼び出す条件に「ipmflgがtrue」を追加す るように修正. (2) 割込み出入口処理が正しいかの確認. - ポーティングガイドの割込み出入口処理に追加した「割込み優先度マス クを,全解除状態(TIPM_ENAALL)の値に設定する … (*h)」の処理が実 現されているかを確認. - ポーティングガイドの6.6.1節の記述を確認((*g)(*i)の注記を追加する など,記述を詳細化した). (3) exc_sense_unlockの定義を削除. (4) TARGET_TSKATR,TARGET_ISRATR,TARGET_INHATR,TARGET_INTATR, TARGET_EXCATR,TARGET_MIN_STKSZ,CHECK_STKSZ_ALIGNの定義を,ターゲット 依存部のテンプレートファイル(パス2)からヘッダファイルに移動. (5) CHECK_FUNC_ALIGN,CHECK_FUNC_NONNULL,CHECK_STACK_ALIGN, CHECK_STACK_NONNULL,CHECK_MPF_ALIGN,CHECK_MPF_NONNULLの定義を,ターゲッ ト依存部のテンプレートファイル(パス3)からヘッダファイルに移動. (6) 動的生成機能拡張パッケージに対応. - CHECK_MB_ALIGNの定義を追加. - TSZ_PDQMBの定義を追加(デフォルトで不都合な場合). - VALID_INTNO_CREINTの定義を追加. - 動的メモリ管理に関する定義を追加. (7) オフセットファイルをコンフィギュレータで生成する方法への対応(必須 ではないが,対応しておくことが望ましい).詳しくは,ポーティングガイド の2.5節を参照すること. (8) USE_TSKINICTXBをマクロ定義し,CHECK_STACK_ALIGNとCHECK_STACK_NONNULL のいずれかを定義している場合には,TINIBからスタック領域の先頭番地を取り 出すためのテンプレートファイル関数GET_STK_TSKINICTXBを定義. ---------------------------------------------------------------------- TOPPERS/ASPカーネル Release 1.5.0 から 1.6.0 への変更点 ○変更点のリスト ・cfgの新しいバージョン(1.6)に対応 - offsetof_TINIB_stkszとoffsetof_TINIB_stkの取得記述をターゲット非 依存部に移動. ・ユーティリティの修正 - genoffsetに,エンディアン指定をチェックする機能を追加.その際に, コードを整理. ・その他の修正 - TCBのpriorityフィールドを,条件があえばuint_8で定義するように修正. - ターゲット依存部でSIL_ENDIAN_BIGもSIL_ENDIAN_LITTLEも定義されてい ない場合に,sil.hでエラーを検出するように修正. - システムログ機能のsysog_logmaskとsyslog_lowmask_notの初期値を修正. - makereleaseを,ファイルの重複をチェックするように修正. - test_utm1のエラーメッセージを修正. ・ドキュメントの充実,コメントの修正 ・バージョン番号の更新 - カーネルのバージョン番号を更新. ○ターゲット依存部の要修正箇所(1.5.0 → 1.6.0) (1) makeoffset.cの修正 - makeoffset.cに,sil_endian関数を追加する(これにより,genoffsetの エンディアン指定をチェックする機能が有効になる). - オーバランハンドラ拡張パッケージに対応する場合には,leftotmフィー ルドが含まれているかを確認する. - 生成されるoffset.hに変化がないことを確認する. (2) 値取得シンボルテーブルのターゲット依存部の修正 - 以下の2行をtarget_def.csv(またはそれに代わるファイル)から削除する. offsetof_TINIB_stksz,"offsetof(TINIB,stksz)" offsetof_TINIB_stk,"offsetof(TINIB,stk)" ※ Release 1.5.0における修正を元に戻す. (3) target_fput_logの実装制限の確認(仕様が修正されたわけではない) - target_fput_log全割込みロック状態で呼び出せるようになっているか確 認する. ---------------------------------------------------------------------- TOPPERS/ASPカーネル Release 1.4.0 から 1.5.0 への変更点 ○変更点のリスト ・カーネル管理外の割込みとCPU例外の扱いの見直し - カーネル管理外の割込みの設定方法を整理・拡張. - カーネル管理外の割込みハンドラは,カーネル内の出入口処理を経由し ないことを基本とした(ターゲット依存). - CPU例外ハンドラの出入口処理におけるカーネル管理外のCPU例外の扱い を規定. ・chg_ipmとget_ipmの仕様変更 - chg_ipmとget_ipmは,CPUロック状態では呼べないものとした. - これに伴ってテストプログラムを修正. ・タイマ割込み処理で呼び出したialm_timの基準時間の変更 - current_timeの更新後に,タイムイベントの処理を行うように変更. - 有効な最小のシステム時刻としてmin_timeを導入. - pend_updateを廃止. ・タスクのスタックサイズの最小値チェックの追加 - スタックサイズが0の場合のエラーを,ターゲット非依存で検出. - ターゲット依存で,タスクのスタックサイズの最小値を設定できるよう にした. ・タスク初期化コンテキストブロックの追加 - ターゲット依存で,タスク初期化コンテキストブロック(TSKINICTXB) を使用できるようにした. ・ターゲット依存部で定義する名称のリネーム方法の変更 - ターゲット依存部で定義し,ターゲット非依存部から参照する名称のリ ネーム記述を,ターゲット依存部に移動. ・拡張パッケージの追加 - ミューテックス機能拡張パッケージ,オーバランハンドラ機能拡張パッ ケージ,タスク優先度拡張パッケージを,一般公開するファイルに追加. - オーバランハンドラ機能拡張への対応方法を,ポーティングガイドに記載. ・サポートする機能を識別するマクロの定義方法の変更 - ターゲット依存部でTOPPERS_TARGET_SUPPORT_XXXXXがマクロ定義されて いれば,kernel.hでTOPPERS_SUPPORT_XXXXXをマクロ定義する方法に変更. ・システムログ機能の修正 - syslog_initializeが呼ばれる前のログ情報の出力に対応. - sysog_logmaskとsyslog_lowmask_notの初期値を修正. ・テストライブラリの修正 - test_lib.hとtest_lib.cを,testディレクトリから,それぞれincludeと libraryディレクトリに移動. - syslog_flush関数を追加.logtask_flushの代わりに使用. - test_finish関数を追加.テストプログラム中でext_kerの代わりに使用. - 以上に伴ってテストプログラムを修正. ・configureの拡張 - Makefileのテンプレートを指定するためのオプションを追加. ・その他のバグフィックス - kernel_impl.h中のマクロ名の修正. - kernel.tf中の文法ミスの修正. ・その他の修正 - CTXB型をTSKCTXB型に名称変更. - ext_tskで,戻らないはずの処理から戻った場合には,E_SYSを返す. - call_texrtnからdispatchを呼び出す処理を改善. - make_non_waitを,wait.cからwait.hに移動. - xsns_xpn中の冗長な条件式を削除. - TA_DISINTとTA_LEVELをitron.hから削除. - LOG_TEX_LEAVEの第2パラメータを削除. - サンプルのMakefileに,OMIT_WARNING_ALLとOMIT_OPTIMIZATIONを追加. - get_utmに関するテスト(1)(test_utm1)を追加. - test_dlynse.cの表示を改善. ・ドキュメントの充実,コメントの修正 - 機能拡張・チューニングガイドに関して,ユーザーズマニュアルに記載. - キュー操作ライブラリ関数に関して,ユーザーズマニュアルに記載. - システムの起動時の初期化処理に関して,ユーザーズマニュアルに記載. - 設計メモを拡充. ・バージョン番号の更新 - カーネル仕様のバージョン番号,カーネルのバージョン番号を更新. ○ターゲット依存部の要修正箇所(1.4.0 → 1.5.0) (1) カーネル管理外の割込みの扱いの変更 - カーネル管理外の割込みハンドラの呼び出し方について,これまでの考 え方を変更した.「ターゲット依存部 ポーティングガイド」の6.6.7節 の記述通りに実装されているかチェックする. - TA_NONKERNELを使用できるようにする場合には,target.tfで, TARGET_INHATRにTA_NONKERNELを設定する. - パス2のテンプレートファイルのターゲット非依存部に, INTNO_FIX_KERNEL,INHNO_FIX_KERNEL,INTNO_FIX_NONKERNEL, INHNO_FIX_NONKERNEL,USE_INHINIB_TABLE,USE_INTINIB_TABLEのサポー トが追加されたので,使用できる場合には使用するように修正する. - カーネル管理の割込みハンドラの出入口処理について,「ターゲット依 存部 ポーティングガイド」の6.6.1節の記述通りに実装されていること を確認する. (2) カーネル管理外のCPU例外の扱いの変更 - カーネル管理外のCPU例外ハンドラの呼び出し方について,これまでの考 え方を変更した.「ターゲット依存部 ポーティングガイド」の6.7.1節 の記述を参照して,実装を修正する. (3) ターゲット依存部で定義する名称のリネームの追加 - ターゲット依存部で定義し,ターゲット非依存部から参照する名称のリ ネーム記述を,ターゲット依存部に追加する.ターゲット依存部とチッ プ依存部の間でも同様の変更を行うことが望ましい.ただし, arch/logtrace/trace_config.cで定義される名称については,ターゲッ ト依存部でリネームする. (4) ターゲット依存部でサポートする機能を示すマクロの変更 - ターゲット依存部で定義しているTOPPERS_SUPPORT_DIS_INTを TOPPERS_TARGET_SUPPORT_DIS_INTに,TOPPERS_SUPPORT_ENA_INTを TOPPERS_TARGET_SUPPORT_ENA_INTに,TOPPERS_SUPPORT_GET_UTMを TOPPERS_TARGET_SUPPORT_GET_UTMに,それぞれ変更する. (5) タスクコンテキストブロックの型名の変更 - CTXB型をTSKCTXB型に名称変更する. (6) 値取得シンボルテーブルのターゲット依存部の修正 - 以下の2行をtarget_def.csv(またはそれに代わるファイル)に加える. offsetof_TINIB_stksz,"offsetof(TINIB,stksz)" offsetof_TINIB_stk,"offsetof(TINIB,stk)" ※ 新設されたUSE_TSKINICTXBを使う場合には必要ない. ※ Release 1.6以降を用いる場合には,この修正は必要はない. (7) ログマクロの修正 - LOG_TEX_LEAVEの第2パラメータが削除されたので,LOG_TEX_LEAVEを定義 している場合には,その定義を変更する. (8) スタートアップモジュールの修正(bssセクションのクリアを省略している 場合のみ) - システムログ機能を使用する場合には,スタートアップモジュールに, syslog_logmaskとsyslog_lowmask_notを0に初期化するコードを追加する. - トレースログ記録のサンプルコードを組み込んでいる場合には,スター トアップモジュールに,trace_modeを0に初期化するコードを追加する. (9) タスクのスタックサイズの最小値チェックの設定(オプション) - ターゲット依存に,タスクのスタックサイズの最小値をチェックする場 合には,最小値をTARGET_MIN_STKSZに定義する. (10) オーバランハンドラ機能拡張への対応(オプション) - オーバランハンドラ機能拡張パッケージに対応する.対応方法について は,「ターゲット依存部 ポーティングガイド」中の「#ifdef TOPPERS_SUPPORT_OVRHDR」がある箇所と,5.7節と6.14節を参照すること. ---------------------------------------------------------------------- TOPPERS/ASPカーネル Release 1.3.2 から 1.4.0 への変更点 ○変更点のリスト ・周期ハンドラの仕様変更 - sta_cycを呼び出した後,最初に周期ハンドラが起動される時刻を,起動 周期後から,起動位相後に変更. ・TSZ_MPFの定義を削除 ・call_atexitの廃止 - ターゲット非依存部からcall_atexitを呼び出すのをやめる. call_atexitで行っていた処理(標準的にはsoftware_term_hookを呼び出 す処理)は,必要であればtarget_exitの先頭で行うこととする. ・get_utmの問題の修正 - 周期ハンドラ,アラームハンドラの中でget_utmを呼ぶと,正しい時刻が 返らない問題を修正. ・スケジューラのモジュール性向上 - タスク状態(tstat)の変更を,make_runnableではなく,それを呼ぶ側 の関数で行うように修正. ・テンプレート変数の値の自動取得 - OMIT_INITIALIZE_INTERRUPTとOMIT_INITIALIZE_EXCEPTIONの2つのテンプ レート変数の値を,ヘッダファイルの定義から自動取得するように修正. ・トレースログ機能の改善 - LOG_TEX_ENTER,LOG_TEX_LEAVEのパラメータに,p_runtskを追加. ・実行時間分布集計モジュールの修正 - 時刻取得の方法をターゲット依存で変更できるように修正. - TNUM_HISTの定義を,histgram.hからhistgram.cに移動. ・コンフィギュレータの分離 - cfgは,ASPカーネルとは独立したパッケージとして配布することにする. ・マイグレーションガイドの分離 - doc/migration.txtは,別途PDFファイルで配布することにする. ・テストプログラム,性能評価プログラムの追加 - セマフォ機能のテスト(2)(test_sem2)を追加. - act_tsk,iact_tskの処理時間の評価プログラム(perf4)を追加. ・clean時に削除するファイル - clean時に削除するファイルを,ターゲット依存部で定義するための変数 (CLEAN_FILES)を導入. ・ユーティリティの修正 - makereleaseが使うディレクトリ名(asp)を,カレントディレクトリか ら決定するように修正. - makedepに,Cygwin環境におけるルートディレクトリ名を指定するため の-Rオプションを追加.MakefileにMAKEDEP_OPTS変数を追加. - gentestをアラームハンドラの複数回起動に対応できるように拡張. ・その他のバグフィックス - リネームするシンボルを修正. - 割込みサービスルーチン,初期化ルーチン,終了処理ルーチンの先頭番 地に関数名以外を記述した場合にも動作するように修正. - Makefile.dependがない場合の問題を修正. ・ドキュメントの充実,コメントの修正 - 各ドキュメントにTOPPERSライセンスと目次を追加. ・バージョン番号の更新 - カーネル仕様のバージョン番号,カーネルのバージョン番号を更新. ○ターゲット依存部の要修正箇所(1.3.2 → 1.4.0) (1) call_atexitの廃止 - call_atexitを廃止したため,ターゲット依存部から定義を削除する. call_atexitで行っていた処理(標準的にはsoftware_term_hookを呼び出 す処理)は,必要であればtarget_exitの先頭で行う. (2) テンプレート変数の値の設定の削除 - OMIT_INITIALIZE_INTERRUPTとOMIT_INITIALIZE_EXCEPTIONの2つのテンプ レート変数の値を,ヘッダファイルの定義から自動取得するように修正 したため,ターゲット依存部(target.tfまたはそこからインクルードさ れるファイル)で値を定義していれば,その定義を削除する. (3) makedepを呼ぶ際のオプションの追加 - Makefileのターゲット依存部(Makefile.target等)でmakedepを呼んで いる場合には,$(MAKEDEP_OPTS)を追加する. 例)@$(PERL) $(SRCDIR)/utils/makedep -C $(CC) $(MAKEDEP_OPTS) \ -O "$(CFLAGS) $(KERNEL_CFLAGS)" $< >> Makefile.depend (4) 簡易パッケージへのコンフィギュレータの追加 - コンフィギュレータ(cfg)がターゲット非依存部から分離されたため, 簡易パッケージに入れる場合には,E_PACKAGEにcfgを含めるための記述 を追加する. 例)INCLUDE ../../cfg/MANIFEST ---------------------------------------------------------------------- TOPPERS/ASPカーネル Release 1.3.1 から 1.3.2 への変更点 ○変更点のリスト ・TMAX_RELTIMをユーザから参照できるマクロに - TMAX_RELTIMの定義を,kernel/time_event.hからinclude/t_stddef.hに 移動. ・const指定の追加 - syslog_printf,syslog_print,syslog_wri_log,serial_wri_datのパラ メータにconst指定を追加. ・TMIN_ISRPRI,TMAX_ISRPRIの導入 ・実行時間分布集計モジュールで時間の逆転が疑われるケースの扱い - 実行時間分布集計モジュールで時間の逆転が疑われる度数を計測するよ うに修正. ・システムログタスクの終了処理の修正 - ログバッファに残ったログ情報であることを示す文字列を出力するように 修正. ・コンフィギュレータの修正 - 順序付きリストの要素に式を使えるように変更. - 静的APIのパラメータに型キャストが含まれるとパースできないバグの修正. - #pragma onceを用いると行番号がずれるバグの修正. - cfgファイルを指定しなかった場合のエラーメッセージの修正. ・コンフィギュレータが生成するファイル - コンフィギュレータがkernel_cfg.c以外のファイルを生成する場合に対 応するための変数(CFG_OBJS,CFG2_OUT)を導入. ・realclean時に削除するファイル - realclean時に削除するファイルを,ターゲット依存部で定義するための 変数(REALCLEAN_FILES)を導入. ・テストプログラムの追加・拡充 - セマフォ機能のテスト(1)を追加. - カーネルの整合性検査にセマフォ毎の検査を追加. ・バグフィックス - 非タスクコンテキスト用スタックの確保時のサイズの誤り. - kernel.tf中のエラーメッセージの誤り. - 実行時間分布集計モジュールにおける最大値の扱いのバグ. - Makefile中のAPPLDIRに複数のディレクトリが定義されている時の扱い. - test/perf.cで,計測回数を10000回になるように修正. - DVE68Kターゲット依存部のtarget.tf中のエラーメッセージの誤り. ・ドキュメントの充実,コメントの修正 - 各ドキュメントにTOPPERSライセンスと目次を追加. ・バージョン番号の更新 ○ターゲット依存部の要修正箇所(1.3.1 → 1.3.2) 特になし ---------------------------------------------------------------------- TOPPERS/ASPカーネル Release 1.3.0 から 1.3.1 への変更点 ○変更点のリスト ・スタックサイズのエラーチェックを追加 - CRE_TSKのstk(タスクのスタック領域の先頭番地)がNULLでない場合に, stkszを適切な値(ターゲット依存の値の倍数)に丸める処理をやめ,適 切な値でない場合にエラーとするように修正. - DEF_ICSのistk(非タスクコンテキスト用のスタック領域の先頭番地)が NULLでない場合に,istkszが適切な値(ターゲット依存の値の倍数)で ない場合のエラーのチェックを追加. ・強制待ち要求ネストの廃止に伴う追加修正 - TMAX_SUSCNTの定義を,kernel.hからitron.hに移動. - ref_tskで参照できる情報(T_RTSKのフィールド)からsuscntを削除. ・kernel_api.csvの修正 - 各オブジェクトの属性のパラメータを,符号無しに修正. ・kernel_def.csvの修正 - 符号付きのシンボルの定義に",signed"を付加. ・itron.hの修正 - frsm_tskのタイプミスの修正. ・コンフィギュレータの修正 - 組込み関数DUMP, TRACE, NOOPを追加. - $FOREACH$や$IF$等の中身が何もないときに,internal errorになる不具 合を修正(エラーメッセージの適切化). - $INCLUDE$命令でインクルードしたtfの行番号がずれる不具合を修正. - 64ビット整数が定義されていないと,CSVファイルでsをつけたレコード が符号付きと扱われない不具合の修正. - 型キャストのパース処理に関する不具合の修正. - エラーの起こった行番号が正しくない不具合の修正. - 同じtskidに対してDEF_TEXが複数あるエラーのチェックを行うように修正. - DEF_TEXを使用した時に,TSK.TSKID[tskid]が0になる不具合の修正. - DEF_INH,CFG_INT,DEF_EXCで同じオブジェクト番号に対する登録が重複し た場合のエラーチェックを二重に行っている問題の修正. ・配布するファイルの修正 - doc/api_spec.txt, ngki_spec.txt, sysstat.txtを除外. - extensionディレクトリを除外. ・ドキュメントの修正,コメントの修正 ・バージョン番号の更新 ○ターゲット依存部の要修正箇所(1.3.0 → 1.3.1) (1) スタックサイズのエラーチェックに関する修正箇所 - target.tfでkernel.tfをインクルードする前に,CHECK_STKSZ_ALIGNを, スタックサイズがどの値の倍数になっていなければならないかを設定す る. 例)$CHECK_STKSZ_ALIGN = 4$ (2) ターゲット依存部のユーザーズマニュアルについて - ターゲット依存部のユーザーズマニュアルのファイル名と,そのファイ ルに記述すべき内容を規定した.「ターゲット依存部 ポーティングガイ ド」の「9.1 ドキュメント」の節を参照すること. ---------------------------------------------------------------------- TOPPERS/ASPカーネル Release 1.2.1 から 1.3.0 への変更点 ○変更点のリスト ・set_tim(システム時刻の設定)の廃止 ・属性の変更 - TA_DISINTを廃止して,TA_ENAINTを復活. ・拡張機能・ターゲット定義機能の有無を判別するマクロ名の変更 - TOPPERS_EXTENSION_MUTEXをTOPPERS_SUPPORT_MUTEXに. - TOPPERS_EXTENSION_PRI_LEVELをTOPPERS_SUPPORT_PRI_LEVELに. - SUPPORT_???_???をTOPPERS_SUPPORT_???_???に変更し,ターゲット依存 部での定義をtarget_kernel.hに移動する. ・型名・変数名・定数名の変更 - SYSUTIM → SYSUTM,sysutim → sysutm,p_sysutim → p_sysutm - SIO_ERDY_SND → SIO_RDY_SND,SIO_ERDY_RCV → SIO_RDY_RCV - sio_ierdy_snd → sio_irdy_snd,sio_ierdy_rcv → sio_irdy_rcv ・cfg1_out.cのコンパイル/リンク方法の変更 - cfg1_out.cからtarget_cfg1_out.hをインクルードするように,コンフィ ギュレータを変更. - ターゲット依存部でtarget_cfg1_out.hを用意する. - cfg1_out.cのリンクは,カーネルと同じ方法をとるように変更. ・コンフィギュレータの修正 - cfg1_out.cに生成する内容の変更(前記と関連). - boost 1.35.0に対応. ・サンプルプログラムの修正 - タスク内でのループ回数を固定する機能(TASK_LOOP)を導入. ・バグフィックス - 固定長メモリプール領域の確保方法. - DEF_TEXのエラーで,問題になったDEF_TEXの行番号を表示する. ・用語の変更 -「割込みロック」→「全割込みロック」 ・ドキュメントの修正 ・バージョン番号の更新. ○ターゲット依存部の要修正箇所(1.2.1 → 1.3.0) (1) TA_DISINTの廃止・TA_ENAINTの復活に伴う修正箇所 - TA_DISINTを使った判定をTA_ENAINTを使った判定に変更する. 例)((intatr & TA_DISINT) == 0U) → ((intatr & TA_ENAINT) != 0U) - CFG_INTの割込み属性にTA_DISINTが設定されていれば,それを消す. 例)CFG_INT(INTNO_SIO, { TA_DISINT | INTATR_SIO, INTPRI_SIO }); → CFG_INT(INTNO_SIO, { INTATR_SIO, INTPRI_SIO }); - CFG_INTの割込み属性にTA_DISINTが設定されていなければ,TA_ENAINTを 加える. 例)CFG_INT(INTNO_TIMER, { INTATR_TIMER, INTPRI_TIMER }); → CFG_INT(INTNO_TIMER, { TA_ENAINT | INTATR_TIMER, INTPRI_TIMER }); (2) 拡張機能・ターゲット定義機能の有無を判別するマクロ名の変更に伴う修正箇所 - SUPPORT_???_???をTOPPERS_SUPPORT_???_???に変更し,ターゲット依存 部での定義をtarget_kernel.hに移動する. TOPPERS_SUPPORT_DIS_INT dis_intをサポートする TOPPERS_SUPPORT_ENA_INT ena_intをサポートする TOPPERS_SUPPORT_GET_UTM get_utmをサポートする - makeoffset.cで,TOPPERS_EXTENSION_MUTEXを参照している場合には, TOPPERS_SUPPORT_MUTEXに変更する. (3) 型名・変数名・定数名の変更に伴う修正箇所 - SYSUTIM → SYSUTM,sysutim → sysutm,p_sysutim → p_sysutm - SIO_ERDY_SND → SIO_RDY_SND,SIO_ERDY_RCV → SIO_RDY_RCV - sio_ierdy_snd → sio_irdy_snd,sio_ierdy_rcv → sio_irdy_rcv ★sysutimとerdyを大文字小文字を区別せずにサーチするとよい. (4) cfg1_out.cのコンパイル/リンク方法の変更に伴う修正箇所 - ターゲット依存部で,target_cfg1_out.hを用意する.詳しくは,「ター ゲット依存部 ポーティングガイド」の7.4節を参照. - 新たに用意したファイルをMANIFESTに追加する. (5) 警告メッセージへの対処 - Makefile.targetに,「COPTS := $(COPTS) -Werror」を追加することを 検討する.カーネル内で厳密な別名規則による警告メッセージが出る場 合には,「KERNEL_CFLAGS := $(KERNEL_CFLAGS) -fno-strict-aliasing」 を追加してもよい. (6) コメントの修正 -「割込みロック」→「全割込みロック」 ---------------------------------------------------------------------- TOPPERS/ASPカーネル Release 1.2.0 から 1.2.1 への変更点 ○変更点のリスト ・トレースログ記録のサンプルコードを組み込む方法の変更 - configureに-rオプションを追加. - sample/Makefileの修正. ・Makefileのコンフィギュレータ関連部分の変更 - コンフィギュレータに対するターゲット依存のオプションを,Makefile のターゲット依存部で記述するように変更. - コンフィギュレータの各パスのターゲット依存のファイルへの依存関係 を,Makefileのターゲット依存部で記述するように変更. ・バージョン番号の更新. ○ターゲット依存部の要修正箇所(1.1.0 → 1.2.1) (1) 新しいコンフィギュレータへの対応 ・target.tf中で,ヘッダファイルと重複した定数値の定義を行っている場合に  は,target_def.cvsに変数記述を行い,重複した定義を削除する. ・コンフィギュレータに対するオプションに,target_def.cvsを読み込ませる  指定を追加する.「ターゲット依存部 ポーティングガイド」2.4節の  (2-4-15) 項を参照. ・target_check.tfを作成する.「ターゲット依存部 ポーティングガイド」  7.3節参照. ・コンフィギュレータの各パスに対して,ターゲット依存のファイルへの依存  関係を定義する.「ターゲット依存部 ポーティングガイド」2.7節参照. (2) データ型と定数の変更・追加 ・BOOLをbool_tに,TRUEとFALSEをそれぞれtrueとfalseに変更する.ER_BOOLな  どを変更しないように注意すること.コメント中に記述されたこれらのデー  タ型と定数も変更すること. ・charをchar_tに変更する.ただし,文字列定数が記述されることが多い引数  等は,コンパイラの警告を避けるために,char *のままとする.ターゲット  依存部で最低限変更しなければならないのは,以下の2箇所. - target_fput_logの引数 - sio_snd_chrの第2引数 ・target_stddef.h(またはそこからインクルードされるファイル)に,サイズ  の指定された浮動小数点型(float32_tとdouble64_t),その最大値・最小値  のマクロの定義を追加する.「ターゲット依存部 ポーティングガイド」3.4  節参照.開発環境がGCCでarch/gcc/tool_stddef.hを用いており,float型と  double型がそれぞれIEEE754準拠の単精度浮動小数点数と倍精度浮動小数点数  である場合には,arch/gcc/tool_stddef.hをインクルードする前に,  TOPPERS_STDFLOAT_TYPE1をマクロ定義すればよい. (3) トレースログ記録のサンプルコードの組込み(オプション) ・ターゲット依存部を,トレースログ記録のサンプルコードを使用するように  修正する.「ターゲット依存部 ポーティングガイド」6.11.2節参照. (4) TARGETDIR変数の使用 ・Makefileのターゲット依存部で,ターゲット依存部ディレクトリを参照して  いる箇所で,$(SRCDIR)/target/$(TARGET)を,$(TARGETDIR)に変更する. ---------------------------------------------------------------------- TOPPERS/ASPカーネル Release 1.1.0 から 1.2.0 への変更点 ○変更点のリスト ・コンフィギュレータを新しいバージョンに差し換え - パス1とパス3にもターゲット依存機能を追加. - FMPカーネルのクラス記述に対応. - 追加ファイル(ターゲット非依存部,cfg以下を除く) kernel/kernel_api.csv, kernel_def.csv, kernel_check.tf - 追加ファイル(ターゲット依存部) target_def.csv, target_check.tf - sample/Makefileを新しいコンフィギュレータに対応させる. - ミューテックス機能拡張でコンフィギュレータのmakeを不要に. ・データ型と定数の変更・追加 - BOOL型をbool_t型に変更. BOOL → bool_t,TRUE → true,FALSE → false 従来の定義をitron.hに追加. - char型をchar_t型に変更. ただし,文字列定数が記述されることが多い引数等は,コンパイラの 警告を避けるために,char *のままとする. - float32_t, double64_tの追加. ・テストプログラムの追加・修正 - システムコンフィギュレーションファイルからインクルードするコンフィ ギュレーションファイルの整理(ボトムアップ順序に). - テストプログラムの生成スクリプト(utils/gentest)を作成. - ミューテックス機能のテストプログラムを生成スクリプト対応に. - ミューテックス機能拡張にtest_mutex7を追加. ・システムサービスのヘッダファイルのインクルード記述の整理 - syssvcの下のヘッダファイルは,#include "syssvc/??????.h"でインク ルードする(??????.cからインクルードする場合を除く). - Makefileから,-I$(SRCDIR)/syssvcを削除. ・カーネル起動メッセージの出力(banner)機能の独立 - syssvc/banner.cfg, banner.hを作成. - syslog.cfgから関連する記述を削除. ・t_syslog.hとsyslog.hの役割の変更 - t_syslog.hは,システムログ出力を行うための定義を含むヘッダファイ ルとし,システムログ機能を操作するための定義は,syslog.hに移す. ・シリアルインタフェースドライバのフラッシュ方法の変更 - シリアルインタフェースドライバの強制フラッシュ機能は廃止し,未送 信文字の取出し機能を新設.これを用いた強制フラッシュ処理は,シス テムログタスクの終了処理ルーチン側で実施. ・タスクディスパッチの要否の判定方法の変更 - タスクディスパッチの必要な状態にする関数を,すべて,タスクディス パッチの要否を返すようにし,p_runtskとp_schedtskの比較による判定 をなるべく使わないように修正. ・トレースログ記録のサンプルコードの使用方法を規定 - ポーティングガイドの6.11.2節に,ターゲット依存部でトレースログ記 録のサンプルコードを使用する方法を規定. - DVE68Kターゲット依存部をそれに従うように修正. ・TARGETDIR変数の導入 - sample/Makefileで,ターゲット依存部ディレクトリを示す変数 TARGETDIRを定義. - これを使うように,ターゲット依存部を修正. ・その他のバグフィックス - kernel_rename.def:log_???_entry → log_???_enter ・その他の修正 - T_RLOG → T_SYSLOG_RLOG - syssvcの下のヘッダファイルにもthrow()を入れる. - makerelease:RELEAEディレクトリがなければ作る. ・ドキュメントの充実.コメントの追加・修正. - doc/migration.txtを作成(現時点では未完成). ・バージョン番号の更新. ○ターゲット依存部の要修正箇所(1.1.0 → 1.2.0) (1) 新しいコンフィギュレータへの対応 ・target.tf中で,ヘッダファイルと重複した定数値の定義を行っている場合に  は,target_def.cvsに変数記述を行い,重複した定義を削除する. ・target_check.tfを作成する.「ターゲット依存部 ポーティングガイド」  7.3節参照. (2) データ型と定数の変更・追加 ・BOOLをbool_tに,TRUEとFALSEをそれぞれtrueとfalseに変更する.ER_BOOLな  どを変更しないように注意すること.コメント中に記述されたこれらのデー  タ型と定数も変更すること. ・charをchar_tに変更する.ただし,文字列定数が記述されることが多い引数  等は,コンパイラの警告を避けるために,char *のままとする.ターゲット  依存部で最低限変更しなければならないのは,以下の2箇所. - target_fput_logの引数 - sio_snd_chrの第2引数 ・target_stddef.h(またはそこからインクルードされるファイル)に,サイズ  の指定された浮動小数点型(float32_tとdouble64_t),その最大値・最小値  のマクロの定義を追加する.「ターゲット依存部 ポーティングガイド」3.4  節参照.開発環境がGCCでarch/gcc/tool_stddef.hを用いており,float型と  double型がそれぞれIEEE754準拠の単精度浮動小数点数と倍精度浮動小数点数  である場合には,arch/gcc/tool_stddef.hをインクルードする前に,  TOPPERS_STDFLOAT_TYPE1をマクロ定義すればよい. (3) トレースログ記録のサンプルコードの使用方法に従った修正(オプション) ・ターゲット依存部を,トレースログ記録のサンプルコードを使用するように  修正する.「ターゲット依存部 ポーティングガイド」6.11.2節参照. (4) TARGETDIR変数の使用 ・Makefileのターゲット依存部で,ターゲット依存部ディレクトリを参照して  いる箇所で,$(SRCDIR)/target/$(TARGET)を,$(TARGETDIR)に変更する. ---------------------------------------------------------------------- TOPPERS/ASPカーネル Release 1.0.0 から 1.1.0 への変更点 ○変更点のリスト ・frsm_tskをカーネルから削除.itron.hにマクロ定義として残す ・カーネルのトレースログ機能の改修 - トレースログマクロを使う側のファイルで,デフォルト定義を与える. - nulltraceを廃止.logtraceを修正. - ターゲット依存部でのトレースログ取得方法を標準化. - INTHDR_ENTRYとEXCHDR_ENTRYにパラメータを追加. - target_putcを,target_fput_logにリネーム. ・システムログ機能をカーネルから外して,システムサービスの位置付けに - syslog.c,syslog.h,banner.cを,kernelからsyssvcに移動. - システムログ機能のサービスコールの名称にsyslog_を付加. ・システムサービスのディレクトリの位置付けの明確化 - logtask.hとserial.hを,includeからsyssvcに移動. - vasyslog.cを,libraryからsyssvcに移動. ・リリースパッケージの形態を整備 - utils/makereleaseを作成.utils/genmanifestを削除. - MANIFESTファイルに,パッケージ名とバージョン番号を記述. - MANIFESTファイルのINCLUDE記述を変更. ・出入口処理の番地の変数/フィールド名の変更 - 割込みハンドラ/CPU例外ハンドラの出入口処理の番地(FP型)の変数/ フィールド名をint_entry/exc_entryに変更.コメントも修正. ・DVE68K/M68K依存部の修正. - target.tf中のエラーメッセージの修正. - logtraceを使うように修正. ・その他の修正. - 固定長メモリプール初期化ブロックの生成に関するバグを修正. - configureで,cfgが生成されているかのチェックを厳密化. - sample/Makefileにおいて,ライブラリに関する依存記述の修正. - sample/sample1.cfgにおいて,システムサービスの定義順を変更. - extension/MANIFESTに,MANIFESTを追加. ・ドキュメントの充実.コメントの追加・修正. ・バージョン番号の更新. ○ターゲット依存部の修正箇所(1.0.0 → 1.1.0) ・カーネルのトレースログ機能の中で,ターゲット依存部で実装する必要があ  るものを実装する.詳しくは,porting.txtの6.1.2節,6.5.2節,6.6.1節,  6.7.1節を参照すること. ・INTHDR_ENTRYとEXCHDR_ENTRYに2番目のパラメータが追加されたのに対応する. ・TARGET_NAMEとCOPYRIGHT_TARGETを,target_config.hからtarget_syssvc.hに  移動する.COPYRIGHT_TARGETはTARGET_COPYRIGHTにリネームする. ・target_putcをtarget_fput_logにリネームし,その宣言をtarget_config.hか  らtarget_syssvc.hに移動する.関数定義は,target_config.cに置いたまま  でよい.関数宣言・定義の上のコメントを修正する. ・割込みハンドラの出入口処理の番地(FP型)の変数/フィールド名をinthdr  からint_entryに,CPU例外ハンドラの出入口処理の番地(FP型)の変数/  フィールド名をexchdrからexct_entryに,それぞれ変更する.これに関連す  るx_define_inhとx_define_excのコメントを修正する. ・トレースログを記録しない場合には,target_config.hから「#include  "nulltrace/trace_config.h"」を削除する. ・トレースログを記録する場合には,target_syssvc.hに「#include  "logtrace/trace_config.h"」を追加する.また,target_config.h中の  「#include "logtrace/trace_config.h"」の位置を前の方に移動する. ・MANIFESTとE_PACKAGEを作成/修正する.MANIFEST中に,必要に応じて,  PACKAGEディレクティブとVERSIONディレクティブを追加する.また,  INCLUDEディレクティブのパラメータを,ディレクトリ名からファイル名に変  更する.ターゲットシステム毎に,E_PACKAGEを作成する.詳しくは,  user.txtの2章とporting.txtの9.1節を参照すること. ----------------------------------------------------------------------