
		TOPPERS/FMP3カーネル
		変更履歴

		対応バージョン: Release 3.1.1
		最終更新: 2020年07月09日

このドキュメントは，TOPPERS/FMP3カーネルの変更履歴を，新しい方から順に
記述したものである．また，TOPPERS/FMPカーネル Release 1.4.0との主な違い
についても記載している．

----------------------------------------------------------------------
 TOPPERS/FMP Kernel
     Toyohashi Open Platform for Embedded Real-Time Systems/
     Flexible MultiProcessor Kernel

 Copyright (C) 2019,2020 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 250 2020-07-09 07:03:05Z ertl-honda $
----------------------------------------------------------------------
		TOPPERS/FMP3カーネル
		Release 3.1.0 から 3.1.1 への主な変更点

○主な変更点のリスト

●不具合修正

・取得しているスピンロックの初期化の場所の変更
	- initialize_spin_lock()において，p_my_pcb->p_locspn をNULLに初期化
	  しており，スピンロック機能を使わない場合はこの関数は呼び出されない．
	  一方，この変数はunl_cpu()で参照されるため，sta_ker()で初期化する．
    
・優先度変更時のサブ優先度のチェック漏れの修正
	- 変更後の優先度がサブ優先度の対象かつ，schedtskと優先度が同じ場合は
	  サブ優先度を比較してp_schedtskの更新を行うように修正．
    
・サービスコール単位でのリンクの対応漏れ
	- chg_sprが抜けていたため追加    

・get_tstの実行状態の判定文の修正
	- get_tstで，対象タスクが実行状態であるかの判定文が誤っていた不具
	  合を修正．

・ref_tsk()おけるサブ優先度の取得の修正
	- 休止状態でもサブ優先度を取得するように修正．
  
・通知ハンドラ名の衝突の問題の修正
	- タイムウィンドウ通知の通知ハンドラの関数名が，プロセッサ間で衝突
	  する問題と，周期通知やアラーム通知と衝突する可能性がある問題を修
	  正．

・ディスパッチ保留状態でタスク切換えが起こる不具合の修正
	- dis_dspとchg_ipm内で，ジャイアントロックを取得した後に，タスク切
	  換えが必要であればディスパッチを行うように修正．

・trcv_dtqの条件文の修正
	- trcv_dtqで，タスク終了要求のチェックの後のif文に，elseが抜けてい
	  た不具合を修正．

・rot_rdqが非タスクコンテキストから呼ばれた場合の処理の修正
	- rot_rdqが非タスクコンテキストから呼ばれた場合にも，実行状態のタ
	  スクが属するスケジュール単位を操作対象としていた不具合を修正．

・get_tstの実行状態の判定文の修正
	- get_tstで，対象タスクが実行状態であるかの判定文が誤っていた不具
	  合を修正．

・p_my_pcb->p_locspnの初期化箇所の修正
	- p_my_pcb->p_locspnの初期化処理を，initialize_spin_lockから
	  sta_kerに移動．このフィールドは，スピンロックを使用しない場合で
	  も，unl_cpu内で参照されるため．

・xsns_dpnの不具合修正
	- タスクコンテキストから呼び出された場合は，trueを返すように修正．

・get_my_pcbの定義の修正
	- get_my_pcbのデフォルトの定義を，kernel_cfg.c中に生成される割込み
	  ハンドラから呼び出されるのに対応できるように修正．

・コンフィギュレータの不具合修正
	- クラスの指定値が有効範囲外の場合に，エラーメッセージを出力した後，
	  コンフィギュレータがエラーで落ちる不具合を修正．
	- DEF_ICSに関するエラーメッセージのパラメータが書き換わらないよう
	  に修正．
	- エラーメッセージの修正（"must be with a class" → "must be
	  within a class"）
	- エラーメッセージの修正（"any kernel memory object" → "any
	  memory object"）

・メモリバリア操作の追加
	- 他プロセッサのp_schedtskを書き換える前に，メモリバリア操作を行う
	  ようにする．

・ARMコア依存部，チップ依存部，ターゲット依存部の不具合修正
	- ARMv7では，SMP有効時にACTLRのFWビットを設定するように修正．
	- request_dispatch_prc，request_ext_ker，request_set_hrt_eventのパ
	  ラメータの型の誤りを修正．
	- オーバランハンドラを使用する場合のレジスタ保存の抜けを修正．

・その他の不具合修正
	- is_mprcマクロのパラメータを()で囲むように修正．
	- msta_cycとmsta_almの出口のログ取得マクロ名の誤りを修正．
	- タスクマイグレーションログの取得漏れを修正．
	- time_event.h中のtmevtb_enqueueとtmevtb_dequeueのパラメータ名の誤
	  りを修正（プロトタイプ宣言なので実害なし）．

●その他（テストプログラム，サンプルプログラム等）
  
・ARMコア依存部，チップ依存部，ターゲット依存部の変更
	- MPCoreのグローバルタイマによるtarget_hrt_raise_eventの実装を，直
      接割込みを要求する形に変更．

・サンプルプログラムの修正
	- サンプルプログラムを，CPUEXC1の定義を参照しないように修正．
	- [ダミーターゲット依存部] サンプルプログラムがビルドできるように
	  修正．

・テストプログラムの修正
	- 通知処理のテスト(1)（test_notify1）の変数の型の誤り（intptr_tと
	  int_tのサイズが異なる場合に不具合が発生）を修正．
	- マルチプロセッサ対応のアラーム通知のテスト(2)（test_malarm2）が
	  意図通りのテストになっていなかったのを修正．
	- 一部のテストプログラムがカーネルの変更に追従していなかったため修正．

・テストプログラムの改善・変更
	- セマフォ機能のテスト(1)（test_sem1），スピンロック機能のテスト
	  (2)（test_spinlock2），過渡的な状態のテスト(2)（test_mtrans2）の
	  テスト項目を追加．
	- タイムウィンドウ通知に関するテスト（test_twdnfy）をtest_twdnfy1
	  にリネームし，テスト内容を改善．
	- タイムウィンドウ通知に関するテスト(2)（test_twdnfy2）を追加．
	- 過渡的な状態のテスト(5)（test_mtrans5）を追加．
	- マルチコア対応テストプログラムにおいて終了時にコア間の同期を追加．
	- マルチコア対応テストプログラムにおいて2コア以外コンフィギュレーショ
	  ンでビルドするとエラーとなるよう変更．

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

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

(1) メモリバリア操作の追加
	- memory_barrier関数の定義を追加する．

----------------------------------------------------------------------
		TOPPERS/FMP3カーネル
		Release 3.0.0 から 3.1.0 への主な変更点

○主な変更点のリスト

●仕様変更，機能拡張

・高分解能タイマが64ビットの場合に対応
	- t_stddef.hにおけるHRTCNT型の定義を変更．
	- set_hrt_eventにおいて，タイムイベントヒープが空の場合と，高分解
	  能タイマに指定する相対カウント値がHRTCNT_BOUNDよりも大きい場合の
	  処理を変更．マクロ定義のチェックを追加．
	- MPCore内蔵タイマ用のタイマドライバ（USE_MPCORE_GTC_HRTの場合）と
	  タイマドライバシミュレータを，高分解能タイマを64ビットにできるよ
	  うに拡張（target_hrt_clear_eventの追加など）．

・コンフィギュレータの仕様変更
	- 静的APIの後に";"がない場合はエラーとするように変更．

・ARMコア依存部，チップ依存部，ターゲット依存部の仕様変更
	- フェイタルデータアボートをエミュレートされたCPU例外と位置付け，
	  CPU例外ハンドラ番号を割り付けた．

・カーネルのデータ構造を配置するセクションの指定方法の変更
	- TargetGenXXX を廃止して，クラスから，カーネルのデータ
	  領域のセクション名を返すSecnameKernelData()とスタック
	  領域のセクション名を返すSecnameStack()をターゲット依
	  存部で用意するよう変更．

・[ARM依存部] 割込みハンドラのバイパス機能の追加
	- USE_BYPASS_IPI_DISPATCH_HANDERを定義すると，他コアからのディスパッ
	  チ要求割込み受付時に割込みハンドラを呼び出さず，割込み処理を終了
	  させるように変更．

●不具合修正

・trcv_dtqでrelease_glockを2回呼ぶパスがある不具合を修正

・initialize_interrupt内で使用する変数の誤りを修正

・その他の不具合修正
	- 不要なextern宣言（set_my_hrt_event）の削除．
	- リネーム記述（kernel_rename.def等）の修正．
	- 静的APIの最後に";"が抜けている不具合の修正．

・コンフィギュレータの不具合修正
	- パス3の終了処理ルーチンに関するチェックの不具合を修正．

・ARMコア依存部，チップ依存部，ターゲット依存部の不具合修正
	- ARMv7では，SMP有効時にACTLRのFWビットを設定するように修正．

●実装改善

・ARMコア依存部，チップ依存部，ターゲット依存部の実装改善
	- core_test.hにおけるCPU例外の発生コードを見直し．
	- ARM依存のテストプログラム（arm_cpuexc）を追加．
	- sp804.hを削除．
	- software_term_hookを，target_exitから呼ぶように変更．

・タイマドライバシミュレータの実装改善
	- タイマ割込みの発生時刻の設定状況を表すデータ型（INT_EVENT）を導入. 

・その他の実装改善
	- VALID_TMOUTの定義を変更．
	- check_adjtimのパラメータの型と，エラーチェックの条件式を変更．
	- TOPPERS_ISTKPTが定義されていない時に，idstk_tableを生成するよう
	  に変更．

●その他（テストプログラム，サンプルプログラム等）

・configureとsample/Makefileの修正
	- configureへのオプションで，ライブラリのリンク記述を追加できるよ
	  うに，configureとsample/Makefileを修正．

・テストプログラムの追加
	- [ARM依存部] ARM向けFPUのテスト(1)（arm_fpu1）を追加．

・gentest.rbの拡張（HRMP3カーネル向けのものを導入）
	- マルチプロセッサに対応．
	- 元のファイルを置き換える仕様に変更．
	- ローカル変数を定義する機能を追加．

・トレースログ記録のサンプルコードに他のカーネル向けの拡張を追加

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

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

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

(1) パス2の生成スクリプトのターゲット依存部の仕様変更への対応
	- DefineVariableSectionの定義を追加する．
	- SecnameKernelDataの定義を追加する．
	- SecnameStackを，clsに$TCLS_NONEが渡された場合に対応できるように
	  修正する．
	- TargetGenXXXを削除．

(2) 高分解能タイマが64ビットの場合に対応（オプション）
	- 高分解能タイマを64ビットにできる場合には，必要に応じて対応する．
	  具体的には，ASP3カーネルのポーティングガイドの(3-8-1)，(5-3-1)，
	  (6-13-2-5)の設定に対応し，tool_svc.hのターゲット依存部に，
	  CAL_SVC_0M_R_UINT64の定義を追加する．

(3) [ARM依存部] software_term_hookの呼び出し箇所変更への対応
	- 必要であれば，target_exitにsoftware_term_hookを呼ぶ処理を追加す
	  る．

----------------------------------------------------------------------
		TOPPERS/FMP3カーネル
		Release 1.4.0 から 3.0.0 への主な変更点

○主な変更点のリスト

※ ASP3カーネル Release 3.3.1 をベースにしているため，ASPカーネルから
   の変更点についてはASP3カーネルの変更履歴を参照のこと．

※ 以下の変更点のリストは，主なもののみをリストアップしたものであり，網
   羅的なリストではない．

・機能の追加／廃止
	- サブ優先度機能の追加

・スケジューラの実装の変更
	- アイドル処理用のスタックを用意

・タイムイベント処理のティックレス化
	- ティックレス化に伴う仕様変更に伴いタイムイベントモジュールを変更．

・その他の実装の変更
	- カーネル内ロック方式をジャイアントロックのみに．

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