本書はTX03 M367 IoT-Engine向けのμT-Kernel3.0の実装仕様を記す。 対象は、トロンフォーラムから公開されているμT-Kernel 3.0(V3.00.07)のうち、TX03 M367 IoT-Engine向けの実装部分である。 ハードウェアに依存しない共通の実装仕様は「μT-Kernel3.0共通実装仕様書」を参照、ARMv7mコアに共通の仕様は「μT-Kernel3.0 ARMv7-M向け実装仕様書」を参照のこと。
以降、単にOSと称する場合はμT-Kenrel3.0を示し、本実装と称する場合、前述のソースコードの実装を示す。
実装対象のハードウェアは以下の通りである。
分類 | 名称 | 備考 |
---|---|---|
実機 | TX03 M367 IoT-Engine | UCテクノロジー製 |
搭載マイコン | TX03シリーズ M360グループ TMPM367FDFG |
東芝デバイス&ストレージ製 |
TX03 M367 IoT-Engineのターゲット名および派生する識別名は以下とする。
分類 | 名称 | 対象 |
---|---|---|
ターゲット名 | _IOTE_M367_ | |
対象システム | IOTE_M367 | TX03 M367 IoT-Engine |
対象CPU | CPU_TMPM367FDFG | TMPM367FDFG |
対象CPUアーキテクチャ | CPU_CORE_ARMV7M | ARMv7-M |
対象CPUコア | CPU_CORE_ACM3 | ARM Cortex-M3コア |
識別名は以下のファイルで定義される。
include/sys/sysdepend/iote_m367/machine.h
以下に関連するドキュメントを記す。
分類 | 名称 | 発行 |
---|---|---|
OS | μT-Kernel 3.0仕様書(Ver.3.00.01) TEF020-S004-03.00.01 |
トロンフォーラム |
OS | μT-Kernel3.0共通実装仕様書(Ver.2.00.00) TEF033-W002-2304xx |
トロンフォーラム |
T-Monitor | T-Monitor仕様書 TEF020-S002-01.00.01 |
トロンフォーラム |
デバイスドライバ | μT-Kernel 3.0 デバイスドライバ説明書(Ver.1.00.05) TEF033-W007-221007 |
トロンフォーラム |
実機 | UCT TX03 M367 IoT-Engine取扱説明書 | UCテクノロジー |
搭載マイコン | TMPM367FDFGデーターシート | 東芝デバイス&ストレージ |
機種依存定義sysdependディレクトリ下の本実装のディレクトリ構成を以下に示す。名称に(*)の点いたディレクトリが本実装の対象である。
─ sysdepend ハードウェア依存部
├ iote_m367 TX03 M367 Iot-Engine依存部 (*)
├ :
├ <ターゲットn> ターゲットn 依存部
└ cpu CPU依存部
├ tx03_m367 TX03 M367マイコン依存部 (*)
├ :
└ <CPUn> CPUn依存部
└ core コア依存部
├ armv7m ARMv7-Mコア依存部
├ :
└ <core n> コアn依存部
「ARMv7-Mコア依存部」は、ARMv7-Mコアに共通するコードであり、他のARMv7-Mコアを有するマイコンと共通である。 「TX03 M367マイコン依存部」は、前述のコア依存部以外の本マイコンに固有のコードである。 「TX03 M367 IoT-Engine依存部」は、前述のコア依存部およびマイコン依存部以外のTX03 M367 IoT-Enginのハードウェアに固有のコードである。
実装対象のマイコンの基本的な仕様を以下に記す。
項目 | 内容 |
---|---|
CPUコア | ARM Cortex-M3 |
ROM | 512KB(内蔵フラッシュROM) |
RAM | 128KB(内蔵RAM) |
ARMv7-M実装仕様書を参照のこと。
ARMv7-M実装仕様書を参照のこと。
省電力機能はサポートしていない。プロファイルTK_SUPPORT_LOWPOWERはFALSEである。よって、マイコンの低消費電力モードに対応する機能は持たない。
省電力機能のAPI(low_pow、off_pow)は、/kernel/sysdepend/iote_m367/power_save.cに空関数として記述されている。なお、本関数に適切な省電力処理を記述し、プロファイルTK_SUPPORT_LOWPOWERをTRUEに指定すれば、OSの省電力機能(tk_set_pow)は使用可能となる。
本マイコンにはコプロセッサは存在しない。よって、プロファイルTK_SUPPORT_COPnはすべてFALSEである。 コプロセッサに関するAPI(tk_set_cpr, tk_get_cpr)は提供されない。
ARMv7-M実装仕様書を参照のこと。
マイコンのアドレス・マップは、基本的にARM Cortex-M3のデフォルト・アドレス・マップに従う。 以下にマイコンのアドレス・マップを記す。表の備考欄のCode、SRAM、Peripheralの各領域は、Cortex-M3のアドレス・マップの対応する領域を示す(詳細はマイコンの仕様書を参照のこと)。
アドレス (上段:開始 下段:終了) |
種別 | サイズ (KByte) |
備考 |
---|---|---|---|
0x0000 0000 0x0007 FFFF |
内蔵ROM | 512 | Code領域 内蔵フラッシュROM |
0x2000 0000 0x2000 07FF |
バックアップRAM | 2 | SRAM領域※1 |
0x2000 0800 0x2001 FFFF |
メインRAM | 126 | SRAM領域 |
0x4000 0000 0x41FF FFFF |
SFR(Special function Register) | Peripheral領域 | |
0x6000 0000 0x63FF FFFF |
外部バス領域 | ||
0xE000 0000 0xE00F FFFF |
CPU内レジスタ領域 |
※1 低消費電力モード時もデータ保持するメモリ領域
本実装では、ビットバンドによるメモリアクセスは行っていない。ユーザのプログラムからは可能である。
本実装では、メモリはマイコンの内蔵ROMおよびメインRAMを使用する。 OSを含む全てのプログラムのコードは内蔵ROMに配置され実行される。 例外ベクタテーブルは、リセット時は内蔵ROM上にあるが、OSの初期化処理にてRAM上に転送される。ただし、コンフィグレーションUSE_STATIC_IVTを1に設定することにより、RAM上への再配置を禁止することができる。再配置を禁止した場合、APIによる割込みハンドラの登録は不可となる。初期値は無効(0)である。
以下に内蔵ROMおよびメインRAMのメモリマップを示す。表中でアドレスに「ー」が記載された箇所はデータのサイズによりC言語の処理系にてアドレスが決定され、OS内ではアドレスの指定は行っていない。
(1) 内蔵ROMのメモリマップ
アドレス (上段:開始 下段:終了) |
種別 | 内容 |
---|---|---|
0x0000 0000 ー |
例外ベクタテーブル | 例外や割込みのベクタテーブル リセット時のみ有効 |
ー ー |
プログラムコード | プログラムコードが配置される領域 |
ー ー |
定数データ | C言語の定数データなどが配置される領域 |
(2) メインRAMのメモリマップ
アドレス (上段:開始 下段:終了) |
種別 | 内容 |
---|---|---|
0x2000 0800 ー |
例外ベクタテーブル | 例外や割込みのベクタテーブル OSの初期化後に有効 |
ー ー |
プログラムデータ | C言語の変数等が配置される領域 |
ー ー |
OS管理領域 | OS内部の動的メモリ管理の領域 |
ー 0x2001 FFFF |
例外スタック領域 | 初期化スタックとして、初期化処理時のみに使用 |
ARMv7-M向け実装仕様書を参照のこと。
ARMv7-M向け実装仕様書を参照のこと。
ARMv7-M向け実装仕様書を参照のこと。
本マイコンのハードウェアに関わる割込み関連の定義を以下に記す。項目はARMv7-Mにおいて共通である。ARMv7-M向け実装仕様書を参照のこと。
名称 | 値 | 意味 |
---|---|---|
N_INTVEC | 128 | 外部割込み数 |
N_SYSVEC | 16 | 例外数 |
INTPRI_BITWIDTH | 3 | 割込み優先度の幅(ビット数) |
INTPRI_MAX_EXTINT_PRI | 1 | 外部割込みの最高優先度 |
INTPRI_SVC | 0 | SVC例外の優先度 |
INTPRI_SYSTICK | 1 | システムタイマ例外の優先度 |
INTPRI_PENDSV | 7 | PendSV例外の優先度 |
以上の定義は以下のファイルで記述される。
/include/sys/sysdepend/cpu/tx03_m367/sysdef.h
本マイコンは、前述の各種例外に対応する例外ハンドラのアドレスを設定したベクタテーブルを有する。 本実装では、リセット時のベクタテーブルは、以下のファイルにvector_tblとしてROM上に定義される。
kernel/sysdepend/cpu/tx03_m367/vector_tbl.c
OSの初期化処理において、上記のROM上のベクタテーブルはRAM上にコピーされ、以降そちらが使用される。このRAM上のベクターテーブルはARMv7-Mにおいて共通である。ARMv7-M向け実装仕様書を参照のこと。 ただし、コンフィグレーションUSE_STATIC_IVTが1に設定されている場合は、ROM上のベクターテーブルが使用され続ける。USE_STATIC_IVTの初期値は0である。
ARMv7-Mに共通する事項はARMv7-M向け実装仕様書を参照のこと。 本マイコンは、割込み優先度を3bit(0~7)の8段階に設定できる(優先度の数字の小さい方が優先度は高い)。 外部割込みは優先度0~7が割り当て可能である。ただし、優先度0はOSからマスク不可のため、使用は許されない。また、優先度1と7はOS内の割込み処理で使用しているため、同様に使用は許されない。よって、実際に割当て可能な外部割込みの優先度は、2~6の5段階とする。
次の例外は、ハードウェアの仕様により優先度0より高い優先度に固定されている。
OSの内部で使用する割込みには、以下のようにマイコンの割込みまたは例外が割り当てられる。詳細はARMv7-M向け実装仕様書を参照のこと。
種類 | 割込み番号 | 割り当てられる割込み・例外 | 優先度 |
---|---|---|---|
システムタイマ割込み | 15 | SysTick | 1 |
ディスパッチ要求 | 14 | PendSV | 7 |
強制ディスパッチ要求 | 14 | PendSV | 7 |
各割込みの優先度は以下のファイルで定義される。
/include/sys/sysdepend/cpu/tx03_m367/sysdef.h ``` #define INTPRI_SYSTICK 1 // システムタイマ割込み #define INTPRI_PENDSV 7 // PendSV ```
ARMv7-M向け実装仕様書を参照のこと。
最高外部割込み優先度は以下のファイルで定義される。詳細はARMv7-M向け実装仕様書を参照のこと。
/include/sys/sysdepend/cpu/tx03_m367/sysdef.h ``` #define INTPRI_MAX_EXTINT_PRI 1 // 最高外部割込み優先度 ```
ARMv7-M向け実装仕様書を参照のこと。
μT-Kernel/SMの割込み管理機能は、CPUの割込み管理機能および割込みコントローラ(NVIC)の制御を行う。
CPU割込み制御 ARMv7-M向け実装仕様書を参照のこと。
割込みコントローラ制御 ARMv7-Mの標準割込みコントローラNVICの制御を行う。また「スタンバイ解除要因となる割込み」については、本マイコン内蔵のクロックジェネレータの制御も行う。 NVICについてはARMv7-Mの実装依存部で処理される。ARMv7-M向け実装仕様書を参照のこと。 クロックジェネレータの制御は、本マイコンの実装依存部で処理される。 以下に各機能の実装を記す。
① 割込みコントローラの割込み許可(EnableInt) 割込みコントローラ(NVIC)の割込みイネーブルセットレジスタ(ISER)を設定し、指定された割込みを許可する。同時に割込み優先度レジスタ(IPR)に指定された割込み優先度を設定する。
② 割込みコントローラの割込み禁止(DisableInt) 割込みコントローラ(NVIC)の割込みイネーブルクリアレジスタ(ICER)を設定し、指定された割込みを禁止する。
③ 割込み発生のクリア(ClearInt) 割込みコントローラ(NVIC)の割込み保留クリアレジスタ(ICPR)を設定し、指定された割込みが保留されていればクリアする。 また、スタンバイ解除要因となる割込みについては、クロックジェネレータの設定を行い、保持されている割込み要因をクリアする。
④ 割込みコントローラのEOI発行(EndOfInt) ARMv7-MではEOIの発行は不要である。よって、EOI発行(EndOfInt)は何も実行しないマクロとして定義される。
⑤ 割込み発生の検査(CheckInt) 割込み発生の検査(CheckInt)は、割込みコントローラ(NVIC)の割込み保留クリアレジスタ(ICPR)を参照することにより実現する。
⑥ 割込みモード設定(SetIntMode) クロックジェネレータに割込みのモードを設定する。指定可能な割込みは「スタンバイ解除要因となる割込み」のみである。 指定可能な割込みモードは以下のように定義される。ただし、割込みの種別により指定可能なモードが定められているので、マイコンのマニュアルを参照のこと。
#define IM_LEVEL 0x0002 /* Level trigger */
#define IM_EDGE 0x0000 /* Edge trigger */
#define IM_HI 0x0000 /* H level/Interrupt at rising edge */
#define IM_LOW 0x0001 /* L level/Interrupt at falling edge */
⑦ 割込みコントローラの割込みマスクレベル設定(SetCtrlIntLevel) 割込みコントローラ(NVIC)に本機能はないため、未実装である。
⑧ 割込みコントローラの割込みマスクレベル取得(GetCtrlIntLevel) 割込みコントローラ(NVIC)に本機能はないため、未実装である。
上記のAPIは以下のファイルに記述される。
lib/libtk/sysdepend/cpu/tx03_m367/int_m367.c
ARMv7-M向け実装仕様書を参照のこと。
ARMv7-M向け実装仕様書を参照のこと。
リセットハンドラはARMv7-M向け実装仕様書を参照のこと。 リセットハンドラから呼ばれるknl_startup_hw関数により対象システムに固有の処理が実行される。 knl_startup_hw関数は以下のファイルに定義される。
kernel/sysdepend/iote_m367/hw_setting.c
knl_startup_hw関数では以下の処理が実行される。ユーザは必要に応じてknl_startup_hw関数の内容を変更してよい。
(1) ウォッチドックタイマの無効化 ウォッチドックタイマは停止状態に設定している。
(2) CPUクロックの設定 CPUクロックの設定は以下のファイルのstartup_clock関数で行っている。
kernel/sysdepend/iote_m367/cpu_clock.c
本実装では以下の設定となる。
項目 | 内容 |
---|---|
PLL逓倍値設定 | 入力クロック12MHz 出力クロック72MHz(6逓倍) |
fperiph選択 | fgearを選択 |
プリスケーラクロック選択 | fperiphを選択 |
高速クロック(fc)のギア選択 | fc/2 |
SCOUT出力選択 | fsys/2 |
クロックの値はプログラム中で使用可能なように以下のファイルで定義されている。
include/sys/sysdepend/cpu/tx03_m367/sysdef.h
#define HISPEED_CLOCK_MHz 12
#define PLL_MODE_6X 6
#define CLOCK_fPLL (HISPEED_CLOCK_MHz * PLL_MODE_6X * 1000000)
#define CLOCK_fc (CLOCK_fPLL)
#define CLOCK_fgear (CLOCK_fc / 2)
#define CLOCK_fsys (CLOCK_fgear)
#define CLOCK_fperiph (CLOCK_fgear)
#define CLOCK_T0 (CLOCK_fperiph)
なお、クロックの初期設定は原則として変更してはならない。もし変更した場合は、OSのクロック制御やデバイスドライバの制御にも影響がある場合があるため、合わせてプログラムの変更を行わなくてはならない。
(3) I/O端子の設定 入出力ポートの各レジスタ(PxCR, PxFRy, PxPUPなど)を初期化し、各I/O端子の機能設定を行う。 設定はsetup_regsテーブルの内容に従い実行する。 setup_regsテーブルの要素は以下の構造体であり、レジスタのアドレスと設定値を示す。テーブルの内容を変更することにより、I/O端子の設定を変えることができる。
typedef struct {
UW addr; // レジスタのアドレス
UW data; // レジスタの設定値
} T_SETUP_REG;
初期値では以下の端子の機能が設定されている。
● コンフィギュレーションUSE_SDEV_DRVが無効(0)の場合
I/Oポート名 | 機能名 | 用途 |
---|---|---|
PA4 | RTS5 | デバッグ用シリアル入出力(T-Monitor) |
PA5 | RXD5 | 同上 |
PA6 | TXD5 | 同上 |
PA7 | CTS5 | 同上 |
● コンフィギュレーションUSE_SDEV_DRVが有効(1)の場合
I/Oポート名 | 機能名 | 用途 |
---|---|---|
PA4 | RTS5 | デバッグ用シリアル入出力(T-Monitor) |
PA5 | RXD5 | 同上 |
PA6 | TXD5 | 同上 |
PA7 | CTS5 | 同上 |
PF6 | SCL1 | デバイスドライバ(I2C) |
PF7 | SDA1 | 同上 |
PL1 | GPIO | 出力ポート |
OS初期化処理は共通部のmain関数で実行される。 main関数から以下の対象システムに依存する処理が実行される。
(1) デバイスの初期化 knl_init_device main関数より呼び出され、デバイスドライバの登録に先立ち、必要なハードウェアの初期化を行う。 デバイスの初期化は以下のファイルにknl_init_device関数として実装される。
kernel/sysdepend/iote_m367/devinit.c
なお、本実装ではknl_init_device関数内の処理は記述されてないので、ユーザは必要に応じてknl_init_device関数に処理を記述すること。
初期タスクの処理は共通部のinit_task_main関数で実行される。 init_task_main関数から以下の対象システムに依存する処理が実行される。
(1) デバイスの実行(knl_start_device) デバイスドライバの登録、実行を行う。本処理は以下のファイルにknl_start_device関数として定義される。
kernel/sysdepend/iote_m367/devinit.c
コンフィギュレーションUSE_SDEV_DRVが有効(1)の場合、以下の基本的なデバイスドライバが登録される。
デバイス名 | 機能 |
---|---|
serb | シリアル通信(UART5) |
iicb | I2C通信(SBI1) |
adca | A/Dコンバータ(ADC) |
コンフィギュレーションUSE_SDEV_DRVが無効(0)の場合、デバイスドライバの登録は行われない(初期値は無効(0))。
ユーザが使用するデバイスドライバを変更する場合は、必要に応じて上記の関数の処理を変更する必要がある。
終了処理と再起動処理は共通部のshutdown_system関数で実行される。shutdown_system関数からハードウェアに依存する処理が呼び出される。 対象ハードウェアに依存する処理のうち、ARMv7-Mコアに共通の処理はARMv7-M向け実装仕様書を参照のこと。
(1) デバイスの終了処理 knl_finish_device knl_start_deviceと対となるデバイスの終了処理を実行する。 knl_finish_device関数は以下のファイルに定義される。
kernel/sysdepend/iote_m367/devinit.c
なお、本実装ではknl_finish_device関数内の処理は記述されてないので、ユーザは必要に応じてknl_finish_device関数に処理を記述すること。
(2) ハードウェア停止処理(knl_shutdown_hw) ハードウェアをすべて停止し、マイコンを終了状態とする。本関数の処理でシステムは終了する。 knl_shutdown_hw関数は以下のファイルに定義される。
kernel/sysdepend/iote_m367/hw_setting.c
なお、本実装では割込みを無効とし無限ループを行っている。ユーザは必要に応じてknl_shutdown_hw関数の内容を変更してよい。
(2) ハードウェア再起動(knl_restart_hw) ハードウェアの再起動処理を行う。knl_restart_hw関数は以下のファイルに定義される。
kernel/sysdepend/iote_m367/hw_setting.c
なお、本実装では再起動には対応していないので、処理のひな型のみを記述している。knl_restart_hw関数はエラーを返して終了し、システムは終了するようになっている。ユーザは必要に応じて、knl_restart_hw関数に再起動処理を記述すること。
本マイコンに依存するタスクの仕様を以下に記す。ARMv7-M向け実装仕様書も参照のこと。
タスク属性のハードウェア依存仕様を以下に示す。
属性 | 可否 | 説明 |
---|---|---|
TA_COPn | × | 本マイコンはコプロセッサを持たない。 |
TA_FPU | × | 本マイコンはFPUを持たない。 |
ARMv7-M向け実装仕様書を参照のこと。
ARMv7-M向け実装仕様書を参照のこと。
ARMv7-M向け実装仕様書を参照のこと。
タイムイベントハンドラの実行中の割込みマスクレベルは、タイムイベントハンドラ割込みレベルTIMER_INTLEVELに設定される。TIMER_INTLEVELは、以下のファイルで定義される。
include/sys/sysdepend/cpu/tx03_m367/sysdef.h
本実装では初期値は以下のように0(すべての割込みを許可)が設定されている。
#define TIMER_INTLEVEL 0 //すべての割込みを許可
マイコン内蔵の16ビットタイマ(TMRB)を16ビットインターバルタイマモードで使用して8個の物理タイマが実装されている。 16ビットタイマTMRB0~TMRB7以下のように物理タイマ番号が1から割り当てられる。
物理タイマ番号 | 対応するタイマ | ビット幅 |
---|---|---|
1 | TMRB0 | 16 |
2 | TMRB1 | 16 |
3 | TMRB2 | 16 |
4 | TMRB3 | 16 |
5 | TMRB4 | 16 |
6 | TMRB5 | 16 |
7 | TMRB6 | 16 |
8 | TMRB7 | 16 |
TMRBは物理タイマ以外の用途にも使用可能である。その場合は物理タイマAPIを呼び出さなければよい(API StartPhysicalTimerにてTMRBは物理タイマに初期化される)。
物理タイマのクロック設定は、以下のファイルで定義される。
include/sys/sysdepend/cpu/tx03_m367/sysdef.h
#define TB0MOD_TBCLK (0x00000001) // Source clock = T1
#define TB1MOD_TBCLK (0x00000001) // Source clock = T1
#define TB2MOD_TBCLK (0x00000001) // Source clock = T1
#define TB3MOD_TBCLK (0x00000001) // Source clock = T1
#define TB4MOD_TBCLK (0x00000001) // Source clock = T1
#define TB5MOD_TBCLK (0x00000001) // Source clock = T1
#define TB6MOD_TBCLK (0x00000001) // Source clock = T1
#define TB7MOD_TBCLK (0x00000001) // Source clock = T1
この値は、TMRBのTBxMODレジスタのTBCLKビットに設定される。上記の設定を変更することにより、各物理タイマのクロックを変更できる。 本実装においてタイマの周波数はfc/4である。fcは72MHzなので18MHzとなる。
物理タイマはその内部処理において、各TMRBのコンペア一致/オーバーフロー割込み(INTTB)を使用する。
物理タイマ番号 | 対応する割込み | 割込み番号 |
---|---|---|
1 | INTTB0 | 75 |
2 | INTTB1 | 78 |
3 | INTTB2 | 81 |
4 | INTTB3 | 84 |
5 | INTTB4 | 87 |
6 | INTTB5 | 90 |
7 | INTTB6 | 93 |
8 | INTTB7 | 96 |
各割込みの優先度は以下のファイルに定義される。割込み優先度は必要に応じて変更可能である。
include/sys/sysdepend/cpu/tx03_m367/sysdef.h
#define INTPRI_TMRB0 5 // 物理タイマ1
#define INTPRI_TMRB1 5 // 物理タイマ2
#define INTPRI_TMRB2 5 // 物理タイマ3
#define INTPRI_TMRB3 5 // 物理タイマ4
#define INTPRI_TMRB4 5 // 物理タイマ5
#define INTPRI_TMRB5 5 // 物理タイマ6
#define INTPRI_TMRB6 5 // 物理タイマ7
#define INTPRI_TMRB7 5 // 物理タイマ8
T-Monitor互換ライブラリのAPIによるコンソール入出力の仕様を以下に示す。
項目 | 内容 |
---|---|
デバイス | 内蔵UART Channel 5 |
ボーレート | 115200bps |
データ形式 | data 8bit, stop 1bit, no parity |
版数 | 日付 | 内容 |
---|---|---|
2.00.00 | 2023.12.01 | ・内容・構成の全面見直し |
1.00.10 | 2022.10.14 | ・誤字修正 |
1.00.09 | 2022.10.07 | ・μT-Kernelおよび関連仕様書バージョン更新 ・5.1リセット処理 (2)ベクタテーブルの移動 誤記修正 (誤) USE_NOINIT (正)USE_STATIC_IVT |
1.00.08 | 2022.06.30 | ・5.2ハードウェアの初期化および終了処理 cpu_clock.cファイルのパス変更 |
1.00.07 | 2021.11.15 | ・1.4 関連ドキュメント バージョン番号等を更新 ・誤記修正 (正)RNG (誤)RING |
1.00.06 | 2021.03.31 | ・1.3 ターゲット名 ターゲット名「CPU_TMPM369FDFG」を実CPUと同じ「CPU_TMPM367FDFG」に変更 ・1.4 関連ドキュメント バージョン番号等を更新 ・4. 割込みおよび例外 説明の見直し 設定可能な優先度の誤記修正(正)優先度2~6 SetCpuIntLevelおよびGetCpuIntLevelについて、誤記修正(マスクレベル0指定時の動作)およびINTLEVEL_EI、INTLEVEL_DIに関する説明を追加 |
1.00.05 | 2020.12.09 | ・1.4 関連ドキュメント バージョン番号等を更新 ・1.5 ソースコード構成 コア依存部の変更等を記載 ・2.4 低消費電力モードと省電力機能 ファイル名の変更「power.c」→「power_save.c」 ・3.5 OS内の動的メモリ管理 説明追加 ・4.2 ベクタテーブル ファイルのパス(ディレクトリ)の変更 ・5.2 ハードウェアの初期化および終了処理 コンフィギュレーションUSE_SDEV_DRVによるハードウェアの初期化の説明を追加 ・5.3 デバイスドライバの実行および終了 コンフィギュレーションUSE_SDEV_DRVによるデバイスドライバの初期化の説明を追加 ・6 タスク および、7時間管理 「6.その他の実装仕様」から独立した章に変更 |
1.00.04 | 2020.10.21 | ・1.4 関連ドキュメント バージョン番号等を更新 ・4.4 OS内部で使用する割込み 使用していないSVC割込みの記述を削除 ・5.2ハードウェアの初期化および終了処理 ハードウェアの初期設定の処理について説明を追記 ・6.3.2 タイマの設定 物理タイマのクロック設定について説明を追記 |
1.00.03 | 2020.07.13 | ・4.4 OS内部で使用する割込み ディスパッチ要求と強制ディスパッチ要求を同一<の割込み(PendSV)を使用するように変更 ・4.6 4.6 μT-Kernel/SMの割込み管理機能 ユーザが使用できる割込み範囲を変更(2~5 → 2~6) ・6.3 物理タイマ機能 新規 |
1.00.02 | 2020.05.29 | ・1.4 関連ドキュメント バージョン番号等を更新・4.4 OS内部で使用する割込み 説明分の見直し |
1.00.01 | 2020.03.13 | ・1.4 関連ドキュメント 更新 ・3.3 OSのメモリマップ コンフィグレーションUSE_STATIC_IVTの説明を追加 ・4.5 μT-Kenrel/OSの割込み管理機能 「割込みハンドラの優先度」の説明を本来の「4.6 μT-Kernel/SMの割込み管理機能」に移動。また「割込みハンドラの優先度」を「割込みの優先度」に修正。 ・5.2 ハードウェアの初期化および終了処理 5.3 デバイスドライバの実行および終了 ハードウェアの周辺デバイスと、OSが管理するデバイスドライバが、デバイスという同一の名称で一緒に説明されていたので、節を分けるように修正。また、後者をデバイスと呼び前者はハードウェアと呼ぶこととした。 ・その他 全角、半角の文字統一など文章の体裁の修正 |
1.00.00 | 2019.12.11 | ・初版 |