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/HRMP3カーネル更新履歴
目次
Release 3.3.2 と Release 3.3.1 との主な違い
Release 3.3.1 と Release 3.3.0 との主な違い
Release 3.3.0 と Release 3.2.0 との主な違い
Release 3.2.0 と Release 3.1.2 との主な違い
Release 3.1.4 と Release 3.1.3 との主な違い
Release 3.1.3 と Release 3.1.2 との主な違い
Release 3.1.2 と Release 3.1.1 との主な違い
Release 3.1.1 と Release 3.1.0 との主な違い
Release 3.1.0 と Release 3.0.0 との主な違い
Release 3.3.2 と Release 3.3.1 との主な違い
割込みコントローラ操作の排他制御に関する不具合修正
プロセッサ間で共有する割込みコントローラのレジスタ操作時に,プロセッサ間排他制御が抜けていた不具合を修正.
ターゲット依存部で対応する方針とし,ポーティングガイドに記載.
ARMのGIC依存部を修正.
dis_int等の処理内でCPUロック状態にしないことができるように変更
ターゲット依存部の設定により,dis_int,ena_int,clr_int,ras_int,prb_int内で,CPUロック状態にしないことができるように変更.
シリアルインタフェースドライバの実装改善
コンフィギュレーション情報を記述したファイル(serial_cfg.c)を分離.
sample/Makefileの修正
不要な記述の削除.
ドキュメントの充実,コメントの修正
バージョン番号の更新
カーネルのバージョン番号を更新.
Release 3.3.1 と Release 3.3.0 との主な違い
sample/Makefileの不具合修正
シンボルファイル,バイナリファイル,ダンプファイルの生成ルールを,個別に記述するように変更.
バージョン番号の更新
カーネルのバージョン番号を更新.
Release 3.3.0 と Release 3.2.0 との主な違い
システム状態のアクセス許可ベクタの仕様変更に対応
システム状態に対してアクセス許可ベクタを2つ持つように変更.
sus_tskとter_tskの呼出しを,システム状態のアクセス許可ベクタでも禁止できるように変更.
サービスコールを制御するアクセス許可パターンの変更に対応.
これらの変更に対応して,テストプログラムを修正.
CPU例外の扱いを変更
CPU例外ハンドラの属するクラスに関するエラーチェックを変更.
標準のCPU例外ハンドラ初期化ブロックに,割付け可能プロセッサを持たせるように変更.
NGKI3985の仕様変更に伴う変更
TA_NOWRITE属性のメモリオブジェクトを,TA_NOWRITE属性でないメモリリージョンに配置した場合に,TA_MEMINI属性を付ける条件の仕様変更に対応.
NGKI3984の仕様変更に伴う変更
TA_MEMINI属性のメモリオブジェクトの初期化データの配置と初期化を行わない条件の仕様変更に対応.
不正なクラスIDのエラーチェックの方法を変更
ターゲット依存のクラス定義ファイル(target_class.trb)を新設.
クラス定義ファイルの名称を,コンフィギュレータのパス2に-Cオプションで渡すように,コンフィギュレータとsample/Makefile等を変更.
コンフィギュレータのクラスの処理方法を変更.クラスの囲みに対して不正なクラスIDのエラーチェックを行うように変更.
静的APIに対する不正なクラスIDのエラーチェックを削除.
カーネルに依存しないクラスの処理を,kernel.trbからコンフィギュレータに移動.
関連するテストプログラム(pass2_cls1,pass2_obj4)を変更.
メモリオブジェクト属性にTA_KEEPを追加
GNU開発環境向けリンカスクリプト生成スクリプトで,セクションのリンク記述にKEEPを付けることを指示するTA_KEEP属性を追加.
ARM依存部をTA_KEEP属性に対応するように変更.
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)の値を変更しないように変更.
ユーザドメインに属する周期/アラーム通知の不具合修正
ユーザドメインに周期/アラーム通知が登録され,カーネルドメインには登録されていない場合に,保護ドメイン初期化ブロック中のp_tmevt_heapをNULLに設定する不具合を修正した.この不具合により,tmevtb_enqueue等で,高分解能タイマ割込みの発生タイミングが設定されないという問題が起こっていた.
変数のインクリメントによる通知に関するエラーチェックの修正
変数に対する読出しアクセスのチェックにおいて,TA_NOREAD属性のチェックが抜けていた問題を修正.
エラー通知に関しても,同様の処理に修正.
標準のデータ領域に入れるメモリオブジェクトの修正
TA_NOWRITE属性のメモリオブジェクトに,TA_MEMINI属性またはTA_MEMZERO属性が付いていた場合の配置タイプを修正.
不要な割込みハンドラ情報を生成しないように修正
コンフィギュレータが生成する割込みハンドラに関する情報が,割込みを受け付けるプロセッサ以外に対しても生成される問題を修正.
標準のCPU例外ハンドラの初期化コードの修正
CPU例外ハンドラ初期化ブロックに,割付けプロセッサのフィールドを追加し,自プロセッサのCPU例外ハンドラに対してのみdefine_excを呼び出すように修正.
アイドルドメイン用のタイムイベントヒープのextern宣言の修正
USE_LATERPASS_DOMINIBの場合に,アイドルドメイン用のタイムイベントヒープのextern宣言において,変数名にプロセッサを識別する部分が抜けていた問題を修正.
手動メモリ配置用静的APIテーブル(kernel_api_mml.def)の不具合修正
DEF_SVCのfncdパラメータの型を符号付き整数に修正.
[ARM向けターゲット依存部] MPCore内蔵タイマの初期化/終了処理の修正
全体で1回のみ行うべきタイマの初期化/終了処理を,グローバル初期化/終了処理ルーチンで行うように修正.
コンフィギュレータの不具合修正
DEF_SRGで指定したメモリリージョン名が不正な場合に,コンフィギュレータがエラーで落ちる不具合を修正.
SRecord.rbに,不連続なデータ領域のコピーに対応したcopy_dataを追加し,cfg.rbのBCOPYをそれを用いるように修正.
優先度上昇状態を管理するように変更
優先度上昇状態をTCBに追加.
mutex_scan_ceilmtx,mtxhook_scan_ceilmtxを削除.
カーネルが生成する割込みハンドラから呼び出す関数名の変更
コンフィギュレータがkernel_cfg.cに生成する割込みハンドラから呼び出すカーネル内の関数名に,_kernel_を付けるように変更.
POSIX依存部に対応するための変更
ref_memの本体をrefer_memory関数に分離し,OMIT_REFER_MEMORYを定義することで,ターゲット依存部で上書きできるように変更.
kernel_check.trb中のCheckMemobj,CheckMemobjKernelをターゲット依存部で上書きできるように変更.
手動メモリ配置の時に,スタック領域と固定長メモリプール領域の自動割当てを可能にするための定義(TOPPERS_AUTO_STK,TOPPERS_AUTO_MPF)を追加し,各コードをそれに対応.
ターゲット依存で,非タスクコンテキスト用のスタック領域を使用しない設定(OMIT_ISTACK)とアイドルスタックを使用しない設定(OMIT_IDSTACK)を用意.
カーネルのサービスコール呼出しのみを関数呼出しにするマクロを(TOPPERS_SVC_CALL_KERNEL)を用意.
ref_memがE_NOMEMを返した場合は,prb_strはE_OKを返すように変更.
リンカスクリプトでフック呼出しのためのPROVIDEの使用をやめる
arch/arm_gcc/common/start.Sで,hardware_init_hookとsoftware_init_hookを無条件に呼び出すように変更し,weak属性付きの空関数を用意.
arm_gcc/common/cfg1_out.ldで,hardware_init_hook,software_init_hook,software_term_hookを0に定義するPROVIDE記述を削除.
arm_gcc/common/core_ldscript.trbとtarget/dummy_gcc/target_ldscript.trbで,リンカスクリプトに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を導入.
標準のメモリオブジェクト属性の定義方法の変更
TA_DATASEC,TA_BSSSEC,TA_NOINITSECの定義を変更する場合は,ターゲット依存部でTA_RWDATASECを定義するように変更.
初期化データがない場合のエラー処理の追加
kernel_lib.trbのLmaCopyで,startIdataが取れない場合に,エラーメッセージを出して終了するように変更.
コンフィギュレータの実装改善
pass1.rbを,rubyの新しいバージョンでエラーにならないように修正.
クラスIDでエラーになった場合は,NGKI3016のチェックを行わないように修正.
[ARM向けターゲット依存部] ARMコアサポートモジュールを見直し
arm.cの内容をarm.hに移し,arm.cを廃止.
L1キャッシュのクリーン操作関数を追加.
キャッシュの操作関数を整理.
スタートアップモジュールをターゲット依存で追加できるように変更.
[ARM向けターゲット依存部] 初期化手順を見直し
MPCore依存部に,L2キャッシュの操作関数を追加.
キャッシュのディスエーブルは,hardware_init_hookで実施することとし,mpcore_initializeでは実施しないことに.
ARMv7以上の場合に,SCTLRのセットされていると問題が発生するビットをクリアするように変更.
TBLの無効化処理を,ノンユニファイドTLBに対応できるように変更.
その他の実装改善
include/kernel.hのSCHEDNOの定義にキャストを追加(コンパイラによってはエラーとなる).
標準的に利用するセクションを登録する処理をターゲット非依存部に移動.
kernel/check.hにsil.hのインクルードを追加.
$targetStandardSecnameListが未定義の場合に警告が出ないように変更.
GenerateHookEndLabelをGenerateCommonROSectionsにリネーム.関連する変数も合わせてリネーム.
コンフィギュレーションスクリプト(configure.rb)とユーティリティプログラムを,FileUtilsライブラリをなるべく使わないように変更.
テストプログラム生成ツール(gentest.rb)の出力形式の改善.
configureとsample/Makefileの機能改善
コンフィギュレーションスクリプト(configure.rb)でコンパイルオプションを外せるように,sample/Makefileを拡張.
sample/Makefileの変更
%.cppに対するvpath指定を追加.
sample/sample1の変更
CPU例外ハンドラをプロセッサ毎に定義する場合と,システム全体で定義する場合の両方に対応できるように変更.
テストプログラムの実行スクリプトの変更
testexec.rbで,カーネルライブラリのビルド時に-fオプションを与えないように変更(必要な場合は,TARGET_OPTIONSに記述する).
testcfg.rbの機能改善.
テストプログラムの追加
優先度データキュー機能のテスト(1)(test_pdq1),固定長メモリプール機能のテスト(1)(test_mpf1)を追加.
メモリ保護機能のテスト(3)(test_mprot3)を追加.
USE_LATERPASS_DOMINIBを用いる場合のテスト(cfg_dominib)を追加.
手動メモリ配置の場合の静的APIのテスト(cfg_mml1)を追加.
コンフィギュレータが警告を出す場合のテスト(2)(cfg_warning2)を追加し,一部のテストを警告を出す場合のテスト(1)(cfg_warning1)から移す.
ユーザドメインでのテスト(test_cpuexc5u〜test_cpuexc10u,test_sysstat1u)を追加.
コンフィギュレータ本体によるパス1でのエラー検出のテスト(1)(pass1_cfg1)を追加.パス2でのエラー検出のテストの一部を移動.
周期通知のテスト(1)(test_cyclic1)を追加.
テストプログラムの修正
強制待ち状態に関するテスト(1)(test_suspend1)で,呼び出すサービスコールを修正.
時間パーティショニングに関するテスト(4)(test_tprot4)で,タイムウィンドウを使い切るための周期通知を4つにする.
システム状態に対するアクセス許可ベクタを,テストプログラムを実行するために最小限必要な許可のみを行うように変更.
テストプログラムの改善・変更
CPU例外ハンドラを用いるテストプログラムを,CPU例外ハンドラをプロセッサ毎に定義する場合と,システム全体で定義する場合の両方に対応できるように変更.
test_messagebuf1とtest_messagebuf2を,intptr_tが64ビットの場合に対応.
test_svc.cにset_barrier_numprcを追加し,バリア同期を使用するテストプログラムを,それを呼び出すように修正.
test_extsvc1を,cal_svcでE_NOMEMが検出できない場合に対応.
test_int1,test_mprot1,test_mprot2を拡張.
test_cpuexc10.cをユーザドメインでも実行できるように変更.
ATT_SECのテスト(4)(cfg_attsec4)を追加.
cfg_attmod1を,NGKI3985をテストできるように変更.
pass2_cfg1,pass2_cfg2,pass2_mbf1,pass2_spn1を意図しないエラーが出ないように変更.
pass4_all2におけるNGKI3702とNGKI3898のテストケースを拡充.
いくつかのテストプログラムを,test_common.hを使用するように変更.
その他の修正
gentest.rbの不具合修正と実装改善.
ドキュメントの充実,コメントの修正
バージョン番号の更新
カーネルとカーネル仕様のバージョン番号を更新.
Release 3.2.0 と Release 3.1.2 との主な違い
拡張情報の型をEXINFに変更
コンフィギュレータが生成する関数を配置するメモリリージョン
コンフィギュレータが生成する通知ハンドラと割込みハンドラを,それに関連するオブジェクトが属するクラスの標準メモリリージョンに配置するように変更.
[ARMコア依存部,ダミーターゲット依存部] それらを配置するセクション(.kernel_code_<クラス名>)を設ける.配置するセクションを指定して関数定義を生成するための関数を追加.
標準スタックリージョンの新設
DEF_SRGに標準スタックリージョンを定義するためのパラメータを追加.
ユーザスタックを配置するメモリリージョンを,ターゲット依存部で変更できるように,MemregUserStackを導入.デフォルトの配置先を,標準スタックリージョンに変更.
SecnameSystemStackにパラメータを追加.
[ARMコア依存部,ダミーターゲット依存部] スタック領域を配置するメモリリージョンを,標準スタックリージョンに変更.SecnameSystemStackにパラメータを追加(使用していない).
CRE_TSKのエラー条件の変更
システムタスクの生成時に,stkszが0の場合にE_PARエラーとする処理を削除(システムスタックサイズがターゲット定義の最小値よりも小さい場合をエラーとするため,問題ない).
割込みサービスルーチンを実行するプロセッサに関する仕様変更に対応
割込み要求ライン初期化ブロックのaffinityフィールド(割付け可能プロセッサ)に生成する情報を,対応するDEF_INHがある場合,対応するCRE_ISRがある場合,どちらもない場合で変えるように変更.
CFG_INTに関するエラーチェックを,2回に分けて実施.
[ARM依存部] 割付け可能プロセッサが複数あるクラスの囲み内にCRE_ISRやCFG_INTを記述した場合には,コンフィギュレータが警告メッセージを出し,クラスの初期割付けプロセッサのみで割込みを受け付けるように設定するように変更.
[ARMコア依存部] 性能評価時のキャッシュの無効化の実装
HIST_INVALIDATE_CACHEがマクロ定義されている場合には,性能評価において実行時間を計測する前に,キャッシュと分岐予測を無効化する.
通知ハンドラ名の衝突の問題の修正
タイムウィンドウ通知の通知ハンドラの関数名が,周期通知やアラーム通知と衝突する可能性がある問題を本格的に修正.
ARMコア依存部,チップ依存部,ターゲット依存部の不具合修正
TA_SDATA属性を無視するように修正.
パフォーマンスモニタによる性能評価が正しく動作するように修正.その際に,USE_ARM_PM_HISTをUSE_ARM_PMCNTに,TOPPERS_ARM_PMCNT_DIV64をUSE_ARM_PMCNT_DIV64にリネーム.
計測前のキャッシュの無効化時に,TLBも無効化するように変更.
コンフィギュレータのエラーメッセージの改善
コンフィギュレータ本体のエラーメッセージ出力関数を拡張・整理.それを活用するように生成スクリプトを変更.
メモリ領域や変数の先頭番地がNULLの場合に,アクセス権に関するエラーチェックを行わないように修正.
inhno/intnoが有効範囲外のエラーの場合に,初期割付けプロセッサ/割付け可能プロセッサに関するエラーチェックを行わないように修正.
カーネル管理外の割込みに関するエラーメッセージを改善.
ATT_SECで,mematrの不正を示すエラーメッセージを改善.
SAC_SYS,DEF_SCYが複数記述されている場合のエラーメッセージを改善.
タイムウィンドウ通知に関するエラーメッセージを改善.
ATT_TWDの通知にタイムイベントハンドラを用いた場合のエラーメッセージを改善.
静的APIの文法エラーに対するエラーメッセージを改善.
静的APIテーブルにエラーがあった場合に,ファイル名と行番号を出力するように変更.
パス3〜4でシンボルが見つからない場合のエラー検出の追加
コンフィギュレータのSYMBOL関数に,シンボルが見つからない場合にエラーメッセージを出す機能を追加.
この機能に対応できるように,生成スクリプトを変更.
ディスパッチハンドラを除外できるように変更
ディスパッチハンドラが不要な場合に,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_my_schedtskを廃止.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の内容にアクセスするインライン関数は,マクロでの実装に変更.
PCB中のp_scyc_tmevtbフィールドを,scyc_tmevtbフィールドに変更.
p_scyc_tmevtb_tableを廃止.
ARMコア依存部,チップ依存部,ターゲット依存部の実装改善
svc命令によってサービスコールを呼び出す方法を改善.
実行状態のタスクのマイグレート時に使用するスタックを,非タスクコンテキスト用スタックに変更.
拡張サービスコールの入口のログ取得コードを改善.
cfg1_out.ld中で,.rodataセクションのリンク記述にKEEPをつけた.
周辺デバイスへのポーリングに待ち(sil_dly_nse(100))を入れた.
sil_dly_nseのアラインメントを64ビット境界に変更.
不必要な命令の削除.
GNU開発環境依存部の実装改善
kernel_cfg.oの.rodataセクションのリンク記述に,KEEPをつけるように修正(リンカ最適化で,シンボルが削除されるのを防ぐため).
システムサービスの実装の改善
ログ情報の出力時に,渡されたログバッファに書き込まないように変更.
syslog_printfにおいて,必要なパラメータが5つより多い場合に,5つを超えるパラメータを読まないように変更.
その他の実装改善
ターゲット依存部から呼ばれる割込み処理ルーチンの入口にassert文を入れるように統一(twd_switch,dispatch_handler,ext_ker_handler,set_hrt_event_handler,start_scyc_handlerにassert文を追加).
check.hに,check_disdspとget_p_selftskを追加.get_mydomをget_selfdomにリネーム.sns_xxxの実装を,それらを用いるように変更.
p_selftskが使えるところでは,p_my_pcb->p_runtskをp_selftskで置き換える.
標準の割込みハンドラ初期化ブロックから,affinityフィールド(割込みハンドラの割付け可能プロセッサ)を削除.標準のdefine_inhのパラメータから,affinityを削除.
loc_spn内のgotoを無くすように変更.
保護ドメインのアクセス許可ベクタが設定済みかのエラーチェックコードを改善.
スピンロックに関するコンフィギュレーション処理の順序を前に移動.
リンクオンリセクションのリンク後セクション名とラベルを適切な名称に変更.
マスタプロセッサであることを判別するマクロis_mprcを廃止.
前方参照のためにtypedefしたデータ型も,再度typedefするように変更.
ダミーのターゲット依存部(target/dummy_gcc)の変更
トレースログ取得の方法を変更.
テスト実行スクリプト(testexec.rb,testcfg.rb)の改善
複数のカーネルライブラリを持てるように拡張.
処理の指示方法(コマンド)の改善.
TARGET_OPTIONSへの記述順序の整理(testexec.rbのみ).
テストプログラムの改善・変更
ARM依存のテストプログラムarm_cpuexcを,arm_cpuexc1にリネーム.テスト内容を変更(SVCによるCPU例外処理のテストを除外).
ARM向けCPU例外処理のテスト(2)(arm_cpuexc2)を追加.
カーネルの整合性検査の準備
[ARM依存部] TSKCTXBのチェックのための定義を追加.
設計メモとポーティングガイドの作成開始(現時点では未完成)
ドキュメントの充実,コメントの修正
バージョン番号の更新
カーネルとカーネル仕様のバージョン番号を更新.
Release 3.1.4 と Release 3.1.3 との主な違い
sample/Makefileの不具合修正
シンボルファイル,バイナリファイル,ダンプファイルの生成ルールを,個別に記述するように変更.
NGKI3985の仕様変更に伴う変更
TA_NOWRITE属性のメモリオブジェクトを,TA_NOWRITE属性でないメモリリージョンに配置した場合に,TA_MEMINI属性を付ける条件の仕様変更に対応.
ユーザドメインに属する周期/アラーム通知の不具合修正
ユーザドメインに周期/アラーム通知が登録され,カーネルドメインには登録されていない場合に,保護ドメイン初期化ブロック中のp_tmevt_heapをNULLに設定する不具合を修正した.この不具合により,tmevtb_enqueue等で,高分解能タイマ割込みの発生タイミングが設定されないという問題が起こっていた.
変数のインクリメントによる通知に関するエラーチェックの修正
変数に対する読出しアクセスのチェックにおいて,TA_NOREAD属性のチェックが抜けていた問題を修正.
エラー通知に関しても,同様の処理に修正.
標準のデータ領域に入れるメモリオブジェクトの修正
TA_NOWRITE属性のメモリオブジェクトに,TA_MEMINI属性またはTA_MEMZERO属性が付いていた場合の配置タイプを修正.
不要な割込みハンドラ情報を生成しないように修正
コンフィギュレータが生成する割込みハンドラに関する情報が,割込みを受け付けるプロセッサ以外に対しても生成される問題を修正.
標準のCPU例外ハンドラの初期化コードの修正
CPU例外ハンドラ初期化ブロックに,割付けプロセッサのフィールドを追加し,自プロセッサのCPU例外ハンドラに対してのみdefine_excを呼び出すように修正.
手動メモリ配置用静的APIテーブル(kernel_api_mml.def)の不具合修正
DEF_SVCのfncdパラメータの型を符号付き整数に修正.
[ARM向けターゲット依存部] MPCore内蔵タイマの初期化/終了処理の修正
全体で1回のみ行うべきタイマの初期化/終了処理を,グローバル初期化/終了処理ルーチンで行うように修正.
コンフィギュレータの不具合修正
DEF_SRGで指定したメモリリージョン名が不正な場合に,コンフィギュレータがエラーで落ちる不具合を修正.
SRecord.rbに,不連続なデータ領域のコピーに対応したcopy_dataを追加し,cfg.rbのBCOPYをそれを用いるように修正.
割込みコントローラ操作の排他制御に関する不具合修正
プロセッサ間で共有する割込みコントローラのレジスタ操作時に,プロセッサ間排他制御が抜けていた不具合を修正.
ターゲット依存部で対応する方針とし,ARMのGIC依存部を修正.
標準のメモリオブジェクト属性の定義方法の変更
TA_DATASEC,TA_BSSSEC,TA_NOINITSECの定義を変更する場合は,ターゲット依存部でTA_RWDATASECを定義するように変更.
初期化データがない場合のエラー処理の追加
kernel_lib.trbのLmaCopyで,startIdataが取れない場合に,エラーメッセージを出して終了するように変更.
コンフィギュレータの実装改善
pass1.rbを,rubyの新しいバージョンでエラーにならないように修正.
その他の実装改善
kernel/check.hにsil.hのインクルードを追加.
sample/Makefileの修正
不要な記述の削除.
テストプログラムの追加
ATT_SECのテスト(4)(cfg_attsec4)を追加.
周期通知のテスト(1)(test_cyclic1)を追加.
テストプログラムの改善・変更
cfg_attmod1を,NGKI3985をテストできるように変更.
pass2_cfg1に,somidで指定したシステム動作モードが登録済みの場合のテストを追加.
pass4_all2におけるNGKI3702とNGKI3898のテストケースを拡充.
コメントの修正
バージョン番号の更新
カーネルのバージョン番号を更新.
Release 3.1.3 と Release 3.1.2 との主な違い
アイドルドメイン用のタイムイベントヒープのextern宣言の修正
USE_LATERPASS_DOMINIBの場合に,アイドルドメイン用のタイムイベントヒープのextern宣言において,変数名にプロセッサを識別する部分が抜けていた問題を修正.
その他の実装改善
$targetStandardSecnameListが未定義の場合に警告が出ないように変更.
テストプログラムの修正
強制待ち状態に関するテスト(1)(test_suspend1)で,呼び出すサービスコールを修正.
テストプログラムの改善・変更
USE_LATERPASS_DOMINIBを用いる場合のテスト(cfg_dominib)を追加.
ユーザドメインでのテスト(test_cpuexc5u〜test_cpuexc10u,test_sysstat1u)を追加.
test_cpuexc10.cをユーザドメインでも実行できるように変更.
ARM依存のテストプログラムarm_cpuexcを,arm_cpuexc1にリネーム.
ARM向けCPU例外処理のテスト(2)(arm_cpuexc2)を追加.
バージョン番号の更新
カーネルのバージョン番号を更新.
Release 3.1.2 と Release 3.1.1 との主な違い
メッセージバッファ機能の不具合の修正
待ち情報ブロックへの書き込みを,p_schedtskを書き換える前に行うように修正.
メモリバリア操作の追加
他プロセッサのp_schedtskを書き換える前に,メモリバリア操作を行うように修正.
高分解能タイマ設定ハンドラの修正
set_hrt_event_handlerからset_hrt_eventを呼び出す時に,排他制御を行うように修正.
メモリオブジェクトが持つ情報から「属するクラス」を削除
メモリオブジェクトの登録時に,属するクラスを設定しないように変更.
ショート定数データ領域をROMリージョンに置くとみなす条件の変更.
ATT_MEMをクラスの囲みの中に記述するとエラーとなるように変更.
テストプログラムの変更.
カーネル動作状態フラグが初期化されない不具合の修正
カーネル動作状態フラグを,PCBのフィールドから,独立した配列に変更し,クラス共通のbssセクションに配置するように変更.
テスト結果期待値の変更.
静的APIテーブル(kernel_api.def)の不具合修正
DEF_SVCのfncdパラメータの型を符号付き整数に修正.
fncdが負の場合のテストを追加(pass2_obj3.cfg).
コンフィギュレータの修正
手動メモリ配置の場合に,ATT_MODまたはATT_SECを用いた場合を警告とするように修正(前の修正の取り消し).
テスト結果期待値の変更.
log_extsvc_enter/leaveの記述漏れの修正
ターゲット非依存部のリネーム記述に追加.
ARMコア依存部,チップ依存部,ターゲット依存部の不具合修正
T_EXCINF型のintpriフィールドを符号付き整数に修正.
ARMコア依存部,チップ依存部,ターゲット依存部,ダミーのターゲット依存部(target/dummy_gcc)の実装改善
プロセッサ間割込みの優先度の記述方法を改善.
ダミーのターゲット依存部(target/dummy_gcc)の変更
トレースログ関数のリネーム記述を削除.
テストプログラムの修正
タイムウィンドウ通知に関するテスト(1)(test_twdnfy1)内のタイミング依存のチェック処理を削除.
configureとutils/makerelease.rbの変更
shellライブラリを使用しないように変更(ruby 2.7.0以降で,標準ライブラリに含まれなくなったため).
バージョン番号の更新
カーネルのバージョン番号を更新.
Release 3.1.1 と Release 3.1.0 との主な違い
[ARM依存部] 割込みハンドラのバイパス機能の追加
USE_BYPASS_IPI_DISPATCH_HANDERを定義すると,他コアからのディスパッ チ要求割込み受付時に割込みハンドラを呼び出さず,割込み処理を終了 させるように変更.
タスクコンテキストからシステム周期/タイムウィンドウの実行開始処理を 行う場合の問題を修正
タスクから呼ばれたサービスコールから,システム周期およびタイムウィ ンドウの実行開始処理を行う場合に,CPUロック状態を解除するタイミ ングでタスク切換えが起こることを防ぐために,割込み優先度マスクを, システム周期/タイムウィンドウ切換え割込みの割込み優先度に設定す るように修正.
また,実行中の保護ドメインをカーネルドメインに設定するように修正.
wait_tmout,wait_tmout_okが,タスクコンテキストから呼ばれても問 題ないように修正.
[ダミーターゲット依存部] INTPRI_TIMERの定義を追加.
通知ハンドラ名の衝突の問題の修正
タイムウィンドウ通知の通知ハンドラの関数名が,プロセッサ間で衝突 する問題と,周期通知やアラーム通知と衝突する可能性がある問題を修 正.
ディスパッチ保留状態でタスク切換えが起こる不具合の修正
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中に生成される割込み ハンドラから呼び出されるのに対応できるように修正.
コンフィギュレータの不具合修正
保護ドメイン初期化ブロック中のタイムイベントヒープへのリンクが正 しく出力されない場合がある不具合の修正.
変数のインクリメントによる通知における変数のアクセス許可に関する エラーチェックの不具合を修正.
パス4の終了処理ルーチンに関するチェックの不具合を修正.
クラスの指定値が有効範囲外の場合に,エラーメッセージを出力した後, コンフィギュレータがエラーで落ちる不具合を修正.
ユーザスタック領域の参照操作に対するアクセス許可パターンが,タス クと同じ値に設定されない不具合を修正.
ユーザタスクの生成で,sstkを記述し,sstkszの記述を省略した場合に, エラーメッセージを出力した後,コンフィギュレータがエラーで落ちる 不具合を修正.
手動メモリ配置で,stkをNULLとした場合に,エラーメッセージを出力 した後,コンフィギュレータがエラーで落ちる不具合を修正.
カーネルドメインに属する固定長メモリプールが,アクセス許可ベクタ がデフォルトの値になっているかどうかの判定ができず,手動メモリ配 置の場合に検出されないエラーがある不具合を修正.
ユーザスタック領域および固定長メモリプール領域用のセクションを ATT_SECした場合をエラーとする.
DEF_SRGで,指定したメモリリージョンが未登録の場合に,エラーメッ セージを出力した後,コンフィギュレータがエラーで落ちる不具合を修 正.
システム周期が設定されていない場合に,CRE_SOMとATT_TWDを記述する と,警告メッセージを出力した後,コンフィギュレータがエラーで落ち る不具合を修正.
DEF_ICSに関するエラーメッセージのパラメータが書き換わらないよう に修正.
手動メモリ配置の場合に,ATT_MODまたはATT_SECを用いた場合をエラー とするように修正(警告になっていた).
メモリオブジェクトが1つも登録されていない場合に,コンフィギュレー タがエラーで落ちる不具合を修正.
エラーメッセージの修正("must be with a class" → "must be within a class")
エラーメッセージの修正("any kernel memory object" → "any memory object")
USE_LATERPASS_DOMINIBを用いた時の不具合の修正
ドメイン初期化ブロックから参照する変数の宣言を,kernel_mem.cに生 成するように修正.
$schedcbList,$sdomain,$twdMap,$schedcbMap,$tmevtCountを, $globalVarsに追加.
スケジューリング単位管理ブロックとタイムイベントヒープ領域の static宣言をやめる.
カーネルのデータ構造を配置するメモリリージョンの追加修正
各オブジェクトの管理領域を該当する標準メモリリージョンに配置する ように変更した際に,いくつかの管理領域等で修正漏れがあったのを追 加修正.
手動メモリ配置用のMakefile(sample/Makefile_mml)の追加
ARMコア依存部,チップ依存部,ターゲット依存部の不具合修正
ARMv7では,SMP有効時にACTLRのFWビットを設定するように修正.
ユーザモードからは,システム周期オーバラン例外を要求できないよう に修正.
request_dispatch_prc,request_ext_ker,request_set_hrt_eventのパ ラメータの型の誤りを修正.
オーバランハンドラを使用する場合のレジスタ保存の抜けを修正.
ダミーターゲット依存部の不具合修正
スタックサイズおよびスタック領域のチェックに関するマクロ定義の不 具合を修正.
GenerateNativeSpnの定義を追加.
request_dispatch_prc,request_ext_ker,request_set_hrt_eventのパ ラメータの型の誤りを修正.
その他の不具合修正
is_mprcマクロのパラメータを()で囲むように修正.
msta_cycとmsta_almの出口のログ取得マクロ名の誤りを修正.
タスクマイグレーションログの取得漏れを修正.
time_event.h中のtmevtb_enqueueとtmevtb_dequeueのパラメータ名の誤 りを修正(プロトタイプ宣言なので実害なし).
コンフィギュレータのエラーメッセージの改善
DEF_SRGで,標準ショートRAMリージョン名の記述を省略した場合に,重 複したエラーメッセージが出る問題を修正.
コンフィギュレータのテスト(test_cfgディレクトリ)の追加
ARMコア依存部,チップ依存部,ターゲット依存部の変更
MPCoreのグローバルタイマによるtarget_hrt_raise_eventの実装を,直 接割込みを要求する形に変更.
プロセッサ間割込み(カーネル終了要求を除く)の割込み優先度を,最 低優先度に変更.
ダミーのターゲット依存部(target/dummy_gcc)の変更
カーネル管理外の割込みに対応.
カーネル管理/カーネル管理外に固定の割込み番号/割込みハンドラ番 号を設定.
割込みハンドラとCPU例外ハンドラの先頭番地のチェックを追加.
サンプルプログラムの修正
サンプルプログラムを,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)を追加.
バージョン番号の更新
カーネルとカーネル仕様のバージョン番号を更新.
Release 3.1.0 と Release 3.0.0 との主な違い
設定できる最高のタスク優先度の機能の廃止
LMT_DOMを廃止.保護ドメイン初期化ブロックを変更.
関連するエラーチェックを削除.
保護ドメインに対する制限に関するテスト(test_lmtdom1,test_lmtdom2)を廃止.
カーネルのデータ構造を配置するメモリリージョン
各オブジェクトの管理ブロックや管理領域,プロセッサ毎に必要なカーネルのデータ構造を,該当する標準メモリリージョンに配置するように変更.
[ARMコア依存部]それらを配置するセクション(.kernel_data_<クラス名>)を設ける.
システム周期とタイムウィンドウの開始のトレースログ
カーネルのコードに,トレースログを取るためのマクロを追加.
高分解能タイマが64ビットの場合に対応
t_stddef.hにおけるHRTCNT型の定義を変更.
set_hrt_eventにおいて,タイムイベントヒープが空の場合と,高分解能タイマに指定する相対カウント値がHRTCNT_BOUNDよりも大きい場合の処理を変更.マクロ定義のチェックを追加.
fch_hrtのソフトウェア割込みによる呼出し方法を変更.
MPCore内蔵タイマ用のタイマドライバを,高分解能タイマを64ビットにできるように拡張.
コンフィギュレータの仕様変更
静的APIの後に";"がない場合はエラーとするように変更.
ARMコア依存部,チップ依存部,ターゲット依存部の仕様変更
フェイタルデータアボートをエミュレートされたCPU例外と位置付け,CPU例外ハンドラ番号を割り付けた.
ダミーのターゲット依存部(target/dummy_gcc)を追加
trcv_dtqでrelease_glockを2回呼ぶパスがある不具合を修正
mrot_rdqの不具合を修正
mrot_rdqを拡張サービスコールから呼び出した場合に,TDOM_SELFが,拡張サービスコールを呼び出したタスクが属する保護ドメインになっていた不具合を修正.
initialize_interrupt内で使用する変数の誤りを修正
アイドルスタックを置くセクションの修正
各プロセッサのアイドルスタックを置くセクションを,クラスのリストから初期割付けプロセッサが一致するものをサーチして決定するように修正.
不要なスケジューリング単位管理ブロックを生成しないように修正
不要なスケジューリング単位管理ブロックの生成を抑止するための条件判定を追加.
その他の不具合修正
不要なextern宣言(set_my_hrt_event)の削除.
リネーム記述(kernel_rename.def等)の修正.
静的APIの最後に";"が抜けている不具合の修正.
システム周期の切換え遅れへの対応
あるプロセッサで,システム周期の切換えが大きく遅れた場合に,予期できない振る舞いにならないように実装を改善.
ターゲット拡大対応のための修正
kernel_opt.trbとkernel_mem.trbにおいて,USE_LATERPASS_DOMINIBの場合に,GenerateDominibを呼ぶ処理を後に移動.
メモリオブジェクトの先頭/終了ラベルの宣言を,ターゲット依存部で変更可能に.
rot_rdq中の不要なif文を削除
ARMコア依存部,チップ依存部,ターゲット依存部の実装改善
core_test.hにおけるCPU例外の発生コードを見直し.
ARM依存のテストプログラム(arm_cpuexc)を追加.
software_term_hookを,target_exitから呼ぶように変更.
その他の実装改善
VALID_TMOUTの定義を変更.
check_adjtimのパラメータの型と,エラーチェックの条件式を変更.
TOPPERS_ISTKPTが定義されていない時に,idstk_tableを生成するように変更.
プロセッサ毎に必要なカーネルのデータ領域の配置場所を,そのプロセッサが初期割付けプロセッサであるようなクラスがない時は,クラス共通の標準メモリリージョンにするように変更.
syssvcディレクトリにあるシステムコンフィギュレーションファイル中のATT_MODを,「#ifdef TOPPERS_SUPPORT_ATT_MOD」「#endif」で囲む.
configureとsample/Makefileの修正
configureへのオプションで,ライブラリのリンク記述を追加できるように,configureとsample/Makefileを修正.
サンプルプログラムの拡張
サンプルプログラム(1)(sample1)を,2つのプロセッサを動作させるように拡張.
テストプログラムの追加
システム周期の切換えが遅れた場合のテスト(test_mdelay1)を追加.
システム状態管理機能のテスト(2)(test_sysman2)を追加.
[ARM依存部] ARM向けFPUのテスト(1)(arm_fpu1)を追加.
テストプログラムの変更
test_tprot1〜test_tprot4を,test_common.hを使うように変更.
その他の変更
gentest.rbに,ローカル変数を定義する機能を追加.
ドキュメントの充実,コメントの修正
バージョン番号の更新
カーネルとカーネル仕様のバージョン番号を更新.
Newsletterのバックナンバーは
こちら
Tweets by ToppersJP