
		TOPPERS/ASPカーネル
		変更履歴

		対応バージョン: Release 1.3.1
		最終更新: 2008年5月10日

このドキュメントは，TOPPERS/ASPカーネルのRelease 1.0.0以降の変更履歴を，
新しい方から順に記述したものである．

======================================================================

		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の２章とporting.txtの9.1節を参照すること．

======================================================================
