TOPPERS/ASPカーネル 変更履歴 対応バージョン: Release 1.3.2 最終更新: 2008年8月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-2008 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 1234 2008-08-09 14:24:38Z ertl-hiro $ ---------------------------------------------------------------------- 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節を参照すること. ----------------------------------------------------------------------