Arm® Cortex®-M33 ソフトウェア開発トレーニングコース(オンライン)
- 日程:2024年12月19日(木) -12月20日(金)
(新たに「Cortex-M33 プロセッサコア」「Armv8-M 組込みソフトウェア開発」を加え、2日間のコースになりました)
- 時間:9:00~17:30 ※終了時間は進行状況により若干変動する可能性があります。
コースの概要
本コースは、Armv8-M MainlineアーキテクチャをベースとするCortex-M33で動作するソフトウェアを開発するエンジニア向けに設計されています。
Cortex-M33の機能の特徴をはじめ、Armv8-Mアーキテクチャ概要、メモリシステムアーキテクチャ、同期制御、例外処理と組込みソフトウェア作成時のポイントに加えArmv8-Mの特徴とも言えるセキュリティ環境について学習します。
このコースは2日間での開催となっています。
受講対象者
- Arm Cortex-M33コア向けの組込みソフトウェア開発時に必要になる知識を習得したいソフトウェアエンジニア
- マイコンについて基礎的な理解があること
- Cプログラミングについて知識があること
- 組込みシステムのソフトウェアに関する基礎的な知識があること
オンライン開催にあたり
- Web会議サービス(Zoom)で開催します。
- ブラウザでのご参加は「Google Chrome」のみ対応しています。
※Google Chromeの使用ができない場合は、Zoomアプリのインストールが必要になります。
※Zoomのアカウントの取得は必須ではございません。
お申し込み方法
受付終了:2024年12月10日(火)18:00まで
受講料:100,000円(受講者1名様/税抜き)
※同業者様等のお申し込みについてはお断りする場合もございます。
「Arm® Cortex®-M33 ソフトウェア開発トレーニングコース」
お支払方法
請求書はお申し込みいただいた講座の開催が確定した後、講座の開催月にお申込書に記載されたお申込者様宛にお送りいたします。
請求書に記載される期日(請求書の発行月末締め翌月末振込み)に受講料を弊社指定銀行へお振込ください。
(振込手数料は振込者がご負担下さい。)
支払い処理について上記の方法以外をご希望の場合、 Armトレーニング事務局 までご連絡下さい。ご相談に応じます。
お問い合わせ先
Armトレーニング事務局
TEL : 03-6756-9405
E-mail : arm_training@dts-insight.co.jp
コース内容
1 Cortex-M33の概要
- Cortex-M33プロセッサ / アーキテクチャ機能とプログラマーズモデル / プロセッサコア / Armv8-Mプログラマーズモデルのレジスタビュー / 操作と実行のモード / メモリマップ/バスマスタインターフェイス / コプロセッサのエンコーディング空間 / 外部コプロセッサインターフェイス / CDE/FPCDE命令 / 割り込みと例外 / メモリ保護 / セキュリティ属性 / 電力管理 / 低電力機能 / システムタイマ / 浮動小数点ユニット / デバッグ / トレース / コンフィギュレーション:合成と融合性 / RTLコンフィギュレーション / インテグレーションの例 / Cortex-M33ドキュメンテーション
2 Armv8-M Mainlineプログラマーズモデル
- 2.1 イントロダクション
Armv8-Mプロファイルの概要 - 2.2 データタイプ
データタイプ - 2.3 コアレジスタ
Armv8-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 Cortex-M33 プロセッサコア
- 3.1 Cortex-M33 プロセッサ
- 3.2 Cortex-M33 パイプラインのブロック図 / 概要
プロセッサパイプライン / コアの概要 - 3.3 Fetch, Decode/Execute, Complex Execute, Floating Point ステージ
Fetch ステージ / Decode eXecute ステージ / Complex eXecute ステージ / Floating point ステージ - 3.4 アンアラインドアクセスのペナルティ
アンアラインなロードおよびストアアクセス
4 Armv8-M Mainline メモリモデル
- 4.1 イントロダクション
イントロダクション - 4.2 メモリアドレス空間
システムアドレスマップ / メモリセグメント / システムセグメント / Private Peripheral Bus (PPB) / System Control Space (SCS) / System Control Block (SCB) / SCB レジスタの概要 / SCB レジスタ - キャッシュとコプロセッサ - 4.3 メモリタイプと属性
メモリタイプ / ノーマルメモリ / ノーマルメモリ - 共有属性/デバイスメモリ / デバイスアクセスのオーダリング / デバイスメモリの強弱 / アドレスマップの概要 - 4.4 エンディアン
エンディアン / エンディアン設定の影響 - 4.5 バリア
メモリバリア命令 / Data Memory Barrier (DMB) / Data Synchronization Barrier (DSB) / Instruction Synchronization Barrier (ISB) / 例 1: メモリのリマップ / 例 2: 自己修正コード / 例 3: CONTROL レジスタ / 例 4 & 5: ベクタテーブル / 例 6: MPU プログラミング / “一方通行”のバリア / コンパイラバリア / メモリバリアのさらなる用途
5 Armv8-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 のみ)
6 Armv8-M 同期化
- 6.1 同期化とセマフォの概要
アトミック性の要求 / アトミック操作の競合 / クリティカルセクション / シンプルなロックの実装 - 6.2 排他アクセス
効果的なアトミック操作 / LDREX命令とSTREX命令 / lock()の例 / unlock()の例 / プログラムはスマートでなければならない / マルチスレッドミューテックスの例 / 非コヒーレントなマルチプロセッサ / メモリ属性 / 共有可能メモリのコンフィギュレーション / コンテキストスイッチ / 排他予約単位 / 例1: マルチプロセッサミューテックス / 例2: マルチプロセッサミューテックス - 6.3 メモリのオーダリング
ウィークリーオーダーメモリと相互排他 / DMBを使用したオーダリング / LDAEX/STLEXを使用した排他アクセス
7 Armv8-M Mainline例外ハンドリング
- 7.1 イントロダクション
概要 / マイクロコード化された割り込みメカニズム / 割り込みのオーバーヘッド / セキュリティ拡張-TrustZone for Armv8-M - 7.2 例外モデル
例外タイプ / プロセッサモードの使用例 / 外部割込み / プリエンプション / 例外ハンドリングの例 / 例外モデル / 例外のプロパティ / Armv8-M Mainlineのベクタテーブル / Vector Table Offset Register(VTOR) / リセット動作 / 例外動作 / 例外優先度の概要 / 例外の状態
7.2.1 例外エントリとリターンの動作
(例外エントリの動作 / 例外エントリ時のスタック / RETPSR / ReturnAddressの値 / 例外からのリターン / EXC_RETURN / NMI例外エントリの例 / NMI例外リターンの例 / ネストの例 / テイルチェインの例 / 後着の例 / 状態復元中の例外)
7.2.2 優先度付けと制御
(例外優先度と優先度の引き上げ / 優先度引き上げの例-PRIMASK / 特殊用途のマスクレジスタ / 優先度引き上げ命令 / Armv8-M Mainline優先度グループ化 / グループ優先度 / サブ優先度の選択 / 割り込み制御とステータスビット / 割り込みイネーブルレジスタ / 割り込みペンディングレジスタ / 割り込みアクティブレジスタ / 割り込み優先度レジスタ)
7.2.3 割り込み感度
(割り込み感度 / パルス割り込み-1パルス / パルス割り込み-複数パルス / レベル割り込み / 同一割り込みの再ペンディング) - 7.3 ベクタテーブルの記述と割り込みハンドラ
CMSIS-CORE:ベクタテーブル / 割り込みハンドラの記述 / 割り込みの管理 - 7.4 内部例外とRTOSサポート
内部例外 / Supervisor Call(SVC) / SVCハンドラ / Pended system call(PendSV) / 優先度エスカレーション / 内部割込みレジスタ - 7.5 フォールト例外
Armv8-Mのフォールト例外 / フォールトエスカレーション / フォールトのハンドリング / ロックアップ状態 / ロックアップ状態の動作 / ロックアップ状態からの復帰 / 同期例外 / 非同期例外
8 Armv8-M 組込みソフトウェア開発
- 8.1 デフォルトのコンパイレーションツールの振る舞い
デフォルトメモリマップ / デフォルトC ライブラリ / デフォルトC ライブラリ初期化シーケンス - 8.2 システムのスタートアップ
リセットと初期化
8.2.1 取りうる初期化シーケンス(1) / CMSIS スタートアップと初期化 / CMSIS-CORE: スタートアップファイル / CMSIS-CORE: ベクタテーブル / CMSIS-CORE: 例外ハンドラ
8.2.2 C ライブラリの初期化
C ライブラリのスタートアップと初期化 - 8.3 イメージのメモリマップをデバイスに合わせる
カスタムメモリマップ
8.3.1 スキャッタローディング
スキャッタローディングの概要 / スキャッタローディング (単純な例) / スキャッタローディング記述ファイル / スキャッタファイルの例
8.3.2 リンカの配置ルール
リンカの配置ルール / スキャッタファイルでのオブジェクトの配置順 / ルートリージョン
8.3.3 スタックとヒープの管理
ランタイムメモリ管理 / ランタイムメモリモデル / スタックとヒープの設定 / 取りうる初期化シーケンス(2) / CMSIS-CORE: スタックとヒープの設定 / __user_setup_stackheap() のリターゲット
8.3.4 さらなるメモリマップの検討事項
Process Stack Pointer (PSP) のセットアップ / MPU の初期化 / 長分岐べニア - 8.4 スタートアップ初期化後の処理
拡張機能 / 取りうる初期化シーケンス(3) / スレッドモードの非特権への変更 - 8.5 C ライブラリをデバイスに合わせる
提供されるThumb C ライブラリ / C ライブラリのリターゲット / C ライブラリでのセミホスティングの回避 - 8.6 イメージのビルドとデバッグ
ROM イメージのデバッグ
9 Armv8-M Mainlineセキュリティ拡張
- 9.1 概要
学習の目標 / Arm TrustZone テクノロジ-セキュリティ基盤 / IoT はどこででも使われるようになるでしょう / TrustZone for Armv8-M の概要 / セキュリティ状態間での呼び出し / 汎用レジスタのバンク化 / 特殊用途レジスタのバンク化 - 9.2 メモリコンフィギュレーション
メモリのセキュリティ / セキュアメモリのルール / メモリセキュリティの決定 / Memory Protection Unit / SCS のセキュアビュー / SCS の非セキュアビュー / SAU レジスタ / ブートセキュリティマップ-コンフィギュレーションの例 / ランタイムセキュリティマップのコンフィギュレーションの例 / SAU 領域のコンフィギュレーション / SAU の有効化 / CMSIS 使用時のSAU コンフィギュレーション - 9.3 関数呼び出しとツールチェインサポート
セキュアと非セキュア間の分岐 / 分岐命令を使用した関数呼び出し / Arm C Language Extensions (ACLE) / セキュアコードからの非セキュアコード呼び出し / 非セキュアコードからのセキュアコード呼び出し / Arm Compiler 6 によるインポートライブラリの作成 / インポートライブラリの使用 / セキュアゲートウェイべニア / Arm Compiler 6 のNSC べニア / TT 命令 / ソフトウェアによるセキュリティ状態の変更 - 9.4 例外
割り込みと例外 / 例外優先度の概要 / システムハンドラの優先度 / セキュア例外の優先度付け / NVIC の設定 / Armv7-M での例外 / EXC_RETURN / 例外の受け付け / セキュア→非セキュアの例外 / セキュアおよび非キュア例外のチェイン / スタックフレームのレイアウト (FP なし) / コンテキストスイッチ後のレジスタ値 (FP なし) / Integrity signature / 浮動小数点拡張を伴うスタックフレームのレイアウト / セキュアスタックの初期化