Arm® Cortex®-A/R ソフトウェアデザインコース(Arm® Cortex®-A5,A7,A9,A15/R5 対応)
- 日程:"Arm® Cortex®-A"に特化 ソフトウェアデザインコース 特別開催
- UNIT1 : 開催準備中 ( Arm®アーキテクチャと開発手順 )
- UNIT2 : 開催準備中 ( ソフトウェア開発とベンチマーク )
- UNIT3 : 開催準備中 ( Arm® Cortex®-Aプロセッサの拡張機能 )
※通常のUNIT2、UNIT3のアジェンダを少し変更しての開催となります。
※(UNIT2のv6メモリタイプとUNIT3のArm® NEON™コプロセッサ概要の順番が変わります。 Arm® Cortex®-R4,Arm® Cortex®-R5ソフトウェアエンジニアガイドをv6メモリタイプ,Arm® TrustZone®概要, Arm® Cortex®-A9ソフトウェアエンジニアガイドに振りかえての開催になります。)
-
日程:Arm® Cortex®-A/R ソフトウェアデザインコース
- UNIT1 : 開催準備中 ( Arm®アーキテクチャと開発手順 )
- UNIT2 : 開催準備中 ( ソフトウェア開発とベンチマーク )
- UNIT3 : 開催準備中 ( Arm® Cortex®-A/Rプロセッサの拡張機能 )
- UNIT4 : 開催準備中 ( Arm® Cortex®-Aプロセッサの拡張機能とマルチコアでの開発)
- 時間:開催準備中
コースの概要
※各UNIT単体での受講が可能です。
このコースはArm® Cortex®-A/Rコアの組込みソフトウェアを設計する技術者向けに設計されています。
コースは4つのユニットから構成されており、習熟度や習得したい内容にあわせて、自由に組み合わせて御受講頂けます。
UNIT1 Arm®アーキテクチャと開発手順
Arm®の基本アーキテクチャ、命令セットを理解し、Arm® RealView Toolを使用した場合の組込みプログラムを開発する手法を習得します。
UNIT2 ソフトウェア開発とベンチマーク
Arm® RealView Toolを使用した場合の効率の良いプログラムを作成する手法、割り込みを利用するシステムを設計時の注意点を習得します。
また、開発製品の品質向上、性能向上に役立つベンチマークとプロファイリング機能に関する知識を習得します。
UNIT3 Arm® Cortex®-A/Rプロセッサの拡張機能
v7-A/Rコアで拡張された機能を理解し、キャッシュ、TCM、メモリコントローラ、電源管理機能を利用するシステムを設計時の注意点を習得します。
このユニットでは、Arm® Cortex®-R4、R5コアに関する知識も習得できます。
UNIT4 Arm® Cortex®-Aプロセッサの拡張機能とマルチコアでの開発
v7-Aコアで拡張された機能を理解し、マルチコアを利用するシステムを設計時の注意点を習得します。
このユニットでは、Arm® Cortex®-A8、A9、A5、A7、A15コアに関する知識も習得できます。
受講対象者
Arm® Cortex®-A/Rプロセッサコア向けのアプリケーション・ソフトを開発時に必要になる知識を習得したいソフトウェア技術者
履修条件
- UNIT1、UNIT2:組込みシステムのソフトウェアに関する基礎的な知識があること
- UNIT3:Arm®コアに関する基礎的な知識があること(UNIT1、UNIT2受講済みレベル)
- UNIT4:v7-Rコアで拡張された機能に関する知識があること(UNIT3受講済みレベル)
会場
東京会場(株式会社DTSインサイト 会議室)
東京都渋谷区代々木4-30-3 新宿MIDWESTビル6F
- JR線「新宿駅」南口より徒歩16分
- 京王新線「初台駅」より徒歩6分
- 小田急線「参宮橋駅」より徒歩10分
- 大江戸線「都庁前駅」より徒歩14分
お申し込み方法
「Arm® テクニカル・トレーニングコースのお申込について」
受付終了: コース開催の1週間前まで
定員: 16名
受講料:
- UNIT1 : 47,600円(税抜き)
- UNIT2 : 47,600円(税抜き)
- UNIT3 : 47,600円(税抜き)
- UNIT4 : 47,600円(税抜き)
※受講料につきましてご不明な点がありましたらお問い合わせください。
お問い合わせ先
Arm®トレーニングセンタ
TEL : 03-6756-9405
E-mail : arm_training@dts-insight.co.jp
コース内容
UNIT1 Arm®アーキテクチャと開発手順
1 Arm®アーキテクチャ イントロダクション
- 1.1 Arm® アーキテクチャ
Arm® 株式会社について/Arm®ベースのシステム例/ Arm®アーキテクチャの開発経緯/Arm® アーキテクチャ v7 プロファイル/このプロセッサはどのアーキテクチャなのか/データサイズと命令セット/プロセッサモード/Arm® レジスタセット/プログラムステータスレジスタ/プログラムカウンタ/命令とデータのアラインメント/例外処理/コプロセッサ/Arm® TrustZone® セキュリティ拡張/Arm® 命令セット/Arm® Thumb® 命令セット/Arm® Thumb®-2 命令セット/その他の命令セット/M プロファイルアーキテクチャ - 1.2 命令パイプライン
命令パイプライン/最適化されたパイプライン/LDR パイプラインの例/分岐命令のパイプラインの例/Arm9™ でのパイプラインの変更/最適化例/LDR インターロック/最新のコアのパイプライン長
2 v6 & v7-AR のためのアセンブラプログラミング
- 2.1 はじめに
始める前に/なぜアセンブラを知る必要があるのか/命令セットの基本/ Arm®,Arm® Thumb®,UAL/統一アセンブラ言語/アセンブラソースファイルの例/生成命令の選択/サイクルタイミング - 2.2 ロード/ストア命令
単一/ダブルのレジスタデータ転送/メモリのアドレッシング/プリ・ポストインデックスアドレッシング/複数レジスタのデータ転送/メモリブロックコピー/スタック - 2.3 データ処理命令
データ処理命令/シフト/ローテート操作/柔軟性のある第2オペランド/定数をロードするための擬似命令/LDR= の例/乗算・除算/その他の乗算/ビット操作命令 - 2.4 フロー制御
分岐命令/インターワーキング/サブルーチン/0比較と分岐/条件コードとフラグ/ If-Then/条件実行/スーパーバイザコール - 2.5 その他
コプロセッサ命令/PSRアクセス/キャッシュプリロード命令/SETEND/バイト反転/その他の命令 - 2.6 DSP
DSP命令の概要/パックされたデータ/飽和演算とCLZ/飽和/GEフラグ/加算と減算/乗算/バイト選択/絶対差の総和
3 Arm®開発ツール概要
- 3.1 Arm®開発ツール
はじめに/ツールチェイン/RVDS/RVCT/RVD/モデル/プロファイラ/RVI/RVT, RVT2/ハードウェアプラットフォーム/Arm®の最初のモデル/ツールのライセンス/マイクロコントローラ開発ツール/GNUツールとLinux
4 組込みソフトウェアの開発
- 4.1 "Out-of-the-box"ビルド
デフォルトCライブラリ/デフォルトメモリマップ/アプリケーションスタートアップ - 4.2 Cライブラリをターゲットに合わせる
Cライブラリリターゲット/Cライブラリのセミホスティングを回避する - 4.3 イメージメモリマップをターゲットに合わせる
Scatterloading入門/Scatterloading/Scatter記述ファイル/リンカの配置ルール/Scatterファイルのオブジェクト順序/ルートリージョン/ランタイムメモリマネージメント/スタックとヒープの初期化/ランタイムメモリモデル/__user_initial_stackheap( )/スタックとヒープ用のリージョン - 4.4 リセットと初期化
ベクタテーブル/初期化手順/スタックポインタの初期化/ローカルメモリセットアップ/拡張機能/実行モードに注意 - 4.5 さらなるメモリマップの検討
ロングブランチベニア/メモリマップされたレジスタ/メモリマップの例/Scatterファイルの例 - 4.6 イメージのビルドとデバッグ
使用されないセクションの削除とエントリーポイント/エンディアン/エンディアンとRVCT/出力オプション/ROMイメージのデバッグ
5 デバッグとトレース
- 5.1 デバッグに必要な基本機能
- 5.2 Arm® JTAGデバッグへのイントロダクション
Arm®デバッグシステムコンポーネント/embeddedICEロジック/デバッグステート/JTAG信号とTAP/JTAGスキャンチェーン/デバッガ接続シーケンス/システムステートのリードバック/実行中のターゲットに関するJTAG動作 - 5.3 ブレークポイントとシングルステップ
EmbeddedICEのブレークポイントロジック/データアクセスブレークポイント/ハードウェア命令ブレークポイント/ソフトウェア命令ブレークポイント/ベクタキャッチ/シングルステップ/その他のブレークポイント情報 - 5.4 セミホスティング
セミホスティング/JTAGを介したセミホスティング - 5.5 リアルタイムデバッグ(EmbeddedICE-RT)
Arm®リアルタイムデバッグ/EmbeddedICE-RTのモニタモード/デバッグ通信チャネル/DCC通信例/リアルモニタを使用したデバッグ - 5.6 リセットとJTAGクロック問題
リセットからのデバッグ/JTAGクロック考慮 - 5.7 ETMトレース
なぜトレースを使うか?/エンベデッドトレースマクロセルPipestatsとTrace Packets/トレース圧縮/Packetised Trace/トレースキャプチャ制御/ETMフィルタロジック/トリガ/ETMトレースを使用したデバッグの基本/ベンチマークとサイクルカウント/Embedded Trace Buffer
UNIT2 ソフトウェア開発とベンチマーク
1 C/C++ コンパイラヒントと情報
- 1.1 基本的なコンパイル
言語サポート/サポートしている変数のデータ型/最適化レベル/アーキテクチャ/プロセッサの選択 - 1.2 コンパイラの最適化
自動最適化/「volatile」の使用/テイルコール最適化/命令スケジューリング/言語認識/関数のインライン化/インラインの例/ループの変形 - 1.3 コーディングの考慮点
コンパイラのレジスタの使用/パラメータの渡し方/ループの終了/除算/リアルタイム除算/コンパイル時の定数での除算/剰余-モジュロ演算/C++のサポート - 1.4 ローカル/グローバルデータ
変数タイプ/ローカル変数のサイズ/グローバルなRW・ZI データ/グローバルデータの配置/非整列アクセス/構造体のパック/構造体のアラインメント/ポインタの整列/memcpy()の最適化/ベースポインタの最適化/ベースポインタの最適化
2 リンカ/ライブラリ ヒントと情報
- 2.1 基本リンカ機能
リンカは何をしますか?/リンカは、何をしたらよいかをどのように知りますか?/ オブジェクトファイルの構造/ライブラリの構造/メモリマップ情報 - 2.2 システムとユーザライブラリ
ライブラリ VS オブジェクトファイル/リンカのライブラリ検索/ライブラリの作成と保守 - 2.3 ベニアとインターワーキング
分岐命令の取り扱い/リンカが生成したベニア/ベニアのタイプ/ベニアの数を最小限にする - 2.4 リンカの最適化と診断
未使用セクションの削除/RWデータ圧縮/小さいサイズの関数のインライン化/役に立つリンカの診断処理 - 2.5 Arm® 供給ライブラリ
RVCT標準ライブラリ/RVCT Microlib
3 さらなるコンパイル / リンクヒントと情報
- 3.1 C/C++とアセンブラの混合
コンパイラのレジスタ使用の復習/C とアセンブラの混合/C/C++ からのアセンブラ呼び出し/コンパイラ内蔵の関数/組み込みアセンブラ/インラインアセンブラ - 3.2 スタックの問題
スタックの問題/スタック使用量の測定/--callgraph の例 - 3.3 VFP/Arm® NEON™
浮動小数点演算(VFP)/浮動小数点リンケージ/浮動小数点演算の例/コンパイラでのArm® NEON™サポート/Arm® NEON™の例 - 3.4 ビルド機能の拡張
複数ファイルのコンパイル/リンカのフィードバック/特定ターゲットのリンク/デバッグの問題とビルド時間/BPABIとSysV/Linuxアプリケーションの生成とライブラリ
4 v6メモリタイプ
- 4.1 メモリタイプ
メモリタイプ/ノーマルメモリ/デバイスメモリ/ストロングオーダメモリ/メモリタイプ一覧/メモリタイプアクセス制限/アクセスオーダ/Arm®v6とv5でのメモリ定義比較 - 4.2 メモリバリア
データメモリバリア/データ同期バリア/自己修正コードとパイプライン実行/分岐命令を使えば?/命令メモリバリア
5 例外処理 v6 & v7
- 5.1 概要
割り込みの流れの例/例外処理/例外優先順位/例外の設定/ベクタテーブルの例/ベクタテーブルの位置/状態を切り替える命令/リンクレジスタの調整/例外ハンドラでのレジスタ使用/ CP15コントロールレジスタの例外設定 - 5.2 割り込みハンドラ
割り込みの処理/FIQ vs IRQ/シンプルな割り込みの例/再許可割り込みの問題/スタックに関する問題点/ネストする割り込みの例/ベクタ割り込みコントローラ/ベクタ割り込みの例/分散割り込みコントローラ - 5.3 アボートハンドラ
プリフェッチアボートとデータアボート/データアボートタイプ/アボートソースの識別/データアボートハンドラの例 - 5.4 SVCハンドラ
スーパーバイザコール(SVC) の用途は/SVCの使用/SVCハンドラの例/ OSでのSVC使用例 - 5.5 未定義ハンドラ
未定義命令/未定義ハンドラの例 - 5.6 リセットハンドラ
リセット
6 ソフトウェアベンチマークとプロファイリング
- 6.1 イントロダクション
ベンチマークの動機付け/現実にどう近づけるか?/モデルについて/情報をどのように集めるか?/この数値には意味があるのだろうか? - 6.2 パフォーマンスモニタリングハードウェア
PMU で何がカウントできるのか?/PMU コンフィギュレーション(Arm11、Arm® Cortex®-A/R)/サンプルコード/オーバーフローとIRQ/カウンタ値 - 6.3 サイクルアキュレートトレース
Arm® Profiler
UNIT3 Arm® Cortex®-A/Rプロセッサの拡張機能
1 キャッシュとTCM v6/7
- 1.1 キャッシュの基礎
キャッシュとは?/キャッシュへのアクセス/キャッシュへの登録/ダイレクトマップキャッシュ/セットアソシエイティブ・キャッシュ/メモリ書き込みの例/セットアソシエイティブ・キャッシュ/概要/用語 - 1.2 Arm®プロセッサのキャッシュ
キャッシュ内蔵Arm®マクロセルの例/4KB Arm® キャッシュの例/Arm®のキャッシュ機能/キャッシュ操作/L1 と L2 キャッシュ/WBとWTキャッシングモード/ライト/リード バッファ/ライトバッファ - 1.3 密結合メモリ
TCMとは/TCM 設定 - 1.4 最適化に関する考察
不確定なキャッシュ動作/キャッシュロックダウン/キャッシュコヒーレンシ/何をキャッシュすべきか/キャッシュ内蔵コアの最適化
2 メモリ管理 v6/v7
- 2.1 メモリ管理概要
なぜメモリ管理が必要か?/なぜ仮想アドレスが必要か?/ キャッシュ内蔵Arm®マクロセルの例/アドレス変換/アクセスパーミッション/メモリタイプ/メモリタイプ ノーマル・デバイス・ストロングオーダ/メモリバリア/システム制御コプロセッサ (CP15) - 2.2 メモリプロテクションユニット (MPU)
メモリプロテクションユニット/デフォルト MPU メモリマップ/プロテクション領域のパラメータ/領域設定のサンプルコード/サブ領域/MPUメモリマップの例 - 2.3 メモリマネジメントユニット (MMU)
MMUとは?/MMUコンポーネント/MMU変換テーブル/レベル1変換テーブル/レベル1記述子/記述子の属性/レベル1変換テーブル例/レベル2変換テーブル/レベル2記述子/レベル2変換テーブル例/トランスレーションルックアサイドバッファ (TLB)/ MMU変換プロセス概要/ドメイン/変換テーブルセットアップ/MMU設定ステップ - 2.4 最適化と課題
不確定なMMU動作 - 2.5 変換テーブル生成
セクション・スーパセクション・ページの例
3 電源管理
- 3.1 電源管理
電源、クロックの調整/スタンバイモード/ドーマントモード/シャットダウンモード/シャットダウンモードへの遷移/パワーダウンモードからの復旧/パワーダウンモードの使い方/ドーマントモードの例/マルチコアの問題/例 CPU シャットダウン/例 CPUドーマント/Arm® NEON™ 電源管理オプション
4 Arm® Cortex®-R4ソフトウェアエンジニアガイド
- 4.1 概要
Arm® Cortex®-R4 パイプライン/プログラム フロー予測/除算ユニット/フローティング ポイント ユニット/FPUパイプライン - 4.2 レベル1メモリシステム
Level1メモリシステム/キャッシュの構成/メモリ プロテクション ユニット (MPU)/リージョン/デフォルトのメモリマップ/内部属性の概要/アクセスパーミッション/TCM/TCM設定 - 4.3 追加情報
RVCTと非整列アクセス/MPUの設定例
5 Arm® Cortex®-R5ソフトウェアエンジニアガイド
- 5.1 概要
Arm® Cortex®-R5パイプライン/除算ユニット/FPU/プログラムフロー予測/Arm®コンパイラ ツールチェイン - 5.2 ツインCPUサポート
CPUの判別/Arm®v7 MP拡張/WFEとSEV/ミューテックスの例 - 5.3 L1メモリ システム
L1概要/MPU/デフォルトのメモリマップ/TCM/TCM設定/アクセラレータ コヒーレンシ ポート/低レイテンシ ペリフェラル ポート/ - 5.4 エラー検出
エラー検出と修正/キャッシュ/リダンダント コア - 5.5 追加情報
命令セットの変更点/デバッグとトレースのサポート
UNIT4 Arm® Cortex®-Aプロセッサの拡張機能とマルチコアでの開発
1 Arm® TrustZone®概要
- 1.1 概要
Arm® TrustZone®とは?/なぜArm® TrustZone®が必要なのか?/どんな攻撃が考えられるのか?/何が追加されているか?/ワールド間の遷移 - 1.2 例外処理
ベクタテーブル/例外処理の例/割込レイテンシ - 1.3 メモリシステム
セキュアとノンセキュアなメモリ/キャッシュとTLB/メモリシステム/セキュリティアクセス違反 - 1.4 デバッグ
デバッグ設定/RVDのArm® TrustZone®サポート - 1.5 ソフトウェア
ブートとTrust設定の流れ/信頼のおけるサービス/サービスの利用方法は?
2 Arm® NEON™コプロセッサ概要
- 2.1 Arm® NEON™ハードウェア概要
Arm® NEON™とは何か?/SIMD命令の例 ベクタADD/SIMD命令の例 ベクタLoad/なぜArm® NEON™のためのプログラムなのか?/Arm® NEON™レジスタ/Arm® NEON™ データタイプ/Arm® NEON™ハードウェアの詳細/ソフトウェアでのArm® NEON™イネーブル/Arm® NEON™ ステータスレジスタ - 2.2 Arm® NEON™ 命令セット概要
Arm® NEON™ 命令の構文/Arm® NEON™ 命令の例 - 2.3 Arm® NEON™ ソフトウェアサポート
どのようにArm® NEON™ コプロセッサを使用するのか/OpenMAXとは何か?/自動ベクタ化/ベクタ化のための/C/C++ コードのチューニング/Arm® NEON™ ベクタ化の例/コンパイラ組込み関数
3 Arm® Cortex®-A8ソフトウェアエンジニアガイド
- 3.1 概要
Arm® Cortex®-A8/Arm® Cortex®-A8 パイプライン/Arm® Cortex®-A8のArm® NEON™、VFPの合成/Arm® Cortex®-A8 Arm® NEON™/VFPエンジン/プログラムフロー予測/パフォーマンス モニタリング ユニット(PMU) - 3.2 Level 1とレベル2メモリシステム
レベル1キャッシュ/L1命令、データキャッシュ/L2キャッシュ/L2プリロードエンジン(PLE)/L1/L2の相互作用 - 3.3 その他の情報
ブートコードの例
4 Arm® Cortex®-A9ソフトウェアエンジニアガイド
- 4.1 概要
Arm® Cortex®-A9/Arm® Cortex®-A9 MPCore/パイプラインメディアプロセッシングエンジン/レジスタリネーミング/アウトオブオーダー発行/完了/スモール・ループモード/分岐予測/パフォーマンスモニタリングユニット - 4.2 レベル1メモリシステム
Arm®v7-Aアーキテクチャ/レベル1 メモリシステム/ロード/ストア機能/キャッシュ/データキャッシュ/メモリ・マネジメント・ユニット/Arm® v7 アーキテクチャの効果 - 4.3 その他
レジスタリネーミングの例/仮想フラグレジスタ
5 Arm® Cortex®-A5ソフトウェアエンジニアガイド
- 5.1 概要
Arm® Cortex®-A5/Arm® Cortex®-A5 MPCore/Arm® Cortex®-A5パイプライン/Arm® Cortex®-A5 MPE/FPUの合成/Arm® Cortex®-A5メディア処理エンジン/プログラム フロー予測/パフォーマンス モニタリング ユニット(PMU) - 5.2 レベル1メモリ システム
Level1メモリ システム/キャッシュ/メモリ マネジメント ユニット(MMU)/データのプリフェッチ/Arm® v7アーキテクチャの特徴
6 同期サポート
- 6.1 共有リソースの管理と同期命令
リソースの共有/管理されていないリソースの共有/共有リソースの管理/v6以前: SWP/LDREX と STREX 命令/排他アクセスの拡張/排他モニタ/ローカル/グローバル排他モニタ/メモリ属性/スレッド間のメッセージ通信/LDREX/STREX を使用したミューテックスの実装/同期に関する考慮点
7 v7-A MPCoreソフトウェアエンジニアガイド
- 7.1 概要
プライベートメモリ領域/自分はどのCPUなのか? - 7.2 スヌープコントロールユニット
アドレスフィルタリング/コヒーレンシ管理/コヒーレンシの保守/SCUの例/命令キャッシュとTLB コヒーレンシ/コヒーレント排他アクセス/アクセラレータコヒーレンシポート/アクセスコントロールサポート - 7.3 割り込みコントローラ
割り込みソース/割り込みコントローラレジスタの位置付け/割り込みの受け付け/割込みコンフィギュレーション/割込みの優先付け/割込みマスク/割り込みプリエンプション:バイナリポイント/ソフトウェア生成割り込み(SGI) - 7.4 タイマとウオッチドッグ
プライベートタイマとウォッチドッグ/グローバルタイマ - 7.5 Arm® TrustZone®サポート
概要/割込みセキュリティレジスタ/優先度/コヒーレンシ/MPCoreの初期化 - 7.6 SMPのブート
AMPかSMPか?/コヒーレンシ管理を有効にする/SMPシステムのブート/SMP初期化の例 - 7.7 割り込みの設定
自分はどのレジスタを初期化する必要があるか?/ICのイネーブルと設定・サンプルコード/割り込みの受け付け・サンプルコード - 7.8 同期処理
WFEとSEV/ミューテックスの例/lock_mutex・unlock_mutexのサンプルコード
8 Arm® Cortex®-A15 / Arm® Cortex®-A7概要
- 8.1 Arm® Cortex®-A15 / Arm® Cortex®-A7の紹介
Arm® Cortex®-A15 MPCore/Arm® Cortex®-A7 MPCore/Arm® Cortex®-A15とArm® Cortex®-A7の比較/合成時のオプション/Arm®v7-A アーキテクチャ向けサポート/パフォーマンス モニタリング ユニット(PMU)/ソフトウェアのサポート - 8.2 Arm® Cortex®-A15/Arm® Cortex®-A7の新機能
以前Mのv7-A CPUからの拡張/Arm® Cortex®-A15/A7 メモリ管理/新しい命令/汎用タイマ アーキテクチャ/ACE: Arm® AMBA® 4 コヒーレンシ 拡張/仮想化拡張