Arm® Cortex®-A9 ソフトウェア開発実践講座
- 日程:開催準備中 東京開催
コースの概要
Arm® Cortex®-A9コア搭載プロセッサをワンチップ・マイコンのように扱う組込みプログラムを開発する際のポイントを習得できます。
Arm®純正開発環境Arm® DS-5™、Arm® Keil® ULINK2™(JTAG エミュレータ)およびArm® Cortex®-A9コア搭載評価ボードを使用して、組込みプログラムを作成する際のポイントを講義とサンプルプログラムによる実機実習を通して習得します。
受講後は、Arm® Cortex®-A9コア搭載マイクロプロセッサの概要、キャッシュ、MMU、例外処理、初期化処理を理解し、Arm® DS-5を利用した組込みプログラムが作成できるようになります。
実機実習では、Arm® Cortex®-A9コア「RZ/A1H」(ルネサス エレクトロニクス社製)搭載CPUボード「AP-RZA-0A」(アルファプロジェクト社製)を使用します。
受講対象者
Arm® Cortex®-A9 コアをベースにしたプラットフォームでソフトウェア開発を行う予定のあるエンジニア
履修条件
- C言語のプログラムを読んで理解できること
- 組込みソフトウェアの作成経験があること
- Arm®のアセンブリ言語のプログラムを読んで、おおよそ理解できること
会場
東京会場(株式会社DTSインサイト 会議室)
東京都渋谷区代々木4-30-3 新宿MIDWESTビル6F
- JR線「新宿駅」南口より徒歩16分
- 京王新線「初台駅」より徒歩6分
- 小田急線「参宮橋駅」より徒歩10分
- 大江戸線「都庁前駅」より徒歩14分
お申し込み方法
「Arm® テクニカル・トレーニングコースのお申込について」
受付終了: コース開催の2週間前まで
定員: 10名
受講料: 120,000円(税抜き)
お問い合わせ先
Arm®トレーニング事務局
TEL : 03-6756-9405
E-mail : arm_training@dts-insight.co.jp
コース内容
1 Arm®ア-キテクチャ
- 1.1 アーキテクチャバージョン
Arm®アーキテクチャの開発経緯/Arm® Cortex®プロセッサ - 1.2 レジスタと命令セット
データ サイズと命令セット/Arm®レジスタセット/プログラム ステータスレジスタ/命令セット/アセンブラ構文 - 1.3 例外モデル
プロセッサモード/レジスタバンク/例外の受け付け/ベクタテーブル - 1.4 メモリモデル
メモリモデル/メモリタイプ/キャッシュ内蔵Arm®マクロセルの例/データアライメント - 1.5 コプロセッサ
コプロセッサ/CP15レジスタの抜粋/パフォーマンス監視ユニット(PMU) - 1.6 アーキテクチャの拡張
浮動小数点とArm® NEON™ - 1.7 資料
2 v7-A のためのアセンブラプログラミング
- 2.1 はじめに
始める前に/なぜアセンブラを知る必要があるのか/アセンブラソースファイルの例 - 2.2 ロード/ストア命令
単一/ダブルのレジスタデータ転送/アドレッシングモード/プリ/ポストインデックスアドレッシングモード/複数レジスタのデータ転送 - 2.3 データ処理命令
データ処理命令/シフト/ローテート操作/柔軟性のある第2オペランド/定数をロードするための擬似命令/LDR=の例/乗算/除算/ビット操作命令/バイト反転 - 2.4 フロー制御
分岐命令/インターワーキング/ゼロ比較と分岐/参考:条件コードとフラグ/ If-Then/例:条件実行/スーパーバイザコール(SVC) - 2.5 その他
コプロセッサ命令/PSRアクセス/その他の命令/参考資料
3 Arm®コンパイラの使用方法の基礎
- 3.1 パラメータの渡し方
パラメータの渡し方/4個以上のパラメータの渡し方/パラメータの整列 - 3.2 浮動小数点リンケージ
浮動小数点リンケージ/浮動小数点リンケージの例 - 3.3 アラインメント
グローバルデータの配置/非整列アクセス (Unaligned Accesses)/構造体のパック/構造体のアラインメント - 3.4 コーディングの考慮事項
ローカル変数のサイズ/除算/ベースポインタの最適化/「volatile」の使用 - 3.5 参考資料
4 メモリマネジメント
- 4.1 はじめに
メモリマネジメントユニットとは?/物理アドレスはどう構成されるか - 4.2 ショート-ディスクプリタ形式
Short-descriptor形式/レベル1変換テーブル/レベル1のShort-descriptor形式/レベル2 変換テーブル/レベル2のShort-descriptor形式 - 4.3 メモリタイプおよび属性
メモリタイプ/メモリタイプ-ノーマル(1)/メモリタイプ-ノーマル(2)/メモリタイプ-デバイス/メモリタイプ-ストロングオーダ/メモリタイプのアクセス順序/命令アクセス - 4.4 MMUの使用
MMUレジスタ/ MMUの有効化/メモリフォールト/同期アボートと非同期アボート/セキュリティ拡張機能 - 4.5 参考資料
5 Arm®v7-A キャッシュおよび分岐予測
- Arm® Cortex®-A シリーズプロセッサのキャッシュ/データはどのようにキャッシュへ保存される?/例: 32KB L1 Arm® データキャッシュ/レベル2キャッシュ/レベル 1 と レベル 2 キャッシュ相互作用/キャッシュ ポリシー/内部および外部のキャッシュ ポリシー/L1 データ キャッシュ ポリシー/投機的プリフェッチ/プリロード/L1 メモリ システム バッファ/いつキャッシュを有効にすべきか?/不確定なキャッシュ動作/キャッシュの管理とコヒーレンシ/分岐予測
6 例外処理 アーキテクチャv6/v7
- 6.1 概要
例外処理の手順/Arm®レジスタセットとモード/例外優先順位/ベクタテーブル(1)/ベクタテーブル(2)/リンクレジスタの補正/例外からのリターン/例外からの復帰命令/ステートの退避 (SRS)/例外からの 復帰(RFE)/例外ステートとエンディアン/割り込み禁止出来ない、FIQ割り込み/低レイテンシ割り込み - 6.2 割り込みハンドラ
シンプルは割り込みの例/シンプルな割り込みハンドラ/プロセッサステートの変更(CPS)/スタックの問題 - 6.3 アボートハンドラ
プリフェッチ アボートとデータ アボート/データ アボートタイプ/アボート ソースの識別/データ アボートハンドラの例 - 6.4 割り込みハードウェア
FIQ vs IRQ/割り込みコントローラ - 6.5 SVCハンドラ
スーパーバイザコール(SVC) の用途は?/SVCハンドラの例/OSでのSVC使用例 - 6.6 未定義ハンドラ
未定義命令/未定義ハンドラの例 - 6.7 リセットハンドラ
リセット - 6.8 参考資料
7 バリアについて
- 7.1 はじめに
メモリモデル/アクセス順序はなぜ重要か?/バリア - 7.2 データバリア
DMB対DSB/DMB/DSB/メールボックスの例/バリアでの投機(1)/バリアでの投機(2) - 7.3 命令バリア
ISB/CP15の例/変換テーブルの変更例/自己書き替えコード(1)/自己書き替えコード(2) - 7.4 参考資料/付録:コンパイラバリア
8 GICv1 & GICv2プログラミング
- 8.1 はじめに
GICアーキテクチャ/割り込みタイプ - 8.2 ディストリビュータおよびCPUインターフェース
レジスタインターフェース/ディストリビュータインターフェース(GICD_XXXX)/CPUインターフェース(GICC_XXXX)/プログラミングのガイドライン - 8.3 割り込みの有効化および構成
ICの有効化/割り込み構成 - 8.4 割り込みの処理
割り込み状態/割り込みの取得/どのCPUがSPIを処理するか?/優先度マスクレジスタ/割り込み優先度レジスタ/実行優先度/プリエンプション/割り込みのネスティング - 8.5 ソフトウェア割り込みの送信
SGI機能/SGIの送信/SGIの受信 - 8.6 セキュリティ拡張機能
セキュリティ拡張機能(Arm® TrustZone®)/割り込みの応答/優先度とバンク化 - 8.7 参考資料
- 8.8 付録A
Arm® Cortex®-A9/A5の割り込みID - 8.9 付録B
GICv2 - 8.10 付録B:レジスタの詳細
割り込みイネーブルレジスタ/割り込み構成/割り込み優先度/優先度マスク/グループ優先度とプリエンプション/バイナリポイントレジスタ/ロックダウンのサポート
9 Arm® Cortex®-A9マイクロプロセッサ起動プロセス
- 9.1 はじめに
メモリマネージメントユニット(MMU)の設定/メモリ配置設定/スキャッタローディング記述ファイル例 - 9.2 起動処理詳細
起動処理の流れ/割り込みの応答性とリセットハンドラの配置/分岐アドレス範囲とリンカ/Arm® Cortex®-A9プロセッサ資源の初期化/初期化に必要な各種定義/例外ベクタテーブルの記述/スタックポインタの初期化/TLBと分岐予測のアレイの無効化/ベクタベース(VBAR)レジスタの初期化/命令/データキャッシュの無効化/セット/ウェイによるデータキャッシュの無効化レジスタ(DCISW)/MMUコンフィギュレーション設定(1)/メモリマネージメントユニット(MMU)の設定/第1レベル記述子の形式/ドメインアクセス制御(DACR)ジスタの設定/VFP及びArm® NEON™の初期化/コプロセッサアクセス制御レジスタ(CPACR)/浮動小数点例外レジスタ(FPEXC)/MMUの稼働から処理系ライブラリの実行/main()関数実行時の処理 - 9.3 補足資料
補足資料:ベクタテーブルで使用する分岐命令の詳細/補足資料:キャッシュレベルIDレジスタ(CLIDR)/補足資料:キャッシュサイズ選択レジスタ(CSSELR)/補足資料:キッシュサイズIDレジスタ(CCSIDR)/補足資料:システム制御(SCTLR)レジスタ/補足資料:補助制御(ACTLR)レジスタ
10 システム起動処理演習
- ルネサスエレクトロニクス製RZ/A1H(Arm® Cortex®-A9コア)を使用した場合の基本的な起動シーケンスを学びます。
Arm®コンパイラを使用する場合の、例外ベクタからmain()関数実行までの一連の設定を学びます。
Arm®コンパイラのアドレス設定を行う、スキャッタローディング記述ファイルの基本を学びます。
11 MMUの設定演習
- ルネサスエレクトロニクス製RZ/A1H(Arm® Cortex®-A9コア)を使用した場合のMMUの設定を学びます。
レベル1変換テーブルの設定方法、命令キャッシュ・データキャッシュの稼働設定等を行います。
12 割り込み処理演習
- 汎用割り込みコントローラ(GIC)の設定方法を学びます。
汎用割り込みコントローラ(GIC)を使用した場合の割り込みハンドラの記述方法を学びます。
13 シリアルフラッシュメモリ起動処理演習
- シリアル起動処理を行う場合の設定方法を学びます。