
		TOPPERS/HRP2カーネル
		変更履歴

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

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

----------------------------------------------------------------------
 TOPPERS/HRP Kernel
     Toyohashi Open Platform for Embedded Real-Time Systems/
     High Reliable system Profile Kernel

 Copyright (C) 2012-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 1034 2015-05-30 00:11:48Z ertl-hiro $
----------------------------------------------------------------------

		TOPPERS/HRPカーネル
		Release 2.2.0 から 2.2.1 への変更点

○変更点のリスト

・エラーチェックの追加
	- LNK_SECをドメインの囲みの中に記述するとE_RSATRエラーになるように
	  修正．

・ミューテックス機能のバグフィックス
	- ref_mtxでE_MACVエラーのチェックが抜けていたバグを修正．

・動的生成機能拡張のバグフィックス
	- acre_cycで，周期ハンドラを開始する処理のバグを修正．
	- AID_FLGのパラメータ間違いのバグを修正．

・テストプログラム用ライブラリの修正
	- check_assert_errorとcheck_ercd_errorを拡張サービスコールに．
	- test_lib.cを廃止（test_svc.cに集約）．

・ARM依存部をC++に対応
	- ARM依存部で，.preinit_array，.init_array，.fini_array，.ARM.exidx
	  セクションを作るように修正．
	- ldscript.tfにEND_LABEL_HOOKの仕組みを追加して，これを実現．

・ドキュメントの修正．

・バージョン番号の更新
	- カーネルのバージョン番号を更新．

----------------------------------------------------------------------

		TOPPERS/HRPカーネル
		Release 2.1.0 から 2.2.0 への変更点

○変更点のリスト

・動的生成機能拡張パッケージの追加

・メッセージバッファ機能拡張パッケージの追加

・保護ドメインに対する制限の設定機能（LMT_DOM）の追加

・アクセス許可のチェックの追加
	- unl_mtxを，対象ミューテックスの通常操作1としてアクセス保護する仕
	  様に変更．
	- prb_memを，指定したタスクに対する参照操作が許可されていない場合に
	  オブジェクトアクセス違反になる仕様に修正．

・ミューテックスの仕様変更
	- 自タスクがロックしているミューテックスを再度ロックしようとした場
	  合と，自タスクがロックしていないミューテックスをロック解除しよう
	  とした場合のエラーコードをE_OBJに変更．

・ミューテックス機能のバグフィックス
	- タスク終了時のミューテックスの解放順序を逆順に．

・メモリオブジェクトの配置順序の見直し
	- ショートデータ領域を考慮して，配置順序を見直し．
	- カーネルドメインの共有リード専有ライト領域を，ユーザドメインの共
	  有リード専有ライト領域と連続して配置．

・ユーザスタックの妥当性チェックのコードの修正
	- PROBE_STACKをVALID_USTACKとリネーム．
	- ターゲット非依存部のprobe_stackを廃止．

・ターゲット依存のコンフィギュレーション方法への対応
	- パス2〜4のテンプレートファイルの共通部（kernel_lib.tf）を新設．
	- USE_LATERPASS_DOMINIBを定義すると，保護ドメイン初期化ブロックを，
	  kernel_mem.cの中に生成するように修正．
	- OMIT_STANDARD_DATASECINIBを定義すると，ターゲット非依存部でdataセ
	  クション初期化ブロックを生成しないように修正．
	- OMIT_STANDARD_BSSSECINIBを定義すると，ターゲット非依存部でbssセク
	  ション初期化ブロックを生成しないように修正．
	- シンボルテーブルからメモリオブジェクトの先頭と末尾のアドレスを取
	  り出す方法を，ターゲット依存に変更可能に．

・メモリアクセス権のチェックのためのマクロ
	- システムサービスでメモリアクセス権のチェックをするためのマクロを
	  kernel.hに追加．
	- カーネル内でメモリアクセス権のチェックをするためのマクロ名の先頭
	  に，KERNEL_を付けて区別．

・システムサービスにメモリアクセス権チェックを追加
	- システムログ機能の各サービスコールに追加．
	- シリアルインタフェースドライバの各サービスコールに追加．

・サンプルのMakefileの修正
	- C言語の時に-lcを付けるように修正．
	- CFG_OBJSをCFG_ASMOBJSとCFG_COBJSに，CFG2_OBJSをCFG2_ASMOBJSと
	  CFG2_COBJSに，CFG3_OBJSをCFG3_ASMOBJSとCFG3_COBJSにそれぞれ分離．
	- KERNEL_CFG_CFLAGSをCFG_CFLAGSにリネーム．

・先頭番地のチェックコードの修正
	- 先頭番地のサイズが固定値になっていたところを，sizeof_FPに修正．
	- オーバランハンドラと拡張サービスコールの先頭番地のチェックを追加．

・静的APIにおけるエラーチェックの追加
	- 符号無しのパラメータに負の値を指定した場合のエラーチェックを追加．

・テストプログラム関係の修正
	- テストライブラリに，test_startを追加．
	- テストプログラムの先頭で，プログラム名を表示するように修正．
	- gentestを拡張．

・その他のバグフィックス
	- kernel_def.csvにTARGET_MIN_ISTKSZを追加．
	- オーバランハンドラをサポートしていないターゲットでDEF_OVRを使用し
	  た場合には，コンフィギュレータでエラーとするように修正．
	- GNU開発環境のリンカスクリプトにおいて，ロード対象でないセクション
	  に(NOLOAD)指定を追加．

・その他の修正
	- ALLOC_SSTACKの定義を変更（ASPカーネルに合わせた）．
	- メモリ初期化ブロックのユーザスタック領域のアクセス許可パターンの
	  フィールドに，当該タスクのTCBへのポインタを出力するのをやめる．
	- セクションラベル等の付け方と，リンカスクリプト中の順序の変更．
	- ユーザスタック領域の共有（完全に一致している場合）をコンフィギュ
	  レータのパス2で検出するように修正．
	- ユーザスタック領域の併合処理を，オプション機能として追加．
	- reqdspをdspreqに，p_reqdspをp_dspreqにリネーム．
	- イベントフラグの初期ビットパターンのエラー検出を追加．
	- スタック領域と固定長メモリプール領域の先頭番地をユーザが指定した
	  場合には，kernel_cfg.c中で(void *)型にキャストするように修正．
	- メールボックス機能に関連する定義を削除．
	- xsns_dpnとxsns_xpnで，kerflgもチェックするように修正（安全性の向
	  上のための修正）．
	- TNUM_PORTが5以上の時は，serial.cでエラーを報告する．
	- makedepとmakereleaseを改善．

・ドキュメントの充実，コメントの修正

・バージョン番号の更新
	- カーネルのバージョン番号を更新．

○ターゲット依存部の要修正箇所（2.1.0 → 2.2.0）

(1) ユーザスタックの妥当性チェックのコードの修正に対応
	- PROBE_STACKをVALID_USTACKとリネームしたのに対応する．
	- ターゲット非依存部のprobe_stackの廃止に対応する．

(2) ALLOC_SSTACKの定義の変更に対応
	- ターゲット依存部のテンプレートファイルでALLOC_SSTACKを定義してい
	  る場合には，スタック領域のサイズを大きい方に丸めたサイズを表す文
	  字列を返すように修正する．

(3) テンプレートファイル中のMO.CLASS[]の扱いの変更に対応
	- ターゲット依存部のテンプレートファイルでMO.CLASS[]を使っている場
	  合には，その扱いの変更（3は使わなくなった）に対応して修正する．

(4) 標準のセクションを登録するメモリリージョンの指定方法の変更
	- DESC.MEMREG[]に入れるべき値を，標準ROMリージョンの場合は1，標準
	  RAMリージョンの場合は2に変更．
	- テンプレートファイル関数DEFINE_DSECを廃止．

(5) CFG_OBJS等をCFG_COBJS等にリネーム
	- Makefileのターゲット依存部でCFG_OBJS，CFG2_OBJS，CFG3_OBJSを定義
	  している場合には，それぞれ，CFG_COBJS，CFG2_COBJS，CFG3_COBJSにリ
	  ネームする．

----------------------------------------------------------------------

		TOPPERS/HRPカーネル
		Release 2.0.0 から 2.1.0 への変更点

○変更点のリスト

・標準メモリリージョンの定義方法の変更（仕様変更）
	- 標準メモリリージョン（標準ROMリージョン，標準RAMリージョン）を，
	  ATT_REGに渡すメモリリージョン属性で指定する方法をやめ，そのための
	  静的API（DEF_SRG）で定義する方法に変更．

・prb_memをCPUロック状態からも呼べるように変更（仕様変更）

・コンフィギュレーション手順の見直し
	- 最適化を行うためのフェーズ（新パス3）を新設（target_opt.tfを追加）．
	- 最後のチェックフェーズは廃止（kernel_check.tfは削除）．チェック
	  フェーズの処理内容を，新パス4に移動．

・非タスクコンテキスト用のスタック領域のサイズチェックの追加
	- DEF_ICSのistkszがターゲット定義の最小値（TARGET_MIN_ISTKSZ）より
	  も小さい場合にE_PARエラーとする処理を追加．

・DEF_TEX，SAC_???の属する保護ドメインに関するエラーチェックを追加
	※ コンフィギュレータのRelease 1.9.0の機能に依存している．

・システムサービスのコンフィギュレーションファイルの修正
	- カーネルドメインの囲みの外側でインクルードするように修正．

・テストプログラム用ライブラリをユーザドメインからも使えるように修正
	- test_lib.hとtest_lib.cを修正．test_svc.cfgとtest_svc.cを追加．

・ログ情報出力でのエラー処理の追加
	- syslog_?マクロおよびsyslog関数内でsyslog_wri_logがエラーになった
	  場合に呼ぶためのサービスコール（syslog_fwri_log）を追加．

・使用しないサービスコールをリンクしない方法を用意
	- gensvcを修正．omit_svc.hを設ける．

・システムサービスのスタック使用量をターゲット依存で変更できるよう修正
	- システムサービスのスタック使用量を定義するためのラベル（SSZ_???）
	  を導入．

・拡張サービスコールで実現されるシステムサービスにE_MACVエラーのチェッ
　クを追加

・テストプログラムの追加

・トレースログ記録用のサンプルコードをパッケージに追加
	- ASPカーネルのパッケージに含まれているものと同じ内容．

・その他のバグフィックス
	- ミューテックスのアクセス許可ベクタの生成方法を修正．
	- メモリオブジェクト初期化ブロックのサイズの算出方法を修正．
	- TOPPERS_SUPPORT_OVRTIMをTOPPERS_SUPPORT_OVRHDRに修正．
	- システムサービスのCソースファイルを，-DTOPPERS_SVC_CALLせずにコン
	  パイルしても，関数名の衝突が起こらないように修正．

・その他の修正
	- ATT_SECのエラーコードを修正（仕様変更）．
	- 仮のメモリオブジェクト初期化ブロックの生成方法を変更．
	- ショートデータセクションを最初に配置する処理を追加．
	- コンフィギュレータのエラーメッセージにおけるAPI名の出力方法を改善．
	- オーバランハンドラをサポートしない場合に，TCBから関連フィールドを除く．
	- TOPPERS_EMPTY_LABELのデフォルトの定義をkernel_int.hに移動．
	- コンフィギュレータの最新版の機能を使って，kernel.tfをリファクタリング．
	- システムサービスの拡張サービスコールのスタックサイズを，ターゲット
	  依存部で変更できるように修正．
	- svc_table.c中のRET_TEXマクロの廃止．
	- LOG_EXTSVC_ENTERのパラメータにcdmidを追加．
	- configureに-Sオプションを追加．
	- sample/Makefileをconfigureの-kオプションに対応するよう修正．
	- gentestを拡張（CPU例外ハンドラと拡張サービスコールルーチンの生成，
	  GOTOに対応など）．
	- gensvcにHEW用のファイルを生成する機能（-Hオプション）を追加．

・ドキュメントの充実，コメントの修正

・バージョン番号の更新
	- カーネルのバージョン番号を更新．

○ターゲット依存部の要修正箇所（2.0.0 → 2.1.0）

(1) コンフィギュレーション手順の見直しに対応
	- 最適化を行う場合は，新パス3向けのファイル（target_opt.tf等）を作成．
	- チェックフェーズの処理を，新パス4に移動．
	- gcc/ldscript.tfの仕様変更（cfg2_out.ldを作る）に対応．

(2) ret_texの実装の確認
	- 設計メモの「ユーザタスクのタスク例外処理ルーチンからのリターン」
	  の節に，ret_texを実装する上での留意点を追記したため，それが満たさ
	  れているかチェック．

(3) LOG_EXTSVC_ENTERのパラメータの追加
	- LOG_EXTSVC_ENTERのパラメータにcdmidを追加したことに対応．

(4) TARGET_MIN_ISTKSZの定義を追加（オプション）
	- 非タスクコンテキストのスタックサイズの最小値をチェックする場合に
	  は，最小値をTARGET_MIN_ISTKSZに定義する．

----------------------------------------------------------------------
