TOPPERS LOGO
Loading

 Topics | About Project | ASP3 Kernel | Documents | Download | Community | Report | Contacts | FAQ
  • 会員向けページ
    • メーリングリスト
    • 早期リリース
    • 技術ドキュメント
    • 開発支援
    • 会員情報登録・変更
    • 会員向けイベント情報
  • プロジェクトについて
    • TOPPERSプロジェクトとは
    • TOPPERSのロゴについて
    • TOPPERS公式マスコット「とぱめ」
    • TOPPERSライセンス
    • プロジェクト規則集
    • 貸借対照表
    • プロジェクトの組織
    • 関連団体、プロジェクトメンバ
    • 受賞
    • 入会のススメと申込み方法
    • 開発成果物の利用報告
    • FAQ
    • 問い合わせ・事務局案内図
  • 取り組み
    • ETロボコンへの取組み
    • プレス発表
    • ニュースレター
    • コンテスト
    • 一般向けイベント情報
    • TOPPERSカンファレンス
    • TOPPERS開発者会議
    • 過去の取り組み
      • 公的資金によるプロジェクト
      • ソフトウェア開発委託事業
      • 公募型事業
  • 開発成果物
    • リアルタイムカーネル
      • TOPPERS/ASP3カーネル
      • TOPPERS/HRP3カーネル
      • TOPPERS/FMP3カーネル
      • TOPPERS/HRMP3カーネル
      • TOPPERS/ASPカーネル
      • TOPPERS/JSPカーネル
      • TOPPERS/FMPカーネル
      • TOPPERS/HRP2カーネル
      • TOPPERS/SSPカーネル
      • TOPPERS/PARK
      • TOPPERS/FDMPカーネル
      • TOPPERS/FI4カーネル
      • TOPPERS/HRPカーネル
      • TOPPERS/ATK1
    • AUTOSAR関連
      • TOPPERS/ATK2
      • TOPPERS/A-RTEGEN
      • TOPPERS/A-COMSTACK
      • TOPPERS/A-WDGSTACK
      • TOPPERS/A-OSBENCH
      • TOPPERS/AKTSP
    • TOPPERS/EV3RT(EV3 Platform)
    • TECS(コンポーネントシステム)
    • TINET(TCP/IPスタック)
    • TOPPERS/ECNL
    • CAN/LIN通信ミドルウェア
    • FatFs for TOPPERS
    • SafeG
    • SafeG64
    • SafeG-M
    • SafeG-Auto
    • MDCOM
    • TOPPERS BASE PLATFORM
    • Athrill
    • TOPPERS Test Suite Package(TOPPERS新世代カーネル)
    • TOPPERS新世代カーネル用コンフィギュレータ
    • その他
      • TOPPERS Builder Bootable CD-ROM イメージ
      • TLV(トレースログ可視化ツール)
      • BridgePoint for JSP1.4
      • TOPPERS C++ APIテンプレートライブラリ
      • TOPPERSカーネルテストスイート(μITRON4.0仕様)
      • Remote Link Loader(RLL)
      • ダイナミックローディングマネージャ(DLM)
      • TOPPERSカーネル向けシミュレーション環境
  • 教育コンテンツ
    • 初級実装セミナー教材
    • 中級実装セミナー教材
    • 基礎1実装セミナー教材
    • 基礎2実装セミナー教材
    • 基礎3実装セミナー教材
    • 基礎ハードウェア基本設計セミナー教材
    • ARM7版基礎1、2、3実装セミナー教材
    • TOPPERS BASE PLATFORM対応版基礎1、2、3セミナー教材
    • 二足歩行ロボット教材
    • TOPPERS版鹿威し
  • ドキュメント
    • TOPPERS第3世代カーネル統合仕様書
    • TOPPERS新世代カーネル統合仕様書
    • TOPPERS新世代カーネルへのマイグレーションガイド
    • TOPPERS新世代カーネル用コンフィギュレータ関連仕様書
    • 機能分散マルチプロセッサ向けリアルタイムカーネル仕様書
  • ダウンロード
    • ダウンロードページ一覧
  • 関連製品
    • トータルソリューション
    • 開発キット・開発環境・ツール
    • ミドルウェア・ソフトウェア部品
    • サポート・サービス
    • 教育・教材
    • ハードウェア
  • 利用事例
    • 適用事例
    • ユーザ
  • コミュニティ情報
    • ユーザーズフォーラム
    • ソフトウェア
    • 統合開発環境
    • 外部リンク
    • Contributed Software
    • Contributed Software(GitHub)
    • AUTOSAR情報サイト
  • その他の情報
    • 雑誌記事・書籍

TOPPERS/FMP3カーネル更新履歴

目次
  • Release 3.3.1 の Release 3.3.0 との主な違い
  • Release 3.3.0 の Release 3.2.0 との主な違い
  • Release 3.2.0 の Release 3.1.0 との主な違い
  • Release 3.1.1 の Release 3.1.0 との主な違い
  • Release 3.1.0 の Release 3.0.0 との主な違い
Release 3.3.1 の Release 3.3.0 との主な違い

実装改善

  • dis_int等の処理内でCPUロック状態にしないことができるように変更
    • ターゲット依存部の設定により,dis_int,ena_int,clr_int,ras_int,prb_int内で,CPUロック状態にしないことができるように変更.

その他(テストプログラム,サンプルプログラム等)

  • sample/Makefileの不具合修正
    • シンボルファイル,バイナリファイル,ダンプファイルの生成ルールを,個別に記述するように変更.
  • バージョン番号の更新
    • カーネルのバージョン番号を更新.

不具合修正

  • サブ優先度対応の修正
    • 全体的に見直し,ASP3 3.7.1 の拡張に追従
    • テストプログラムの更新と追加
Release 3.3.0 の Release 3.2.0 との主な違い

仕様変更,機能拡張

  • CPU例外の扱いを変更

    • CPU例外ハンドラの属するクラスに関するエラーチェックを変更.
    • 標準のCPU例外ハンドラ初期化ブロックに,割付け可能プロセッサを持たせるように変更.
  • 不正なクラスIDのエラーチェックの方法を変更

    • ターゲット依存のクラス定義ファイル(target_class.trb)を新設.
    • クラス定義ファイルの名称を,コンフィギュレータのパス2に-Cオプションで渡すように,コンフィギュレータとsample/Makefile等を変更.
    • コンフィギュレータのクラスの処理方法を変更.クラスの囲みに対して不正なクラスIDのエラーチェックを行うように変更.
    • 静的APIに対する不正なクラスIDのエラーチェックを削除.
    • カーネルに依存しないクラスの処理を,kernel.trbからコンフィギュレータに移動.
  • CRE_XXXで,他の種類のオブジェクトの識別子との衝突についてもエラーとするように変更

  • objdumpコマンドによるダンプ形式を受け付けるように拡張

    • コンフィギュレータを,objdumpコマンドによるダンプ形式を読み込めるように拡張.
    • sample/Makefileを,これをサポートするように拡張.
  • ARM依存部のFPUサポートに,常にFPUを使用する実装を追加

    • 常にFPUを使用する実装(USE_ARM_FPU_ALWAYS)を追加.
    • 指定したタスクのみがFPUを使用する方法(USE_ARM_FPUからUSE_ARM_FPU_SELECTIVEに変更)の実装を改善.
    • FPUの初期化を,スタートアップモジュールで行うように変更.
  • ARMのGIC依存部の仕様変更

    • 割込みハンドラの出口でEOI(End of Interrupt)を発行し,割込み処理中にPMR(Priority Mask Register)の値を変更しないように変更.

不具合修正

  • 不要な割込みハンドラ情報を生成しないように修正

    • コンフィギュレータが生成する割込みハンドラに関する情報が,割込みを受け付けるプロセッサ以外に対しても生成される問題を修正.
  • 標準のCPU例外ハンドラの初期化コードの修正

    • CPU例外ハンドラ初期化ブロックに,割付けプロセッサのフィールドを追加し,自プロセッサのCPU例外ハンドラに対してのみdefine_excを呼び出すように修正.
  • [ARM向けターゲット依存部] MPCore内蔵タイマの初期化/終了処理の修正

    • 全体で1回のみ行うべきタイマの初期化/終了処理を,グローバル初期化/終了処理ルーチンで行うように修正.
  • コンフィギュレータの不具合修正

    • SRecord.rbに,不連続なデータ領域のコピーに対応したcopy_dataを追加し,cfg.rbのBCOPYをそれを用いるように修正.
  • シリアルドライバのマルチコア対応

    • 対応が不十分であったので,スピンロックオブジェクトによる排他制御を追加.

実装改善

  • 優先度上昇状態を管理するように変更

    • 優先度上昇状態をTCBに追加.
    • mutex_scan_ceilmtx,mtxhook_scan_ceilmtxを削除.
  • カーネルが生成する割込みハンドラから呼び出す関数名の変更

    • コンフィギュレータがkernel_cfg.cに生成する割込みハンドラから呼び出すカーネル内の関数名に,_kernel_を付けるように変更.
  • POSIX依存部に対応するための変更

    • ターゲット依存で,非タスクコンテキスト用のスタック領域を使用しない設定(OMIT_ISTACK)を用意.
  • リンカスクリプトでフック呼出しのためのPROVIDEの使用をやめる

    • arch/arm_gcc/common/start.Sで,hardware_init_hookとsoftware_init_hookを無条件に呼び出すように変更し,weak属性付きの空関数を用意.
    • 各ターゲット依存部のリンカスクリプト中で,hardware_init_hook,software_init_hook,software_term_hookを0に定義するPROVIDE記述を削除.
    • 各ターゲット依存部のtarget_kernel_impl.cで,software_term_hookの呼出し処理を,weak属性付きの空関数を使う形に変更.
  • ミューテックスの実装を拡張が容易なように変更

    • 優先度継承拡張をしやすいように,mutex_raise_priorityを導入.また,mutex_drop_priorityのインタフェースを変更し,インライン関数に.
    • ロック解除を逆順に行わなければならない制限を外しやすいように,remove_mutexを導入.
  • コンフィギュレータの実装改善

    • pass1.rbを,rubyの新しいバージョンでエラーにならないように修正.
    • クラスIDでエラーになった場合は,NGKI3016のチェックを行わないように修正.
  • PCB中のtarget_pcbの宣言位置を先頭に移動

    • ARMv6-M対応において,アドレスオフセットとして指定可能な値の範囲が狭いため先頭に移動.
  • [ARM向けターゲット依存部] ARMコアサポートモジュールを見直し

    • arm.cの内容をarm.hに移し,arm.cを廃止.
    • L1キャッシュのクリーン操作関数を追加.
    • キャッシュの操作関数を整理.
    • スタートアップモジュールをターゲット依存で追加できるように変更.
  • [ARM向けターゲット依存部] 初期化手順を見直し

    • MPCore依存部に,L2キャッシュの操作関数を追加.
    • キャッシュのディスエーブルは,hardware_init_hookで実施することとし,mpcore_initializeでは実施しないことに.
    • ARMv7以上の場合に,SCTLRのセットされていると問題が発生するビットをクリアするように変更.
    • TBLの無効化処理を,ノンユニファイドTLBに対応できるように変更.
  • [ARM向けターゲット依存部] メモリの設定をアプリケーション依存で変更し やすいように変更.

    • arm_memory_areaとarm_tnum_memory_areaにweak属性を追加.
  • その他の実装改善

    • コンフィギュレーションスクリプト(configure.rb)とユーティリティプログラムを,FileUtilsライブラリをなるべく使わないように変更.
    • テストプログラム生成ツール(gentest.rb)の出力形式の改善.

その他(テストプログラム,サンプルプログラム等)

  • configureとsample/Makefileの機能改善

    • コンフィギュレーションスクリプト(configure.rb)でコンパイルオプションを外せるように,sample/Makefileを拡張.
  • sample/Makefileの変更

    • %.cppに対するvpath指定を追加.
  • テストプログラムの改善- 変更

    • テスト(A)ディレイ時間が不足しているため、get_tst()が終了せずに固まってしまう問題を修正.
  • ドキュメントの改善

  • バージョン番号の更新

    • カーネルのバージョン番号を更新.

ターゲット依存部の要修正箇所(3.2.0 → 3.3.0)

  1. リネームする関数名の追加

    • unlock_cpuとsense_lockを,リネーム記述(target_rename.defまたはそこからインクルードされるファイル)に追加する(ARM依存部を使っている場合には,core_rename.defに追加しているので,対応の必要がない).
  2. フック呼出し処理の変更

    • スタートアップモジュール中で,hardware_init_hookとsoftware_init_hookの呼出し処理を,weak属性付きの空関数を使う形に変更する.
    • リンカスクリプト中で,hardware_init_hook,software_init_hook,software_term_hookを0に定義するPROVIDE記述を削除する.
    • software_term_hookの呼出し処理を,weak属性付きの空関数を使う形に変更する.
  3. クラス定義ファイルを新設

    • target_class.trbを新設し,$clsDataの定義をtarget_kernel.trbから移動する.
  4. [ARM依存部] 常にFPUを使用する実装に対応

    • ASM_ARM_FPU_TYPEの定義を追加する.
    • ターゲット依存部で,USE_ARM_FPUを定義している場合は,USE_ARM_FPU_SELECTIVEに変更する.
    • ターゲット依存部のMakefileでは,COPTSに,FPUを持たないプロセッサを指定する-mcuオプションを設定する.
  5. [ARM依存部] 初期化手順の見直しに対応

    • hardware_init_hookに,キャッシュとMMUをディスエーブルする処理を追加する.
    • arm_enable_cache,arm_disable_cacheを使用している場合,データキャッシュと命令キャッシュの操作関数を個別に呼ぶように変更する.
    • MPCore依存部を使用している場合,チップ依存部またはターゲット依存部に,L2キャッシュの操作関数(4関数)を追加し,それらを使うように変更する.
  6. CPU例外の扱いを変更に対応

    • CPU例外ハンドラをプロセッサ毎に定義する方法で,CPUEXC1が定義されていれば,別の名前に変更する(ARM依存部では_CPUEXC1としている).
Release 3.2.0 の Release 3.1.0 との主な違い
  • 仕様変更,機能拡張
    • 拡張情報の型をEXINFに変更
    • 割込みサービスルーチンを実行するプロセッサに関する仕様変更に対応
      • 割込み要求ライン初期化ブロックのaffinityフィールド(割付け可能プロセッサ)に生成する情報を,対応するDEF_INHがある場合,対応するCRE_ISRがある場合,どちらもない場合で変えるように変更.
      • CFG_INTに関するエラーチェックを,2回に分けて実施.
      • [ARM依存部] 割付け可能プロセッサが複数あるクラスの囲み内にCRE_ISRやCFG_INTを記述した場合には,コンフィギュレータが警告メッセージを出し,クラスの初期割付けプロセッサのみで割込みを受け付けるように設定するように変更.
    • [ARMコア依存部] 性能評価時のキャッシュの無効化の実装
      • HIST_INVALIDATE_CACHEがマクロ定義されている場合には,性能評価において実行時間を計測する前に,キャッシュと分岐予測を無効化する.
  • 不具合修正
    • 通知ハンドラ名の衝突の問題の修正
      • タイムウィンドウ通知の通知ハンドラの関数名が,周期通知やアラーム通知と衝突する可能性がある問題を本格的に修正.
    • 取得しているスピンロックの初期化の場所の変更
      • 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が抜けていた不具合を修正.
    • 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")
    • ARMコア依存部,チップ依存部,ターゲット依存部の不具合修正
      • ARMv7では,SMP有効時にACTLRのFWビットを設定するように修正.
      • request_dispatch_prc,request_ext_ker,request_set_hrt_eventのパラメータの型の誤りを修正.
      • オーバランハンドラを使用する場合のレジスタ保存の抜けを修正.
    • その他の不具合修正
      • msta_cycとmsta_almの出口のログ取得マクロ名の誤りを修正.
      • タスクマイグレーションログの取得漏れを修正.
      • time_event.h中のtmevtb_enqueueとtmevtb_dequeueのパラメータ名の誤りを修正(プロトタイプ宣言なので実害なし).
      • マスタプロセッサであることを判別するマクロis_mprcを廃止.
    • メモリバリア操作の追加
  • 機能改善
    • コンフィギュレータのエラーメッセージの改善
      • コンフィギュレータ本体のエラーメッセージ出力関数を拡張・整理.それを活用するように生成スクリプトを変更.
      • inhno/intnoが有効範囲外のエラーの場合に,初期割付けプロセッサ/割付け可能プロセッサに関するエラーチェックを行わないように修正.
      • カーネル管理外の割込みに関するエラーメッセージを改善.
      • 静的APIの文法エラーに対するエラーメッセージを改善.
      • 静的APIテーブルにエラーがあった場合に,ファイル名と行番号を出力するように変更.
  • 実装改善
    • ディスパッチハンドラを除外できるように変更
      • ディスパッチハンドラが不要な場合に,OMIT_DISPATCH_HANDLERをマクロ定義することでコードを除外できるように変更.
      • [ARMコア依存部] この変更を活用するように変更.
    • 必要とするカーネルの内部関数にp_my_pcbを渡すように変更
      • タイムイベント管理モジュールのコールバック関数に,p_my_pcbを渡すように変更.
      • twdtimer_start/stop/controlに,p_my_pcbを渡すように変更.
      • define_inhとconfig_intに,p_my_pcbを渡すように変更.
    • update_schedtskの実装改善
      • これまでのupdate_schedtskを,update_schedtsk_dspにリネーム.
    • get_infの実装改善
      • 排他制御するのをやめた(その必要がないため).
    • ext_kerの実装の改善
      • ext_ker_handlerでは,他のプロセッサにプロセッサ間割込みをかけないように変更.
    • スピンロックの自動解放の実装改善
      • force_unlock_spinの呼出しを,task_terminateからext_tskに移動.
      • force_unlock_spinを呼び出すのを,CPUロック状態の場合のみにした.
    • 内部関数の必要性の低いパラメータを廃止
      • make_active,activate_context,make_runnable,migrate_self,dispatch_and_migrate,make_non_wait,make_non_runnable,wait_dequeue_tmevtb,change_priority,mutex_drop_priorityのp_pcb(またはp_new_pcb)パラメータを廃止.
    • PCB関連のファイルの整理
      • EVTTIM,TMEVTN,TMEVTBの定義を,time_event.hからtmevt.hに分離し,tmevt.hをpcb.hからインクルードする.
      • target_pcb.hの内容をtarget_kernel_impl.hに移して,target_pcb.hは廃止.pcb.hをtarget_kernel_impl.hより後にインクルードする.
      • target_kernel_impl.h中のPCBの内容にアクセスするインライン関数は,マクロでの実装に変更.
    • ARMコア依存部,チップ依存部,ターゲット依存部の実装改善
      • 実行状態のタスクのマイグレート時に使用するスタックを,非タスクコンテキスト用スタックに変更.
      • 周辺デバイスへのポーリングに待ち(sil_dly_nse(100))を入れた.
      • sil_dly_nseのアラインメントを64ビット境界に変更.
      • 不必要な命令の削除.
    • スピンロックの自動解放の実装改善
      • force_unlock_spinの呼出しを,task_terminateからext_tskに移動.
      • force_unlock_spinを呼び出すのを,CPUロック状態の場合のみにした.
    • システムサービスの実装の改善
      • ログ情報の出力時に,渡されたログバッファに書き込まないように変更.
      • syslog_printfにおいて,必要なパラメータが5つより多い場合に,5つを超えるパラメータを読まないように変更.
  • その他の実装改善
    • check.hに,check_disdspとget_p_selftskを追加.
    • p_selftskが使えるところでは,p_my_pcb->p_runtskをp_selftskで置き換える.
    • 標準の割込みハンドラ初期化ブロックから,affinityフィールド(割込みハンドラの割付け可能プロセッサ)を削除.標準のdefine_inhのパラメータから,affinityを削除.
    • loc_spn内のgotoを無くすように変更.
    • スピンロックに関するコンフィギュレーション処理の順序を前に移動.
    • マスタプロセッサであることを判別するマクロis_mprcを廃止.
    • 前方参照のためにtypedefしたデータ型も,再度typedefするように変更.
  • その他(テストプログラム,サンプルプログラム等)
    • テスト実行スクリプト(testexec.rb,testcfg.rb)の改善
      • 複数のカーネルライブラリを持てるように拡張.
      • 処理の指示方法(コマンド)の改善(testexec.rbのみ).
      • TARGET_OPTIONSへの記述順序の整理(testexec.rbのみ).
    • テストプログラムの改善・変更
      • ARM依存のテストプログラムarm_cpuexcを,arm_cpuexc1にリネーム.テスト内容を変更(SVCによるCPU例外処理のテストを除外).
    • 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)のテスト項目を追加.
      • 過渡的な状態のテスト(5)(test_mtrans5)を追加.
      • マルチコア対応テストプログラムにおいて終了時にコア間の同期を追加.
      • マルチコア対応テストプログラムにおいて2コア以外コンフィギュレーションでビルドするとエラーとなるよう変更.
    • ドキュメントの充実,コメントの修正
    Release 3.1.1 の Release 3.1.0 との主な違い
    • 不具合修正
      • 取得しているスピンロックの初期化の場所の変更
        • 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のパラメータ名の誤りを修正(プロトタイプ宣言なので実害なし).
    Release 3.1.0 の Release 3.0.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を削除.
      1. 高分解能タイマが64ビットの場合に対応(オプション)
      • 高分解能タイマを64ビットにできる場合には,必要に応じて対応する.具体的には,ASP3カーネルのポーティングガイドの(3-8-1),(5-3-1),(6-13-2-5)の設定に対応し,tool_svc.hのターゲット依存部に,CAL_SVC_0M_R_UINT64の定義を追加する.
      1. [ARM依存部] software_term_hookの呼び出し箇所変更への対応
        • 必要であれば,target_exitにsoftware_term_hookを呼ぶ処理を追加する.

    Newsletterのバックナンバーはこちら

    Tweets by ToppersJP


    Copyright (C) 2000 - 2023 by TOPPERS Project, Inc. All Rights Reserved.