Arm® Keil® MDKを使用したArmv7-Mソフトウェア開発トレーニング
- 日程:
- 2023年12月7日(木)-12月8日(金)
※2日間コース(Armマイコン開発環境のスタンダードツール「Arm® Keil® MDK」を使用した演習コースです)
- 2023年12月7日(木)-12月8日(金)
- 時間:9:00〜17:30
※終了時間は進行状況により若干変動する可能性があります。
コースの概要
Armv7-Mアーキテクチャをベースにしたプラットフォームでソフトウェアを開発するエンジニアのために作成されています。
すでにArmv7-Mのアーキテクチャ、例外、メモリシステムに関する知識を習得しているものの、実際のソフトウェア開発に使用する開発ツールの特徴や使い方についてより実践的な知識を必要とするエンジニアを対象としています。
ソフトウェア開発で必要となるフローの考え方の解説をはじめ、Arm Keil MDKを使用した実機演習が含まれています。
実機演習では使用するボード上のポートを制御する際に必要となるボードまたはデバイスのマニュアルの読み取り方も簡単に説明します。
Arm Keil MDKの持つ便利なデバッグ機能を利用したテスト方法についても演習で解説します。
Arm Cortex-M3/M4/M0ソフトウェアトレーニングを受講した方で、演習を含めてより実践的な内容を学びたい方におすすめのコースです。
受講対象者
- Arm® Cortex®-M3/M4/M0 ソフトウェアトレーニングコースを受講済みのソフトウェアエンジニア
- マイコン組込みシステムのソフトウェアに関する基礎的な知識があること
- C言語プログラミングに関して基礎的な知識があること
会場
東京会場(株式会社DTSインサイト 会議室)
東京都渋谷区代々木4-30-3 新宿MIDWESTビル6F
- JR線「新宿駅」南口より徒歩16分
- 京王新線「初台駅」より徒歩6分
- 小田急線「参宮橋駅」より徒歩10分
- 大江戸線「都庁前駅」より徒歩14分
お申し込み方法
受付終了:2023年11月21日(火)18:00まで
定員:10名様限定
受講料: 100,000円(受講者1名様/税抜き)
- 演習で使用する評価ボードはお持ち帰りいただけます
- 演習で使用するPCは、弊社でご用意いたします
下記コース名をクリックしてお申し込みフォームからお申込みください。
※同業者様等のお申し込みについてはお断りする場合もございます。
「Arm® Keil® MDKを使用したArmv7-Mソフトウェア開発トレーニング」
お支払方法
請求書はお申し込みいただいた講座の開催が確定した後、講座の開催月にお申込書に記載されたお申込者様宛にお送りいたします。
請求書に記載される期日(請求書の発行月末締め翌月末振込み)に受講料を弊社指定銀行へお振込ください。
(振込手数料は振込者がご負担下さい。)
支払い処理について上記の方法以外をご希望の場合、 Arm®トレーニングセンタまでご連絡下さい。ご相談に応じます。
お問い合わせ先
Arm®トレーニングセンタ
TEL : 03-6756-9405
E-mail : arm_training@dts-insight.co.jp
コース内容
Day1
1 アセンブラプログラミングArmv7-Mプロセッサ
- 1.1 イントロダクション
学習目標 - イントロダクション/始める前に.../なぜアセンブラを知る必要があるのか?/命令セットの基本/Unified Assembler Language (UAL)/条件コードとフラグ/Thumb 命令エンコーディングの選択 - 1.2 データ処理命令
学習目標 - データ処理命令/データ処理命令/データ処理命令の生成/シフト操作/ローテート操作/柔軟性のある第2オペランド - レジスタ/柔軟性のある第2オペランド - 定数/変数への定数のロード/乗算/除算/ビット操作命令 - 1.3 ロード/ストア命令
シングル/ダブルのレジスタデータ転送/メモリのアドレッシング - オフセット/メモリのアドレッシング - アドレッシングモード/複数レジスタのデータ転送/スタック - 1.4 フロー制御
学習目標 - フロー制御/フロー制御の概要/分岐命令/サブルーチン: リンク付き分岐/0比較と分岐/If-Then ブロック - 1.5 その他
学習目標 - その他/アセンブリファイルの例/飽和/バイト反転とCLZ/特殊用途レジスタへのアクセス/排他アクセス命令/電力管理命令/No operation/その他の命令
2 Cortex-M プロセッサ 組込みソフトウェア開発
- 2.1 組込み開発プロセス
- 2.2 デフォルトのコンパイレーションツールの振る舞い
デフォルトメモリマップ/デフォルトC ライブラリ/デフォルトC ライブラリ初期化シーケンス - 2.3 システムのスタートアップ
リセットと初期化
2.3.1 CMSIS-CORE スタートアップとシステムの初期化コード
取りうる初期化シーケンス (1)/CMSIS スタートアップと初期化/CMSIS-CORE: スタートアップファイル/CMSIS-CORE: ベクタテーブル/CMSIS-CORE: 例外ハンドラ
2.3.2 C ライブラリの初期化
C ライブラリのスタートアップと初期化
- 2.4 イメージのメモリマップをデバイスに合わせる
カスタムメモリマップ
2.4.1 スキャッタローディング
スキャッタローディングの概要/スキャッタローディング (単純な例)/スキャッタローディング記述ファイル/スキャッタファイルの例
2.4.2 リンカの配置ルール
リンカの配置ルール/スキャッタファイルでのオブジェクトの順序/ルートリージョン
2.4.3 スタックとヒープの管理
ランタイムメモリ管理/ランタイムメモリモデル/スタックとヒープの設定/取りうる初期化シーケンス (2)/CMSIS-CORE: スタックとヒープの設定/__user_setup_stackheap() のリターゲット
2.4.4 さらなるメモリマップの検討事項
Process Stack Pointer (PSP) のセットアップ/MPU の初期化/メモリマップされたレジスタ/未使用セクションとエントリポイント/長分岐べニア - 2.5 スタートアップ初期化後の処理
拡張機能/取りうる初期化シーケンス(3)/ハンドラでの8-byte スタックアライメント/スレッドモードの非特権への変更 - 2.6 C ライブラリをデバイスに合わせる
提供されるThumb C ライブラリ/C ライブラリのリターゲット/C ライブラリでのセミホスティングの回避
3 Armv7-M C/C++ コンパイラ ヒントと情報
- 3.1 基本のコンパイル
言語サポート/サポートされる変数のデータ型/最適化レベル/アーキテクチャ、プロセッサの選択 - 3.2 コンパイラの最適化
自動最適化/"volatile"の使用/テイルコール最適化/命令のスケジューリング/言語認識/関数のインライン化/インラインの例/ループの変形/分岐ターゲットの最適化 - 3.3 コーディングの考慮点
レジスタの用途/パラメータの渡し方/ループの終了/除算/コンパイル時定数による除算/モジュロ演算/浮動小数点/浮動小数点リンケージ/浮動小数点リンケージの例/Cortex-M3/M4 ビットバンディング/C によるビットバンディングの例/ビットバンド属性とコンパイルスイッチ/C++ サポート - 3.4 C/C++とアセンブリの混合
C とアセンブリの混合/C、C++からのアセンブリの呼び出し/CMSIS/組込み関数/名前付きレジスタ変数/組込みアセンブラ/インラインアセンブラ - 3.5 ローカルとグローバルデータの問題
変数タイプ/ローカル変数のサイズ/グローバルなRW、ZIデータ/グローバルデータの配置/アンアラインなアクセス/構造体のパック/構造体のアライメント/ポインタのアライメント/memcpy() の最適化/ベースポインタの最適化
4 Armv7-M リンカとライブラリ ヒントと情報
- 4.1 基本のコンパイル
リンカは何をするのか?/リンカは何をすべきかどうやって知るのか?/オブジェクトファイルの構造/ライブラリの構造/スキャッタローディング - 4.2 システムとユーザライブラリ
ライブラリ VS オブジェクトファイル/ライブラリの作成と保守 - 4.3 ベニア
分岐命令の取り扱い/リンカが生成するベニア/ベニアの数を最小限にする - 4.4 スタックの問題
スタックの問題/スタック使用量の計測と保護/--callgraph の例 (Dhrystone) - 4.5 リンカの最適化と診断
未使用セクションの削除/RWデータ圧縮/小さいサイズの関数のインライン化/リンカフィードバック/特定ターゲットのリンク/デバッグの問題とビルド時間/役に立つリンカの診断情報 - 4.6 Arm 供給ライブラリ
Armコンパイラの標準ライブラリ/Microlib
Day2
5 Arm Keil MDKマイクロコントローラ開発キットを使用したArm Cortex-M4組込みソフトウェア開発演習
- 演習用ボードの解説
- デバイス固有のプロジェクトの新規作成方法
- プログラムのビルド操作
- デバッグの基本操作
- LED点灯プログラムの説明
- 処理フロー
- フローに沿ったコーディング
- ビルドおよびデバッグとテスト手法概要
- GPIOと割り込みに関する制御の説明
- 処理フロー
- フローに沿ったコーディング
- ビルドおよびテスト
- フォールトに関するおさらいとMPUに関する補足説明
- フォールト発生時のデバッグ手法解説
- アライメントフォールトの修正演習