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新世代カーネル)
TA2LIB
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/HRP3カーネル更新履歴
目次
Release 3.4.1 の Release 3.4.0 との主な違い
Release 3.4.0 の Release 3.3.0 との主な違い
Release 3.3.0 の Release 3.2.0 との主な違い
Release 3.2.0 の Release 3.1.0 との主な違い
Release 3.1.0 の Release 3.0.0 との主な違い
Release 3.4.1 の Release 3.4.0 との主な違い
sample/Makefileの不具合修正
シンボルファイル,バイナリファイル,ダンプファイルの生成ルールを,個別に記述するように変更.
コメントの修正
バージョン番号の更新
カーネルのバージョン番号を更新.
Release 3.4.0 の Release 3.3.0 との主な違い
macOS,Linux上でのシミュレーション環境の追加
POSIX依存部の追加.
システム状態のアクセス許可ベクタの仕様変更に対応
システム状態に対してアクセス許可ベクタを2つ持つように変更.
sus_tskとter_tskの呼出しを,システム状態のアクセス許可ベクタでも禁止できるように変更.
サービスコールを制御するアクセス許可パターンの変更に対応.
これらの変更に対応して,テストプログラムを修正.
NGKI3985の仕様変更に伴う変更
TA_NOWRITE属性のメモリオブジェクトを,TA_NOWRITE属性でないメモリリージョンに配置した場合に,TA_MEMINI属性を付ける条件の仕様変更に対応.
NGKI3984の仕様変更に伴う変更
TA_MEMINI属性のメモリオブジェクトの初期化データの配置と初期化を行わない条件の仕様変更に対応.
NGKI5226とNGKI5230の仕様追加に伴う変更
ATT_MEM/ATT_PMAで登録されたメモリオブジェクトの一部分のみがメモリリージョンと重なる場合のエラーチェックを追加.
メモリアクセス権のチェックにおいて,カーネルドメインから呼ばれた場合
には,ポインタのアラインメントチェックを行わないように変更
メモリオブジェクト属性にTA_KEEPを追加
GNU開発環境向けリンカスクリプト生成スクリプトで,セクションのリンク記述にKEEPを付けることを指示するTA_KEEP属性を追加.
ARM依存部をTA_KEEP属性に対応するように変更.
GR-PEACH向けのターゲット依存部のブートローダの配置に,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)の値を変更しないように変更.
変数のインクリメントによる通知に関するエラーチェックの修正
変数に対する読出しアクセスのチェックにおいて,TA_NOREAD属性のチェックが抜けていた問題を修正.
エラー通知に関しても,同様の処理に修正.
標準のデータ領域に入れるメモリオブジェクトの修正
TA_NOWRITE属性のメモリオブジェクトに,TA_MEMINI属性またはTA_MEMZERO属性が付いていた場合の配置タイプを修正.
手動メモリ配置用静的APIテーブル(kernel_api_mml.def)の不具合修正
DEF_SVCのfncdパラメータの型を符号付き整数に修正.
コンフィギュレータの不具合修正
DEF_SRGで指定したメモリリージョン名が不正な場合に,コンフィギュレータがエラーで落ちる不具合を修正.
SRecord.rbに,不連続なデータ領域のコピーに対応したcopy_dataを追加し,cfg.rbのBCOPYをそれを用いるように修正.
ARMコア依存部,チップ依存部,ターゲット依存部の不具合修正
start_dispatchの不具合修正.
arch/arm_gcc/rza1/chip_sym.def中のマクロの名称を修正.
動的生成機能拡張パッケージの不具合修正
valid_memobjとvalid_memobj_kernelの実装を,マクロ定義で上書きできるように修正.
優先度上昇状態を管理するように変更
優先度上昇状態を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)を用意.
カーネルのサービスコール呼出しのみを関数呼出しにするマクロを(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の新しいバージョンでエラーにならないように修正.
[ARM向けターゲット依存部] ARMコアサポートモジュールを見直し
arm.cの内容をarm.hに移し,arm.cを廃止.
L1キャッシュのクリーン操作関数を追加.
キャッシュの操作関数を整理.
スタートアップモジュールをターゲット依存で追加できるように変更.
[ARM向けターゲット依存部] 初期化手順を見直し
MPCore依存部に,L2キャッシュの操作関数を追加.
キャッシュのディスエーブルは,hardware_init_hookで実施することとし,mpcore_initializeでは実施しないことに.
ARMv7以上の場合に,SCTLRのセットされていると問題が発生するビットをクリアするように変更.
TBLの無効化処理を,ノンユニファイドTLBに対応できるように変更.
[RZ/A1依存部] 不要な警告の抑止
$TOPPERS_SUPPORT_OVRHDRが未定義の場合に警告が出ないように変更.
[GR-PEACH依存部] hardware_init_hookの呼び方の変更に対応
target_support.Sをtarget_start.Sにリネームし,必ずリンクされるように変更.
その他の実装改善
$targetStandardSecnameListが未定義の場合に警告が出ないように変更.
GenerateHookEndLabelをGenerateCommonROSectionsにリネーム.関連する変数も合わせてリネーム.
コンフィギュレーションスクリプト(configure.rb)とユーティリティプログラムを,FileUtilsライブラリをなるべく使わないように変更.
テストプログラム生成ツール(gentest.rb)の出力形式の改善.
configureとsample/Makefileの機能改善
コンフィギュレーションスクリプト(configure.rb)でコンパイルオプションを外せるように,sample/Makefileを拡張.
sample/Makefileの変更
%.cppに対するvpath指定を追加.
テストプログラムの実行スクリプトの変更
testexec.rbで,カーネルライブラリのビルド時に-fオプションを与えないように変更(必要な場合は,TARGET_OPTIONSに記述する).
testcfg.rbの機能改善.
テストプログラムの追加
優先度データキュー機能のテスト(1)(test_pdq1),固定長メモリプール機能のテスト(1)(test_mpf1)を追加.
メモリ保護機能のテスト(3)(test_mprot3)を追加.
手動メモリ配置の場合の静的APIのテスト(cfg_mml1)を追加.
コンフィギュレータが警告を出す場合のテスト(1)(cfg_warning1)を追加.
ユーザドメインでのテスト(test_cpuexc5u〜test_cpuexc10u,test_sysstat1u)を追加.
コンフィギュレータ本体によるパス1でのエラー検出のテスト(1)(pass1_cfg1)を追加.パス2でのエラー検出のテストの一部を移動.
テストプログラムの修正
強制待ち状態に関するテスト(1)(test_suspend1)で,呼び出すサービスコールを修正.
時間パーティショニングに関するテスト(4)(test_tprot4)で,タイムウィンドウを使い切るための周期通知を4つにする.
システム時刻管理機能のテスト(1)(simt_systim1,simt_systim1_64hrt)で,target_raise_hrt_intをCPUロック状態で呼ぶように修正.
システム状態に対するアクセス許可ベクタを,テストプログラムを実行するために最小限必要な許可のみを行うように変更.
テストプログラムの改善・変更
test_messagebuf1とtest_messagebuf2を,intptr_tが64ビットの場合に対応.
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に,somidで指定したシステム動作モードが登録済みの場合のテストを追加.
pass2_cfg1,pass2_cfg2,pass2_mbf1を意図しないエラーが出ないように変更.
pass4_all2におけるNGKI3702とNGKI3898のテストケースを拡充.NGKI5226とNGKI5230のテストケースを追加.
いくつかのテストプログラムを,test_common.hを使用するように変更.
その他の修正
カーネルドメインのリージョン指定を,kernel.cdlからターゲット依存部のtarget.cdlに移動.
gentest.rbの不具合修正と実装改善.
tBitKernel.cの未完成部分の作成と不具合修正.
ドキュメントの改善,コメントの修正
バージョン番号の更新
カーネルとカーネル仕様のバージョン番号を更新.
Release 3.3.0 の Release 3.2.0 との主な違い
拡張情報の型をEXINFに変更
標準スタックリージョンの新設
DEF_SRGに標準スタックリージョンを定義するためのパラメータを追加.
ユーザスタックを配置するメモリリージョンを,ターゲット依存部で変更できるように,MemregUserStackを導入.デフォルトの配置先を,標準スタックリージョンに変更.
AllocSystemStackにパラメータを追加.
[ARMコア依存部,ダミーターゲット依存部] スタック領域を配置するメモリリージョンを,標準スタックリージョンに変更.AllocSystemStackにパラメータを追加(使用していない).
CRE_TSKのエラー条件の変更
システムタスクの生成時に,stkszが0の場合にE_PARエラーとする処理を削除(システムスタックサイズがターゲット定義の最小値よりも小さい場合をエラーとするために,問題ない).
[ARMコア依存部] 性能評価時のキャッシュの無効化の実装
HIST_INVALIDATE_CACHEがマクロ定義されている場合には,性能評価において実行時間を計測する前に,キャッシュと分岐予測を無効化する.
タスクコンテキストからシステム周期/タイムウィンドウの実行開始処理を
タスクから呼ばれたサービスコールから,システム周期およびタイムウィンドウの実行開始処理を行う場合に,CPUロック状態を解除するタイミングでタスク切換えが起こることを防ぐために,割込み優先度マスクを,システム周期/タイムウィンドウ切換え割込みの割込み優先度に設定するように修正.
また,実行中の保護ドメインをカーネルドメインに設定するように修正.
wait_tmout,wait_tmout_okが,タスクコンテキストから呼ばれても問題ないように修正.
[ダミーターゲット依存部] INTPRI_TIMERの定義を追加.
通知ハンドラ名の衝突の問題の修正
タイムウィンドウ通知の通知ハンドラの関数名が,周期通知やアラーム通知と衝突する可能性がある問題を修正.
rot_rdqが非タスクコンテキストから呼ばれた場合の処理の修正
rot_rdqが非タスクコンテキストから呼ばれた場合にも,実行状態のタスクが属するスケジュール単位を操作対象としていた不具合を修正.
xsns_dpnの不具合修正
タスクコンテキストから呼び出された場合は,trueを返すように修正.
静的APIテーブル(kernel_api.def)の不具合修正
DEF_SVCのfncdパラメータの型を符号付き整数に修正.
fncdが負の場合のテストを追加(pass2_obj3.cfg).
コンフィギュレータの不具合修正
変数のインクリメントによる通知における変数のアクセス許可に関するエラーチェックの不具合を修正.
パス4の終了処理ルーチンに関するチェックの不具合を修正.
ユーザスタック領域の参照操作に対するアクセス許可パターンが,タスクと同じ値に設定されない不具合を修正.
ユーザタスクの生成で,sstkを記述し,sstkszの記述を省略した場合に,エラーメッセージを出力した後,コンフィギュレータがエラーで落ちる不具合を修正.
手動メモリ配置で,stkをNULLとした場合に,エラーメッセージを出力した後,コンフィギュレータがエラーで落ちる不具合を修正.
カーネルドメインに属する固定長メモリプールが,アクセス許可ベクタがデフォルトの値になっているかどうかの判定ができず,手動メモリ配置の場合に検出されないエラーがある不具合を修正.
ユーザスタック領域および固定長メモリプール領域用のセクションをATT_SECした場合をエラーとする.
DEF_SRGで,指定したメモリリージョンが未登録の場合に,エラーメッセージを出力した後,コンフィギュレータがエラーで落ちる不具合を修正.
システム周期が設定されていない場合に,CRE_SOMとATT_TWDを記述すると,警告メッセージを出力した後,コンフィギュレータがエラーで落ちる不具合を修正.
メモリオブジェクトが1つも登録されていない場合に,コンフィギュレータがエラーで落ちる不具合を修正.
エラーメッセージの修正("any kernel memory object" → "anymemory object")
USE_LATERPASS_DOMINIBを用いた時の不具合の修正
ドメイン初期化ブロックから参照する変数の宣言を,kernel_mem.cに生成するように修正.
$schedcbListを,$globalVarsに追加.
log_extsvc_enter/leaveの記述漏れの修正
tTraceLog.cに関数定義を追加.
ターゲット非依存部のリネーム記述に追加.
ARMコア依存部,チップ依存部,ターゲット依存部の不具合修正
ユーザモードからは,システム周期オーバラン例外を要求できないように修正.
T_EXCINF型のintpriフィールドを符号付き整数に修正.
TA_SDATA属性を無視するように修正.
パフォーマンスモニタによる性能評価が正しく動作するように修正.その際に,USE_ARM_PM_HISTをUSE_ARM_PMCNTに,TOPPERS_ARM_PMCNT_DIV64をUSE_ARM_PMCNT_DIV64にリネーム.
計測前のキャッシュの無効化時に,TLBも無効化するように変更.
CT11MPCore依存部の割込みの数を修正.
ダミーターゲット依存部の不具合修正
スタックサイズおよびスタック領域のチェックに関するマクロ定義の不具合を修正.
get_infの実装改善
排他制御するのをやめた(その必要がないため).
ショート定数データ領域をROMリージョンに置くとみなす条件の変更
コンフィギュレータのエラーメッセージの改善
コンフィギュレータ本体のエラーメッセージ出力関数を拡張・整理.それを活用するように生成スクリプトを変更.
メモリ領域や変数の先頭番地がNULLの場合に,アクセス権に関するエラーチェックを行わないように修正.
カーネル管理外の割込みに関するエラーメッセージを改善.
DEF_SRGで,標準ショートRAMリージョン名の記述を省略した場合に,重複したエラーメッセージが出る問題を修正.
ATT_SECで,mematrの不正を示すエラーメッセージを改善.
SAC_SYS,DEF_SCY,DEF_ICSが複数記述されている場合のエラーメッセージを改善.
タイムウィンドウ通知に関するエラーメッセージを改善.
ATT_TWDの通知にタイムイベントハンドラを用いた場合のエラーメッセージを改善.
静的APIの文法エラーに対するエラーメッセージを改善.
静的APIテーブルにエラーがあった場合に,ファイル名と行番号を出力するように変更.
パス3〜4でシンボルが見つからない場合のエラー検出の追加
コンフィギュレータのSYMBOL関数に,シンボルが見つからない場合にエラーメッセージを出す機能を追加.
この機能に対応できるように,生成スクリプトを変更.
オーバランハンドラ機能拡張の実装改善
オーバランハンドラがサポートされていない場合に,オーバランハンドラ初期化ブロックを生成しないように変更.
生成スクリプトの記述スタイルを変更(他の類似記述と合わせた).
ARMコア依存部,チップ依存部,ターゲット依存部の実装改善
svc命令によってサービスコールを呼び出す方法を改善.
サービスコール/拡張サービスコールの出入口処理を改善.
ARMv7では,SMP有効時にACTLRのFWビットを設定するように修正.
拡張サービスコールの入口のログ取得コードを改善.
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にassert文を追加).
保護ドメインのアクセス許可ベクタが設定済みか,カーネルメモリプール領域が設定済みか(動的生成機能拡張パッケージのみ)のエラーチェックコードを改善.
リンクオンリセクションのリンク後セクション名とラベルを適切な名称に変更.
tTraceLog.c中のトレースログ関数を,マクロを呼び出す形に変更し,マクロが定義されている場合のみコンパイルするように変更.
TECSからカーネルを呼び出すための記述の変更
tKernel_inline.h中の引数がない関数の引数記述を(void)とする.
コンフィギュレータのテスト(test_cfgディレクトリ)の追加
ダミーのターゲット依存部(target/dummy_gcc)の変更
カーネル管理外の割込みに対応.
カーネル管理/カーネル管理外に固定の割込み番号/割込みハンドラ番号を設定.
割込みハンドラとCPU例外ハンドラの先頭番地のチェックを追加.
トレースログ取得の方法を変更.
トレースログ関数のリネーム記述を削除.
テスト実行スクリプト(testexec.rb)の改善
複数のカーネルライブラリを持てるように拡張.
処理の指示方法(コマンド)の改善.
TARGET_OPTIONSへの記述順序の整理.
性能評価プログラムの追加
時間計測オーバヘッドの評価(1)(perf_measure1)を追加.
サービスコール呼出し時間の評価(1)(perf_pcalsvc1)を追加.
拡張サービスコール呼出し時間の評価(1)(perf_pextsvc1)を追加.
テストプログラムの修正
通知処理のテスト(1)(test_notify1)の変数の型の誤り(intptr_tとint_tのサイズが異なる場合に不具合が発生)を修正.
タイムウィンドウ通知に関するテスト(1)(test_twdnfy1)内のタイミング依存のチェック処理を削除.
テストプログラムの改善・変更
セマフォ機能のテスト(1)(test_sem1)のテスト項目を追加.
タイムウィンドウ通知に関するテスト(test_twdnfy)をtest_twdnfy1にリネームし,テスト内容を改善.
タイムウィンドウ通知に関するテスト(2)(test_twdnfy2)を追加.
ARM依存のテストプログラムarm_cpuexcを,arm_cpuexc1にリネーム.テスト内容を変更(SVCによるCPU例外処理のテストを除外).
ARM向けCPU例外処理のテスト(2)(arm_cpuexc2)を追加.
カーネルの自己診断機能の拡充
カーネルの自己診断機能で整合性検査を行う範囲を広げた.
ミューテックス機能の自己診断機能を廃止.
[ARM依存部] TSKCTXBのチェックのための定義を追加.
configureとutils/makerelease.rbの変更
shellライブラリを使用しないように変更(ruby 2.7.0以降で,標準ライブラリに含まれなくなったため).
ドキュメントの充実,コメントの修正
バージョン番号の更新
カーネルとカーネル仕様のバージョン番号を更新.
Release 3.2.0 の Release 3.1.0 との主な違い
設定できる最高のタスク優先度の機能の廃止
LMT_DOMを廃止.保護ドメイン初期化ブロックを変更.
関連するエラーチェックを削除.
保護ドメインに対する制限に関するテスト(test_lmtdom1,test_lmtdom2)を廃止.
システム周期とタイムウィンドウの開始のトレースログ
カーネルのコードに,トレースログを取るためのマクロを追加.
トレースログ記録のサンプルコードに,記録・表示する機能を追加.
高分解能タイマが64ビットの場合に対応
t_stddef.hにおけるHRTCNT型の定義を変更.
set_hrt_eventにおいて,タイムイベントヒープが空の場合と,高分解能タイマに指定する相対カウント値がHRTCNT_BOUNDよりも大きい場合の処理を変更.マクロ定義のチェックを追加.
fch_hrtのソフトウェア割込みによる呼出し方法を変更.
MPCore内蔵タイマ用のタイマドライバ(USE_MPCORE_GTC_HRTの場合)とタイマドライバシミュレータを,高分解能タイマを64ビットにできるように拡張(target_hrt_clear_eventの追加など).
simtimer_ct11mpcore_gccを,高分解能タイマが64ビットの場合に対応.
テストプログラム(simt_systim1_64hrt,simt_systim2_64hrt,simt_systim3_64hrt.c)を追加.
モノトニックタイマ機能拡張パッケージの追加
コンフィギュレータの仕様変更
静的APIの後に";"がない場合はエラーとするように変更.
ARMコア依存部,チップ依存部,ターゲット依存部の仕様変更
フェイタルデータアボートをエミュレートされたCPU例外と位置付け,CPU例外ハンドラ番号を割り付けた.
mrot_rdqの不具合を修正
mrot_rdqを拡張サービスコールから呼び出した場合に,TDOM_SELFが,拡張サービスコールを呼び出したタスクが属する保護ドメインになっていた不具合を修正.
mrot_rdqを非タスクコンテキストから呼び出した場合に,TPRI_SELFが,実行状態のタスクの優先度になっていた不具合を修正.
手動メモリ配置の場合のコンフィギュレータの不具合修正
CopyLmaを,$datasecListが未定義の場合に対応.
ARMコア依存部,チップ依存部,ターゲット依存部の不具合の修正
CT11MPCoreターゲット依存部で,時間パーティショニングとオーバラン ハンドラを同時に使用している場合のエラーチェックを追加(CT11MPCore+ タイマドライバシミュレータではエラーにしない).
その他の不具合修正
sample/Makefile中のバナー表示の依存関係記述の修正.
静的APIの最後に";"が抜けている不具合の修正.
ターゲット拡大対応のための修正
kernel_opt.trbとkernel_mem.trbにおいて,USE_LATERPASS_DOMINIBの場合に,GenerateDominibを呼ぶ処理を後に移動.
メモリオブジェクトの先頭/終了ラベルの宣言を,ターゲット依存部で変更可能に.
rot_rdq中の不要なif文を削除
ARMコア依存部,チップ依存部,ターゲット依存部の実装改善
core_test.hにおけるCPU例外の発生コードを見直し.
ARM依存のテストプログラム(arm_cpuexc)を追加.
sp804.hを,arch/arm_gcc/commonから,target/ct11mpcore_gccに移動.
software_term_hookを,target_exitから呼ぶように変更.
タイマドライバシミュレータの実装改善
タイマ割込みの発生時刻の設定状況を表すデータ型(INT_EVENT)を導入.
その他の実装改善
VALID_TMOUTの定義を変更.
check_adjtimのパラメータの型と,エラーチェックの条件式を変更.
tTask_inline.hに古いサービスコール(先頭に"i"が付く)が残っていたのを修正.
tSerialPortMain.c内のローカル変数内の型を修正.
ATT_MODを「#ifdef TOPPERS_SUPPORT_ATT_MOD」「#endif」で囲む.
configureとsample/Makefileの修正
configureへのオプションで,ライブラリのリンク記述を追加できるように,configureとsample/Makefileを修正.
テストプログラムの追加
システム状態管理機能のテスト(2)(test_sysman2)を追加.
[ARM依存部] ARM向けFPUのテスト(1)(arm_fpu1)を追加.
テストプログラムの変更
test_twdnfyで,短いタイムウィンドウ中でタスクが実行されてしまうことの対策待ち時間を変更(エラーを起こすケースを減らす).
test_tprot1〜test_tprot4を,test_common.hを使うように変更.
テストプログラムの不具合修正
simt_twd1.cfgの不具合の修正.
gentest.rbの拡張(HRMP3カーネル向けのものを導入)
マルチプロセッサに対応.
元のファイルを置き換える仕様に変更.
ローカル変数を定義する機能を追加.
ドキュメントの充実,コメントの修正
バージョン番号の更新
カーネルとカーネル仕様のバージョン番号を更新.
Release 3.1.0 の Release 3.0.0 との主な違い
タイムウィンドウ通知機能の追加
LMT_DOMによる制限の抜け道への対応
loc_mtxにおいて,E_OACVエラーになる条件を追加[NGKI5124].
スケジューリング単位の概念の導入への対応
SCHEDNOマクロの定義を追加.
mrot_rdq,mget_lod,mget_nthの第1パラメータの名前をschednoに変更.
保護ドメイン毎の標準セクションを廃止
保護ドメイン毎の標準セクションを登録するコードを削除.
ターゲット依存部で,.noinit_kernelセクションに配置するコードを.system_stackに,.text_sharedセクションに配置するコードを.shared_codeに配置するように変更.
これに対応するためのサンプルプログラム,テストプログラムの変更.
ATT_SECのメモリリージョンのパラメータ(regname)を省略可能に
省略した場合に対応するように生成スクリプトを変更.
この変更を活用するようにテストプログラムを変更.
拡張パッケージの追加
動的生成機能拡張パッケージを追加.
オーバランハンドラ機能拡張パッケージを追加.
非TECS版システムサービスを追加.
SILのメモリ空間同期書込み関数の新設
sil.hに標準のメモリ空間同期書込み関数を追加.
各ターゲット依存部(またはコア依存部)に,TOPPERS_SIL_WRITE_SYNCの定義を追加.
コンフィギュレータの仕様変更
条件ディレクティブにより,有効とするC言語プリプロセッサのディレクティブを選択できるようにした.
文字列パラメータにマクロを記述できるように拡張.
ARMコア依存部,チップ依存部,ターゲット依存部の拡張・仕様変更
FPUサポートを追加.
Zynq7000向けチップ依存部とZybo向けターゲット依存部を追加.
ターゲット依存のメモリオブジェクトアクセス属性の定義を追加.
MMUの設定で,スタック領域はSビット(共有)を立てないように変更.
MMUの設定で,非共有のデバイス領域をサポート.
動的生成機能拡張パッケージで,acre_tskでユーザタスクを生成する際に設定するユーザスタック領域の先頭番地とサイズを,8の倍数で良いことに変更.
タイマドライバシミュレータの追加
タイマドライバシミュレータ(arch/simtimer)を追加.
CT11MPcore+タイマドライバシミュレータ用のターゲットを追加.
その他の機能拡張
コンフィギュレーションスクリプト(configure.rb)に-Bオプションを追加.
スケジューリング処理の不具合の修正
時間パーティショニングを使わない場合に,カーネルドメインに属するタスクが,優先度によらずに優先して実行される不具合を修正.
タスクの優先度変更時に,ディスパッチされない場合がある不具合を修正.
get_didの不具合の修正
実行状態のタスクがない場合に対応できるように修正.
高分解能タイマ割込みの設定漏れの不具合の修正
タイムイベントの設定後に,高分解能タイマ割込みの発生タイミングを設定しなければならない状況で,tmevtb_registerを呼んでいた不具合を修正.
ソフトウェア割込みでSYSTIM型を正しく渡せない不具合の修正
set_tim(パラメータが1つで,SYSTIM型)をソフトウェア割込みで呼び出した場合に,パラメータが正しく渡せるように,ターゲット非依存部を修正.
ARMコア依存部を,この修正に対応させた.
ref_tskの不具合の修正
二重待ち状態の時に,tskwaitとwobjidが正しく返らない不具合を修正.
prb_memとE_MACVエラーのチェックの不具合の修正
ユーザスタック領域をタスク毎に保護しない場合に,同じ保護ドメインに属する他のタスクのユーザスタック領域がアクセスできないと判定される不具合を修正.
DEF_EXCのエラーチェックの不具合の修正
CPU例外ハンドラ番号としては有効だが,DEF_EXCで登録できないものをエラーとして扱えていなかった不具合を修正.
adj_timで高分解能タイマを無駄に設定する問題の修正
adj_timにおいて,is_signal_timeの場合はset_hrt_eventを呼ばないように修正.
CRE_ALMのエラーチェックの不具合の修正
アラーム通知属性としてTA_STAを設定できる(設定してもエラーにならない)不具合を修正.
通知機能に関するエラーチェックの修正
チェックパスにおいて,オブジェクトIDのエラーを検出した場合に,アクセス権チェックのコードでコンフィギュレータが落ちる不具合を修正.
エラーメッセージの修正.
シリアルインタフェースドライバの不具合修正
FC_START受信時にコールバックを許可していなかった不具合を修正.
ARMコア依存部,チップ依存部,ターゲット依存部の不具合の修正
ret_extsvcのラベルの位置を修正.
割込みコントローラのアクセス後に,メモリバリアが抜けていた不具合を修正.start_dispatchにも,メモリバリアを追加.
パラメータが5つのサービスコール呼出しコード(CAL_SVC_5M)の不具合の修正.
MPCore依存部で,TCYC_HRTCNTの定義を解除している不具合を修正.
call_exit_kernelで,非タスクコンテキストに設定(excpt_nest_countを1に設定)するように修正.
RZ/A1チップ依存部で,SIOドライバの終了処理ルーチンで,シリアルポートのFIFOが空になるのを待つように修正.
その他の不具合修正
ATT_REGとATT_MEMのエラーチェックの不具合を修正.
kernel.hにおけるimrot_rdqのマクロ定義を修正.
LOG_GET_DID_LEAVEマクロのパラメータを修正.
レッドゾーン方式を,メモリリージョン毎に適用するように修正.
sample/Makefile中のバナー表示の依存関係記述の修正.
コンフィギュレーションスクリプト(configure.rb)のオプションの処理を修正.
システム周期切換え処理,タイムウィンドウ切換え処理の改善
タイムウィンドウ切換え処理を,割込みによって要求せず,直接呼び出すように変更.これに伴い,タイムウィンドウタイマ割込みと高分解能タイマ割込みを同じ優先度にすることに.
ディスパッチ保留状態で呼び出されたchg_somで,システム周期停止モードから他のモードに変更する際にも,システム周期切換えのペンディングの仕組みを使用するように変更.
初期化ルーチンと終了処理ルーチンの処理方法の変更
コンフィギュレータで,初期化ルーチンと終了処理ルーチンを呼び出す関数に代えて,それらの数とテーブルを生成し,それを順に呼び出すように変更.
get_tidでCPUロック状態にしないように変更
リンカスクリプトの生成方法の変更
パス3の生成スクリプトではcfg3_out.ldを,パス4の生成スクリプトではldscript.ldを,必ず生成することに.
Makefileで,sedを使ってcfg3_out.ldとldscript.ldを生成する処理を削除(環境によっては,sedが使えない場合がある).
ターゲット依存部に,ターゲット依存のリンカスクリプトを生成するための生成スクリプトを設け,各パスの生成スクリプトから呼び出すように変更.
生成するリンカスクリプトの変更(GNU開発環境)
ATT_MODされないオブジェクトモジュールの標準のセクションを,無所属の末尾にリンクするのをやめる("*"をリンクする記述を削除).
コンパイラが必ず使うライブラリ(GCCでは,libgcc.a)のために,$TARGET_LIBSにリストアップされたオブジェクトモジュールの標準のセクションを,無所属の末尾にリンクする.
ライブラリ中のどの関数をリンクするかを決定するために,リンカスクリプトの先頭に,実際には存在しないセクションをリンクする記述を生成する.
ATT_MOD/ATT_SECで登録されなかったセクションを捨てる記述を生成する(これによりエラーが検出される).
サンプルプログラムとテストプログラムのシステムコンフィギュレーションファイルに,標準のライブラリを登録するATT_MODを追加.
コンフィギュレータの変更
GenerateIncludes(インクルードディレクティブの生成)を新設.IncludeFilesを廃止.
rubyの警告が出ないように修正.-wオプションを付与.
生成スクリプトの変更(クラスに対応する場合の修正を少なくするためなど)
$cfgData[:CRE_DOM]を$domDataに変更.
標準メモリリージョンに関するデータを,$standardMemregに入れるように変更.
保護ドメイン共通の標準メモリリージョンに関するデータを$commonMemregに入れ,$commonStdromを廃止.
静的APIのパラメータ名を変更.これにあわせて,$cfgDataと$memObj中のパラメータ名を変更.
タイムウィンドウに関する処理方法を改善.
保護ドメインの囲みに関する処理方法を変更.
チェックパスで,非タスクコンテキスト用のスタック領域に関するチェック方法を変更.
rubyの警告が出ないように修正.
トレースログ記録のサンプルコードをターゲット非依存部に移動
トレースログ記録のサンプルコードを組み込むための記述を,ターゲット非依存部に移動.
低レベル出力をSIOポートから出力するためのコンポーネントを用意
tPutLogSIOPort.cdl,tPutLogSIOPort.cを新設.
それを使用するように各ターゲット依存部を変更.
簡易SIOドライバの改善
オープン済みフラグの名称をopenedに統一.
終了処理において,SIOポートをクローズするように変更.
SIOポートの二重にオープンしないように変更(統一).
SIOポートのクローズは,オープンした時のみ行うように変更.
SIOポートのクローズ時に,オープン済みフラグをクリアしていなかった問題を修正.
システムサービスとライブラリの実装の改善
実行時間分布集計サービスの各サービスコールの返値の型をERに変更.
システムログ機能とシステムログタスクの無駄な処理の削除.
syslog_printの中で改行を出力するように変更.
ARMコア依存部,チップ依存部,ターゲット依存部の変更
確保するページテーブル数の決定方法の改善.
ARMv5以降では,blx命令を使用するように変更.
チップ依存部としてのMPCore依存部(arch/arm_gcc/mpcore)を削除し,ARMコア依存部(arch/arm_gcc/common)にそれに対応するファイルを追加.MPCore依存部を使用するターゲット依存部を,これに対応させる.
TCYC_HRTCNT,TSTEP_HRTCNT,TMAX_TWDTIM,TMAX_OVRTIMの定義を,ターゲット依存部に置くように統一.
ターゲット依存部のSIOドライバのコンポーネントを,可能であればチップ依存部に移動.
簡易SIOドライバの初期化処理の改善.
MPCore依存部のタイマモジュールで,高分解能タイマ割込みの要求方法を変更.スプリアス割込み対策を追加.
GIC依存部で,SGIの割込み要求禁止フラグが操作できない場合に対応.
CT11MPcore向けのターゲット依存部のタイマモジュールで,オーバランタイマについても,QEMUで実行している場合には,ロードレジスタに0を設定しないように修正.
CT11MPcore向けのターゲット依存部のサンプルプログラム向けの定義で,QEMUで実行している場合には,MEASURE_TWICEを定義するように変更.
RZ/A1チップ依存部から,MPCore依存部を使うように変更.
RZ/A1向けのアーキテクチャ依存部を,オーバランハンドラ機能拡張パッケージに対応させた(ただし,タイマが足りないため,時間パーティショニングと同時に使用することはできない).
RZ/A1チップ依存部で,シリアルポートの設定をターゲット依存部で上書きできるように変更.
ダミーターゲット依存部の変更
svc_table.oがリンクされるように,svc_entryのダミー定義を追加.
その他の変更
make_wait,wait_wait_tmout,wobj_make_wait,wobj_make_wait_tmoutに,タスク状態を渡すパラメータ(tstat)を追加し,タスク状態の設定をこれらの関数内で行うように変更.
request_dispatchをrequest_dispatch_retintにリネーム.
signal_timeで,タイムイベントを1つも処理しなかった場合には,システムログ機能にメッセージを出すように変更.
task.trbに,タスク毎のターゲット依存の処理を追加する仕組み(TargetTaskPrepare)を追加.
interrupt.trbとexception.trbに,ターゲット依存のエラーチェックを行う仕組み(TargetCheckCfgInt,TargetCheckDefInh,TargetCheckCreIsr,TargetCheckDefExc)を追加.
タイムイベントヒープを保護ドメイン毎に別の変数とするよう変更.
kernel_sym.defに,TARGET_MEMATR_SSTACKを追加.
並列makeに対応できるように,sample/Makefileを修正.
中間オブジェクトファイルを置くディレクトリを変更できるように変更.
テスト実行スクリプト(testexec.rb)を改良.
コンフィギュレータのエラーメッセージの変更.
テストプログラムの追加
サービスコール呼出しに関するテスト(test_calsvc)を追加.
ドメイン間のスケジューリングに関するテスト(1)(test_sched1)を追加.
強制待ち状態に関するテスト(1)(test_suspend1)を追加.
時間パーティショニングに関するテスト(5)(test_tprot5)を追加.
タイムウィンドウ通知に関するテスト(test_twdnfy)を追加.
タイムウィンドウ管理機能のテスト(1)(simt_twd1)を追加.
テストプログラムの変更
高分解能タイマテスト用のテストプログラム(hrt_systim?)を,タイマドライバシミュレータ用のテストプログラム(simt_systim?)に入れ換え.gentest.rbを,それに対応できるように修正.
perf4.cの周期ハンドラ中の不要な変数定義を削除.
test_raster1.c中の待ち時間を変更.
test_tprot1でget_didもテストするように変更.
test_tprot3のテスト方法を改善.
test_twdnfyのテストを改善.
サンプルプログラムの変更
プロセッサ時間を消費するためのループの中で,volatile変数を読み出すように変更.プロセッサ時間の消費を独立した関数に.
PREPARE_RETURN_CPUEXCを使うのをやめる(使い方が間違っていた).
コードとコメントのブラッシュアップ.
出力メッセージの修正.
性能評価プログラムの修正
サービスコールからエラーが返った場合に,プログラムを停止させるように修正.
ドキュメントの充実,コメントの修正
バージョン番号の更新
カーネルとカーネル仕様のバージョン番号を更新.
Newsletterのバックナンバーは
こちら
Tweets by ToppersJP