Cortex-Mユーザのための「初めてのCortex-R52」入門ガイド

<span id="hs_cos_wrapper_name" class="hs_cos_wrapper hs_cos_wrapper_meta_field hs_cos_wrapper_type_text" style="" data-hs-cos-general-type="meta_field" data-hs-cos-type="text" >Cortex-Mユーザのための「初めてのCortex-R52」入門ガイド</span>

Cortex-Mシリーズで開発経験があるエンジニアにとって、Cortex-R52は非常に魅力的な高性能プロセッサですが、アーキテクチャの違いから「どこから手をつければいいのか」と戸惑うことも少なくありません。 

本記事では、Cortex-R52を使い始める際に押さえておくべき5つの重要ポイントを解説します。 

1.Cortex-R52の情報収集とドキュメント

Cortex-Mと違い、Cortex-R52はデバイス(マイコン)のマニュアルにコアの詳細が載っていないことが一般的です。以下の3種類の英文マニュアルを使い分ける必要があります。 

  • Armv8-R Architecture Reference Manual Supplement: アーキテクチャ全体の概要 
  • Arm Architecture Reference Manual Armv8 (AArch32): 詳細な命令セットや動作 
  • Cortex-R52 Technical Reference Manual: R52固有の仕様 

2.Cortex-MとCortex-R52の決定的な違い

Cortex-MからR52に移行する際、特に意識すべき違いを以下の表にまとめました。 

項目 

Cortex-M シリーズ 

Cortex-R52 

命令セット 

T32 (Thumb) 

A32 (ARM) + T32 

動作モード 

スレッド / ハンドラ 

8種類のプロセッサモード + 例外レベル(EL) 

システム設定 

システム制御ブロック (SCB) 

コプロセッサ (CP15) 

メモリ 

内蔵フラッシュが一般的 

内蔵フラッシュなし(外付け + RAM 

割り込み 

NVIC (ベクタ割り込み) 

GIC (汎用割り込みコントローラ) 

注目ポイント:例外レベル (EL) 

Cortex-R52には「例外レベル」という概念が導入されています。 

  • EL2 (ハイパーバイザ): リセット直後のモード。仮想化などを行わない場合でも、初期設定のために経由します。 
  • EL1 (OS/特権): 通常のRTOSやアプリケーションが動作するメインの階層です。 
  • EL0 (ユーザ): 非特権モード。 

 

3.プログラミングの要:コプロセッサ(CP15) 

Cortex-Mではレジスタに値を書き込むだけで設定ができましたが、Cortex-R52のシステム設定(キャッシュやMPUなど)にはコプロセッサ (CP15) へのアクセスが必要です。 

アクセスには専用の組み込み関数(またはアセンブラ命令)を使用します。 

  • MRC: コプロセッサからレジスタへ読み出し 
  • MCR: レジスタからコプロセッサへ書き込み 

注意点: コプロセッサの設定パラメータ(CRn, Opcode1等)は規則性が覚えにくいため、マニュアルの略称名で検索して確認するのが効率的です。 

4.割り込み制御(NVICからGICへ)

Cortex-R52では、NVICの代わりにGIC (Generic Interrupt Controller) を使用します。 

  • 自動スタック退避がない: Cortex-Mと異なり、レジスタのスタックへの退避・復帰はソフトウェア(コンパイラ)で記述する必要があります。 
  • 共通の流れ: 割り込み発生 → イントIDを読み取る → 処理実行 → 終了レジスタにイントIDを書き込む(これを忘れると次の割り込みが入りません)。 

5.実践:起動処理とシリアルフラッシュ(RZ/T2Mを例に) 

Cortex-R52は内蔵フラッシュを持たないため、外付けのシリアルフラッシュから起動する「ブートシーケンス」の理解が不可欠です。 

起動の3ステップ 

  1. 内蔵ブートローダ: 電源ONで起動。シリアルフラッシュから「セカンダリーブートローダ (SSBL)」をRAMにコピー。 
  2. SSBL: アプリケーション本体をRAM(または密結合メモリ)にコピーし、EL2からEL1へ遷移。 
  3. アプリケーション: メイン処理の開始。 

開発のコツ 

最初はフラッシュへの書き込みを避け、内蔵RAMや密結合メモリ (TCM) でデバッグを行うことを強くお勧めします。クロック設定やピン設定をミスしても、電源を入れ直すだけで復帰できるため、開発効率が劇的に向上します。 

まとめ:スムーズな開発のために 

Cortex-R52は一見複雑ですが、例外レベルの遷移やコプロセッサの扱いさえ慣れてしまえば、Cortex-Mで培った知識の多くを活かすことができます。 

まずはIAR Embedded Workbenchに含まれるサンプルプロジェクト(RZ/T2M用など)を動かし、実際のコードで例外レベルの遷移やGICの設定を確認することから始めてみてください。 

さらに詳しく知りたい方へ: 

IARシステムズでは、今回ご紹介した「RZ/T2M」を含む様々な評価ボードに対応したサンプルプログラムを提供しています。これらをベースに開発を始めるのが、成功への最短ルートです。