Arm® Cortex®-M3/M4/M0 ソフトウェアトレーニングコース(オンライン)
- 日程:
- UNIT1 :調整中
(Armv7-Mプログラマモデル/Cortex-M3_M4概要・プロセッサコア/Armv7-Mメモリモデル・例外処理) - UNIT2 :調整中
(CMSIS概要/Cortex-Mプロセッサ組込みソフトウェアの開発/Armv7-Mメモリ保護・ 同期化)
- UNIT1 :調整中
コースの概要
※各UNIT単体での受講が可能です。(1日ごとのユニット制として構成されています。いずれか1日での受講も可能です。)
本コースは、Arm Cortex-M3/M4/M0 コアをベースにしたプラットフォームでソフトウェアを開発するエンジニアのために作成されています。
Armv7-Mのアーキテクチャ、例外、メモリシステム、メモリ保護および同期化といったコアアーキテクチャの基礎に加え、組込みソフトウェア開発時の要点について学びます。さらにCMSISの概要に関する知識についても講義で習得します。Arm Cortex-M3/M4の違いも習得できます。
※v6-Mのアーキテクチャ、Cortex-M0についても補足します。
受講対象者
- Arm Cortex-M3/M4/M0 を使用したシステムのソフトウェア開発を行う予定のある ソフトウェアエンジニア
- マイコンに関する一般的な知識
- 既存のArmプロセッサの知識は問いませんが、あれば役に立ちます。
オンライン開催にあたり
- Web会議サービス(Zoom)で開催します。
- ブラウザでのご参加は「Google Chrome」のみ対応しています。
※Google Chromeの使用ができない場合は、Zoomアプリのインストールが必要になります。
※Zoomのアカウントの取得は必須ではございません。
お申し込み方法
受付終了:調整中
受講料:受講料:UNIT1: 40,000円(受講者1名様/税抜き) UNIT2: 40,000円(受講者1名様/税抜き)
お支払方法
請求書はお申し込みいただいた講座の開催が確定した後、講座の開催月にお申込書に記載されたお申込者様宛にお送りいたします。
請求書に記載される期日(請求書の発行月末締め翌月末振込み)に受講料を弊社指定銀行へお振込ください。
(振込手数料は振込者がご負担下さい。)
支払い処理について上記の方法以外をご希望の場合、 Arm®トレーニン事務局までご連絡下さい。ご相談に応じます。
お問い合わせ先
Arm®トレーニング事務局
TEL : 03-6756-9405
E-mail : arm_training@dts-insight.co.jp
コース内容
UNIT1
1 Armv7-M プログラマモデル
- 1.1 イントロダクション
Armv7-M プロファイル概要 - 1.2 データタイプ
データタイプ - 1.3 コアレジスタ
Armv7-M プロファイルレジスタセット / 浮動小数点拡張レジスタ / プログラムカウンタ(PC) / リンクレジスタ (LR) / スタックポインタ(SP) / Program Status Register / CONTROLレジスタ / その他の専用レジスタ - 1.4 モード、特権、スタック
モードの概要 / 特権実行 / スタック - 1.5 例外
例外処理 - 1.6 命令セット概念
命令セット サポート / バイナリの上位互換性 / 命令セット例 - 1.7 プログラミング標準
Arm Procedure Call Standard / Cortex Microcontroller Software Interface Standard / CMSIS-Core の概要 / CMSIS-Core の例
2 Arm Cortex-M3/M4 概要
- 2.1 Arm Cortex-M3_M4 概要
Arm Cortex-M3 & Arm Cortex-M4 特徴 /Arm Cortex-M3/M4 プロセッサ / Cortex-M3とCortex-M4 の相違点 / M プロファイル 命令 / 他のArmプロセッサとの相違点 / コアレジスタセット / プロセッサパイプライン / サイクルカウ ント / メモリマップ / ビット幅のメモリアクセス / ビットバンディング / モード、特権、スタック/ 割り込みと例外 / メモリ保護ユニット (MPU) / 電力管理 / コア デバッグ / システムタイマ - SysTick / Arm Cortex-M4 浮動小数点ユニット
3 Arm Cortex-M3/M4 プロセッサコア
- 3.1 Arm Cortex-M3/M4 プロセッサコア
プロセッサブロック図/プロセッサパイプライン/フェッチステージ/最適化されたパイプライン/分岐用語/分岐命令のパイプラインの例/フラッシュ/直接分岐先のプリフェッチ/フォールディング/LDR のパイプラインの例/ライトバッファ/STR のパイプラインの例/STR-STR のパイプラインの例/命令サイクルタイミング
4 Armv7-M 例外処理
- 4.1 イントロダクション
概要 / マイクロコード化された割り込みのメカニズム / 割り込みオーバーヘッド - 4.2 例外モデル
例外タイプ / プロセッサのモードの使い方の例 / 外部割り込み / プリエンプション / 例外モデル / 例外のプロパティ / 例外優先度の例 / Armv7-Mのベクタテーブル / ベクタ テーブル オフセット レジスタ(VTOR) / リセットの動作 / 例外の動作 / 例外優先度の概要 / 例外の状態
4.2.1 例外のエントリと終了の動作
例外エントリの動作 / 例外エントリ時のスタッキング / 割り込みエントリ時のタイミング / ReturnAddress 値 / 例外からのリターン / EXC_RETURN / NMI 例外エントリの例/NMI 例外リターンの例 / ネストの例 / テールチェインの例 / 後着の例 / ステート復元中に新しい割り込みが発生した場合
4.2.2 優先順位付けと制御
例外優先度と優先度の引き上げ / 優先度の引き上げ例-PRIMASK / 特殊用途のマスクレジスタ / 優先度を引き上げる命令 / v7-M優先度グルーピング / グループ優先度、サブ優先度の選択 / 割り込み制御とステータスビット / 割り込みイネーブルレジスタ / 割り込みペンディング レジスタ / 割り込みアクティブレジスタ / 割り込みプライオリティレジスタ
4.2.3 割り込み感度
割り込み感度 / パルス割り込み-1パルス/パルス割り込み-複数パルス / レベル割り込み / 同じ割り込みを再度保留する - 4.3 ベクタテーブルと割り込みハンドラの記述
CMSIS-CORE: vector table / 割り込みハンドラの記述 / 割り込みの管理 - 4.4 内部例外とRTOSサポート
内部例外 / SysTickタイマ / SVCall / SVCallハンドラ / PendSV / 優先度エスカレーション / 内部割り込みレジスタ - 4.5 フォールト例外
v7-Mのフォールト例外 / フォールト エスカレーション / フォールトの処理 / ロックアップ状態 / ロックアップ状態の動作 / ロックアップ状態の解除 / 同期例外 / 非同期例外
5 Armv7-M メモリモデル
- 5.1 イントロダクション
イントロダクション - 5.2 メモリ アドレス空間
システム アドレス マップ / メモリ セグメント / アドレスマップ概要 / システムセグメント / Private Peripheral Bus (PPB) / System Control Space (SCS) / System Control Block (SCB) / SCB レジスタ概要 - 5.3 メモリ タイプと属性
メモリ タイプと属性 - 5.4 アライメントとエンディアン
命令とデータ アライメント / エンディアン / エンディアン設定の影響 - 5.5 バリア
メモリバリア命令 / データメモリバリア ( DMB ) / データ同期バリア ( DSB ) / 命令同期バリア ( ISB ) / 例1: メモリのリマップ/例2: 自己修正コード/例3: SLEEPONEXIT/例4: CONTROL レジスタ/例5 & 6: ベクタテーブル/例7: MPU プログラミング / メモリバリアのさらなる使用
UNIT2
6 CMSIS 概要
- 6.1 イントロダクション
Arm Cortex-M エコシステムに対する利点 / CMSIS パートナー / CMSIS の構造 / CMSIS バンドルとドキュメント - 6.2 CMSIS-Core
CMSIS-Core の概要 / CMSIS-Core ファイル / CMSIS-Core デバイススタートアップとベクタテーブル / CMSIS-Core システムとクロックのコンフィギュレーション / CMSIS-Core 命令アクセス / CMSIS-Core DSP/SIMD 命令 / CMSIS-Core 特殊用途レジスタアクセス / CMSIS-Core NVIC アクセス / CMSIS-Core SysTick アクセス / CMSIS-Core デバッグアクセス - 6.3 CMSIS-DSP
CMSIS-DSP ライブラリ - 6.4 CMSIS-Driver
CMSIS-Driver の概要 / CMSIS-Driver 関数 / CMSIS-Driver サンプル関数 - 6.5 CMSIS-RTOS
CMSIS-RTOS / CMSIS-RTOS2 レイヤのファイル / CMSIS-RTOS2 API 実装: RTX - 6.6 CMSIS-SVD
CMSIS-SVD / CMSIS-SVD web インフラストラクチャ / CMSIS-SVD ファイルの説明 / CMSIS-SVD XML スニペット / CMSIS-SVD の検証 - 6.7 CMSIS-Pack
CMSIS-Pack: Software Pack の分類 / CMSIS Software Pack / Device Family Pack / CMSIS-Pack packet description / pack の作成 / pack の記述 - 6.8 CMSIS-DAP
CMSIS-DAP / CMSIS-DAP の利点
7 Cortex-Mプロセッサ 組込みソフトウェアの開発
- 7.1
組込み開発プロセス - 7.2 デフォルトのコンパイレーションツールの振る舞い
デフォルトメモリマップ / デフォルトC ライブラリ / デフォルトC ライブラリ初期化シーケンス - 7.3 システムのスタートアップ
リセットと初期化
7.3.1 CMSIS-CORE スタートアップとシステムの初期化コード
取りうる初期化シーケンス (1) / CMSIS スタートアップと初期化 / CMSIS-CORE: スタートアップファイル / CMSIS-CORE: ベクタテーブル / CMSIS-CORE: 例外ハンドラ
7.3.2 C ライブラリの初期化
C ライブラリのスタートアップと初期化 - 7.4 イメージのメモリマップをデバイスに合わせる
カスタムメモリマップ
7.4.1 スキャッタローディング
スキャッタローディングの概要 / スキャッタローディング (単純な例) / スキャッタローディング記述ファイル / スキャッタファイルの例
7.4.2 リンカの配置ルール
リンカの配置ルール / スキャッタファイルでのオブジェクトの順序 / ルートリージョン
7.4.3 スタックとヒープの管理
ランタイムメモリモデル / スタックとヒープの設定 / 取りうる初期化シーケンス (2) / CMSIS-CORE: スタックとヒープの設定 / __user_setup_stackheap() のリターゲット
7.4.4 さらなるメモリマップの検討事項
Process Stack Pointer (PSP) のセットアップ / MPU の初期化 / メモリマップされたレジスタ / 未使用セクションとエントリポイント / 長分岐べニア - 7.5 スタートアップ初期化後の処理
拡張機能 / ハンドラでの8-byte スタックアライメント / スレッドモードの非特権への変更 - 7.6 C ライブラリをデバイスに合わせる
提供されるThumb C ライブラリ / C ライブラリのリターゲット / C ライブラリでのセミホスティングの回避 - 7.7 イメージのビルドとデバッグ
ROM イメージのデバッグ
8 Armv7-M メモリ保護
- 8.1 メモリ保護の概要
動機:なぜメモリ保護が必要か? / デフォルトのシステムアドレスマップ/PMSAv7/メモリ保護ユニット - 8.2 メモリリージョン
メモリリージョンの概要 / PRIVDEFENA と HFNMIENA
8.2.1 リージョン属性の制御
リージョン属性の制御 / Type Extension, C, B および S のエンコーディング / ノーマルメモリのキャッシュ属性 / アクセスパーミッション
8.2.2 リージョンのオーバーラップ
リージョンオーバーラップの概要 / オーバーラップしたリージョン - 例1, 2 & 3 / オーバーラップしたリージョン - 例4
8.2.3 サブリージョンのサポート
サブリージョン/サブリージョン:例1/サブリージョン:例2/サブリージョン:例3
9 Armv7-M 同期化
- 9.1 同期化とセマフォの概要
アトミック操作の必要性 / アトミック操作の競合 / クリティカルセクション - 9.2 排他アクセス
効果的なアトミック操作 / LDREX命令とSTREX命令 / lock()の例 / unlock()の例 / プログラムはスマートでなければならない / マルチスレッドミューテックスの例 / 非コヒーレントなマルチプロセッサ / メモリ属性/コンテキストスイッチング / 排他予約単位 / 例1: 同一ミューテックスの競合 / 例2: 異なるERG内のミューテックス / 例3: 同一ERG内の複数のミューテックス - 9.3 ビットバンディング
ビットバンディング / 例: ビットバンディングミューテックス