Arm® Cortex®-M33 ソフトウェア開発トレーニングコース(オンライン)
- 日程:2024年3月21日(木) 9:00~17:00、2024年3月22日(金) 13:00~18:00
(新たにArm®v8-Mメモリモデル・メモリ保護・同期化を加え、1.5日のコースになりました)
※進行状況により終了時間は少し変動の可能性があります
コースの概要
本コースは、Arm®v8-M MainlineアーキテクチャをベースとするArm® Cortex®-M33で動作するソフトウェアを開発するエンジニア向けに設計されています。
Arm® Cortex®-M33の機能の特徴をはじめ、Arm®v8-Mアーキテクチャ概要、例外処理、同期制御、メモリシステムアーキテクチャに加えArm®v8-Mの特徴とも言えるセキュリティ環境について学習します。
このコースは1.5日間(1日目:終日、2日目:午後)での開催となっています。
受講対象者
- Arm® Cortex®-M33コア向けの組込みソフトウェア開発時に必要になる知識を習得したいソフトウェアエンジニア
- マイコンについて基礎的な理解があること
- Cプログラミングについて知識があること
- 組込みシステムのソフトウェアに関する基礎的な知識があること
オンライン開催にあたり
- Web会議サービス(Zoom)で開催します。
- ブラウザでのご参加は「Google Chrome」のみ対応しています。
※Google Chromeの使用ができない場合は、Zoomアプリのインストールが必要になります。
※Zoomのアカウントの取得は必須ではございません。
お申し込み方法
受付終了:2024年3月13日(水)18:00まで
受講料:80,000円(受講者1名様/税抜き)
※同業者様等のお申し込みについてはお断りする場合もございます。
お支払方法
請求書はお申し込みいただいた講座の開催が確定した後、講座の開催月にお申込書に記載されたお申込者様宛にお送りいたします。
請求書に記載される期日(請求書の発行月末締め翌月末振込み)に受講料を弊社指定銀行へお振込ください。
(振込手数料は振込者がご負担下さい。)
支払い処理について上記の方法以外をご希望の場合、 Arm®トレーニングセンタ までご連絡下さい。ご相談に応じます。
お問い合わせ先
Arm®トレーニングセンタ
TEL : 03-6756-9405
E-mail : arm_training@dts-insight.co.jp
コース内容
1 Arm® Cortex®-M33の概要
- Cortex®-M33プロセッサ / アーキテクチャ機能とプログラマーズモデル / プロセッサコア / Arm®v8-Mプログラマーズモデルのレジスタビュー / 操作と実行のモード / メモリマップ/バスマスタインターフェイス / コプロセッサのエンコーディング空間 / 外部コプロセッサインターフェイス / CDE/FPCDE命令 / 割り込みと例外 / メモリ保護 / セキュリティ属性 / 電力管理 / 低電力機能 / システムタイマ / 浮動小数点ユニット / デバッグ / トレース / コンフィギュレーション:合成と融合性 / RTLコンフィギュレーション / インテグレーションの例 / Cortex®-M33ドキュメンテーション
2 Arm®v8-M Mainlineプログラマーズモデル
- 2.1 イントロダクション
Arm®v8-Mプロファイルの概要 - 2.2 データタイプ
データタイプ - 2.3 コアレジスタ
Arm®v8-M Mainlineレジスタ / スタックポインタ(SP) / リンクレジスタ(LR) / プログラムカウンタ(PC) / Program Status Register / CONTROLレジスタ / スタックポインタリミットレジスタ / その他の特殊用途レジスタ - 2.4 モード、特権、スタック
特権実行 / スタック / モードの概要 - 2.5 例外
例外処理 - 2.6 命令セットの概要
命令セットサポート / Armv8-M命令セット / 命令セット例 - 2.7 プログラミング標準規格
Arm Procedure Call Standard / Cortex Microcontroller Software Interface Standard / CMSIS-Coreの概要 / CMSIS-Coreの例
3 Arm®v8-M Mainline例外ハンドリング
- 3.1 イントロダクション
概要 / マイクロコード化された割り込みメカニズム / 割り込みのオーバーヘッド / セキュリティ拡張-TrustZone for Arm®v8-M - 3.2 例外モデル
例外タイプ / プロセッサモードの使用例 / 外部割込み / プリエンプション / 例外ハンドリングの例 / 例外モデル / 例外のプロパティ / Arm®v8-M Mainlineのベクタテーブル / Vector Table Offset Register(VTOR) / リセット動作 / 例外動作 / 例外優先度の概要 / 例外の状態
3.2.1 例外エントリとリターンの動作
(例外エントリの動作 / 例外エントリ時のスタック / RETPSR / ReturnAddressの値 / 例外からのリターン / EXC_RETURN / NMI例外エントリの例 / NMI例外リターンの例 / ネストの例 / テイルチェインの例 / 後着の例 / 状態復元中の例外)
3.2.2 優先度付けと制御
(例外優先度と優先度の引き上げ / 優先度引き上げの例-PRIMASK / 特殊用途のマスクレジスタ / 優先度引き上げ命令 / Arm®v8-M Mainline優先度グループ化 / グループ優先度 / サブ優先度の選択 / 割り込み制御とステータスビット / 割り込みイネーブルレジスタ / 割り込みペンディングレジスタ / 割り込みアクティブレジスタ / 割り込み優先度レジスタ)
3.2.3 割り込み感度
(割り込み感度 / パルス割り込み-1パルス / パルス割り込み-複数パルス / レベル割り込み / 同一割り込みの再ペンディング) - 3.3 ベクタテーブルの記述と割り込みハンドラ
CMSIS-CORE:ベクタテーブル / 割り込みハンドラの記述 / 割り込みの管理 - 3.4 内部例外とRTOSサポート
内部例外 / Supervisor Call(SVC) / SVCハンドラ / Pended system call(PendSV) / 優先度エスカレーション / 内部割込みレジスタ - 3.5 フォールト例外
Arm®v8-Mのフォールト例外 / フォールトエスカレーション / フォールトのハンドリング / ロックアップ状態 / ロックアップ状態の動作 / ロックアップ状態からの復帰 / 同期例外 / 非同期例外
4 Arm®v8-M 同期化
- 4.1 同期化とセマフォの概要
アトミック性の要求 / アトミック操作の競合 / クリティカルセクション / シンプルなロックの実装 - 4.2 排他アクセス
効果的なアトミック操作 / LDREX命令とSTREX命令 / lock()の例 / unlock()の例 / プログラムはスマートでなければならない / マルチスレッドミューテックスの例 / 非コヒーレントなマルチプロセッサ / メモリ属性 / 共有可能メモリのコンフィギュレーション / コンテキストスイッチ / 排他予約単位 / 例1: マルチプロセッサミューテックス / 例2: マルチプロセッサミューテックス - 4.3 メモリのオーダリング
ウィークリーオーダーメモリと相互排他 / DMBを使用したオーダリング / LDAEX/STLEXを使用した排他アクセス
5 Arm®v8-M Mainline メモリモデル
- 5.1 イントロダクション
イントロダクション - 5.2 メモリアドレス空間
システムアドレスマップ / メモリセグメント / システムセグメント / Private Peripheral Bus (PPB) / System Control Space (SCS) / System Control Block (SCB) / SCB レジスタの概要 / SCB レジスタ - キャッシュとコプロセッサ - 5.3 メモリタイプと属性
メモリタイプ / ノーマルメモリ / ノーマルメモリ - 共有属性/デバイスメモリ / デバイスアクセスのオーダリング / デバイスメモリの強弱 / アドレスマップの概要 - 5.4 エンディアン
エンディアン / エンディアン設定の影響 - 5.5 バリア
メモリバリア命令 / Data Memory Barrier (DMB) / Data Synchronization Barrier (DSB) / Instruction Synchronization Barrier (ISB) / 例 1: メモリのリマップ / 例 2: 自己修正コード / 例 3: CONTROL レジスタ / 例 4 & 5: ベクタテーブル / 例 6: MPU プログラミング / “一方通行”のバリア / コンパイラバリア / メモリバリアのさらなる用途
6 Arm®v8-M メモリ保護
- 動機:なぜメモリ保護が必要か? / メモリ保護とセキュリティ属性 / デフォルトシステムアドレスマップ / Memory Protection Unit / Armv8-M MPU のArmv7-M とArmv6-M に対する互換性 / メモリリージョンの概要 / MPU レジスタ / MPU Control Register - MPU_CTRL / MPU Region Base Address Register / MPU Memory Attribute Indirection Register 0/1 / MPU Region Limit Address Register / MPU の設定 / リージョンのプログラミング / MemManage フォールト (Armv8-M Mainline のみ)
7 Arm®v8-M Mainlineセキュリティ拡張
- 7.1 概要
学習の目標 / Arm® TrustZone テクノロジ-セキュリティ基盤 / IoT はどこででも使われるようになるでしょう / TrustZone for Armv8-M の概要 / セキュリティ状態間での呼び出し / 汎用レジスタのバンク化 / 特殊用途レジスタのバンク化 - 7.2 メモリコンフィギュレーション
メモリのセキュリティ / セキュアメモリのルール / メモリセキュリティの決定 / Memory Protection Unit / SCS のセキュアビュー / SCS の非セキュアビュー / SAU レジスタ / ブートセキュリティマップ-コンフィギュレーションの例 / ランタイムセキュリティマップのコンフィギュレーションの例 / SAU 領域のコンフィギュレーション / SAU の有効化 / CMSIS 使用時のSAU コンフィギュレーション - 7.3 関数呼び出しとツールチェインサポート
セキュアと非セキュア間の分岐 / 分岐命令を使用した関数呼び出し / Arm C Language Extensions (ACLE) / セキュアコードからの非セキュアコード呼び出し / 非セキュアコードからのセキュアコード呼び出し / Arm® Compiler 6 によるインポートライブラリの作成 / インポートライブラリの使用 / セキュアゲートウェイべニア / Arm® Compiler 6 のNSC べニア / TT 命令 / ソフトウェアによるセキュリティ状態の変更 - 7.4 例外
割り込みと例外 / 例外優先度の概要 / システムハンドラの優先度 / セキュア例外の優先度付け / NVIC の設定 / Arm®v7-M での例外 / EXC_RETURN / 例外の受け付け / セキュア→非セキュアの例外 / セキュアおよび非キュア例外のチェイン / スタックフレームのレイアウト (FP なし) / コンテキストスイッチ後のレジスタ値 (FP なし) / Integrity signature / 浮動小数点拡張を伴うスタックフレームのレイアウト / セキュアスタックの初期化