Cortex-Mプロセッサのアプリケーションの例

Cortex-Mファミリは、スマート メータリング、 ヒューマン インタフェース デバイス、車載/産業用制御システム、白物家電、コンシューマ製品、医療機器などのエンド アプリケーション向けのコストおよび電力が重視される MCUおよびミックスド シグナル デバイス用に最適化されています。
ARMエンベデッド製品とリソースについての詳細は、ARMエンベデッド マイクロサイトからご利用いただけます。

ARM Cortex-Mプロセッサは、Freescale、NXP Semiconductors、STMicroelectronics、Texas Instruments、および東芝などの主要ベンダを含む、40社を超すARMパートナーにライセンスされているマイクロコントローラの世界標準です。 ARMパートナーは、標準のプロセッサを使用することで、一貫したアーキテクチャを使用してデバイスを作成し、優れたデバイスの実装の作成に専念できます。

低いエネルギー コスト、長いバッテリ寿命
低いシリコン コスト
使いやすさ迅速なソフトウェア開発と再利用

競争力の高い製品
Cortex-Mファミリは、互換性があり使いやすい幅広い範囲のエンベデッド デバイスに最適なソリューションです。このようなデバイスには、コスト、電力、およびパフォーマンスに関する要件がさまざまに異なるマイクロコントローラ(MCU)などがあります。 それぞれのプロセッサは、広範なエンベデッド アプリケーション範囲に最適なトレードオフを実現します。
| ARM Cortex-M0 | ARM Cortex-M0+ | ARM Cortex-M3 | ARM Cortex-M4 |
|---|---|---|---|
「8/16ビット」アプリケーション | 「8/16ビット」 | 「16/32ビット」アプリケーション | 「32ビット/DSC」アプリケーション |
低コストで簡単 | 低コスト、 | 性能、 | 効率的なデジタル |
Cortex-Mファミリ プロセッサはすべてバイナリ上位互換であるため、Cortex-Mプロセッサ間でソフトウェアの再利用およびシームレスな移行が可能です。

Cortex-Mシリーズ プロセッサは、それぞれ固有の利点を備えていますが、どれもCortex-Mを幅広いエンベデッド アプリケーションに最適なプロセッサとしている基本的なテクノロジを基盤としています。
| RISCプロセッサ コア | |
|---|---|
|
|
| 低消費電力モード | ネスト型ベクタ割り込みコントローラ(NVIC) |
|
|
| ツールおよびRTOSサポート | CoreSightデバッグ/トレース |
|
|
ARM Cortexマイクロコントローラ ソフトウェア インタフェース規格(CMSIS)は、Cortex-Mプロセッサ シリーズ向けのベンダに依存しないハードウェア抽象化レイヤです。CMSISにより、インタフェース ペリフェラル、リアルタイム オペレーティング システム、およびミドルウェアに対して、プロセッサとの間に一貫したシンプルなソフトウェア インタフェースを実現でき、ソフトウェアの再利用が簡素化されます。CMSISを利用することで、新しいマイクロコントローラ開発者の学習が容易になり、新製品の製品化期間が短縮されます。
NVICは、Cortex-Mプロセッサの重要な一部として、プロセッサの卓越した割り込み処理機能を提供します。
Cortex-Mプロセッサでは、各割り込みハンドラで実行する関数のアドレスを含むベクタ テーブルを使用します。 プロセッサは、割り込みを許可すると、このベクタ テーブルからアドレスをフェッチします。
ゲート数を減らし、システムの柔軟性を高めるため、Cortex-Mプロセッサでは、スタック ベースの例外モデルを使用します。例外が発生すると、クリティカルな汎用レジスタがスタックにプッシュされます。 スタック処理と命令フェッチが終了すると、割り込みサービス ルーチンまたはフォールト ハンドラが実行され、レジスタが自動的に復元されて、割り込まれたプログラムが通常実行を再開できるようになります。この方法により、従来のCベースの割り込みサービス ルーチンでスタック操作に必要だったアセンブラ ラッパの記述が不要となり、アプリケーション開発が大幅に容易になります。NVICでは、割り込みのネスト(スタック処理)をサポートしているため、高い優先度を与えることで割り込みを早期に処理できます。ハードウェアにおける完全な割り込み応答
Cortex-Mシリーズ プロセッサの割り込み応答は、割り込み信号から割り込みサービス ルーチンの実行までのサイクル数です。 これには、次の動作が含まれます。
これらはハードウェアで実行されるタスクであり、Cortex-Mプロセッサの仕様に記載されている割り込み応答サイクル数に含まれます。 他の多くのアーキテクチャでは、これらのタスクをソフトウェアの割り込みハンドラで実行する必要があるため、レイテンシと複雑性が増加します。

バック ツー バック割り込みの場合、従来のシステムでは状態の保存と復元のサイクルを2回繰り返すため、レイテンシが長くなります。 Cortex-Mプロセッサでは、NVICハードウェア内にテール チェイン技術を実装することにより、アクティブな割り込みと保留中の割り込み間の移動を簡略化しています。プロセッサ状態は、割り込みの開始時にハードウェアに自動的に保存され、割り込み終了時に復元されます。 ソフトウェア実装の場合より少ないサイクル数で行われるため、低MHzのシステムの性能が大幅に向上します。

前の割り込みのスタック プッシュ実行中に優先度の高い割り込みの後着が生じた場合、NVICはただちに新しいベクタ アドレスをフェッチし、上記のように保留中の割り込みを処理します。Cortex-MのNVICは、後着と横取りのサポートにより、このような場合にも確定的な応答を提供します。

同様に、例外が発生した場合もNVICはスタック ポップを放棄し、上記のように、ただちに新しい割り込みを処理します。 横取りを行い、状態の復元と保存を終了せずに2番目の割り込みに切り替えることにより、NVICは確実に低いレイテンシを実現します。
ARM Cortex-Mプロセッサは、8ビットおよび16ビット アーキテクチャよりも優れたコード密度を実現します。 これには、メモリ要件を緩和し、高価なオンチップのフラッシュ メモリを最大限に利用できるという大きな利点があります。このセクションでは、この利点の理由について説明します。
命令の幅
8ビットのマイクロコントローラでは8ビット命令を使用し、ARM Cortex-Mプロセッサ ベースのマイクロコントローラでは32ビット命令を使用するというのはよくある誤解です。実際には、PIC18とPIC16の命令サイズはそれぞれ16ビットと14ビットです。8051アーキテクチャの場合、一部の命令は1バイト長ですが、その他の多くの命令は2バイト長または3バイト長です。 同様のことが16ビット アーキテクチャにも当てはまり、一部の命令では6バイト以上のメモリを必要とする場合があります。
ARM Cortex-Mプロセッサでは、優れたコード密度を実現するARM Thumb®-2テクノロジを利用しています。Thumb-2テクノロジにより、Cortex-Mプロセッサは基本となる16ビットThumb命令をサポートし、より強力な32ビット命令に対応するように拡張されています。通常、Cコンパイラでは、32ビット バージョンの命令を使用することで処理をより効率的に実行できる場合を除き、16ビット バージョンを使用します。
命令の効率
この図は、ARM Cortex-Mプロセッサの命令がより強力であることを考慮していないため、不完全です。 1つのThumb命令が複数の8/16ビット マイクロコントローラ命令に相当する場合がよくあります。つまり、Cortex-Mデバイスにはより小さなコードが用意されており、低いバス速度で同じ処理を実現します。
プロセッサ アーキテクチャごとの16ビット乗算演算の比較
| 8ビットの例 | 16ビットの例 | ARM Cortex-M | |
|---|---|---|---|
MOV A, XL ; 2バイト MOV B, YL ; 3バイト MUL AB; 1バイト MOV R0, A; 1バイト MOV R1, B; 3バイト MOV A, XL ; 2バイト MOV B, YH ; 3バイト MUL AB; 1バイト ADD A, R1; 1バイト MOV R1, A; 1バイト MOV A, B ; 2バイト ADDC A, #0 ; 2バイト MOV R2, A; 1バイト MOV A, XH ; 2バイト MOV B, YL ; 3バイト
| MUL AB; 1バイト ADD A, R1; 1バイト MOV R1, A; 1バイト MOV A, B ; 2バイト ADDC A, R2 ; 1バイト MOV R2, A; 1バイト MOV A, XH ; 2バイト MOV B, YH ; 3バイト MUL AB; 1バイト ADD A, R2; 1バイト MOV R2, A; 1バイト MOV A, B ; 2バイト ADDC A, #0 ; 2バイト MOV R3, A; 1バイト
| MOV R4,&0130h MOV R5,&0138h MOV SumLo,R6 MOV SumHi,R7 (オペランドは、メモリ マップされたハードウェア乗算ユニットとの間を移動します)
| MULS r0,r1,r0 |
注: 実際のCortex-Mの乗算では、32ビット乗算が実行されます。ここでは、r0およびr1に16ビット データが格納されていると想定しています。
Cortex-Mプロセッサで重要なことは、8ビットと16ビットのデータ転送をサポートしており、データ メモリを効率的に使用できることです。 そのため、プログラマは8/16ビットをターゲットにしたソフトウェアと同じデータ型をそのまま使用できます。
より多くの接続方法(USB、Bluetooth、IEEE 802.15など)および高度なアナログ センサ(加速度計、タッチ スクリーンなど)を備えた、より低コストな製品に対する需要が増すにつれ、データの前処理や通信のためのデジタル機能とともにアナログ デバイスをより緊密に統合するニーズが高まっています。 ほとんどの8ビット デバイスには、そのようなタスクをMHz数の大幅な増加とそれに伴う消費電力の増加なしに維持する性能がありません。そのため、エンベデッドの開発者はより高度なプロセッサ テクノロジを備えた代わりのデバイスを探す必要があります。 マイクロコントローラ アプリケーションにおけるエネルギー効率の問題に対処するために、以前は16ビット デバイスを使用していました。 しかし、16ビット デバイスは相対的に性能効率が低く、32ビット デバイスと同じタスクを実行するには、一般に、アクティブなデューティ サイクルを長くするか、クロック周波数を高くする必要があります。
ARM Cortexプロセッサ ベースのマイクロコントローラ向けのソフトウェア開発は、8ビット マイクロコントローラ製品向けよりもはるかに簡単に行うことができます。 Cortexプロセッサは、Cによるプログラムが完全に可能なだけでなく、ソフトウェアの問題の特定に役立つ複数の高度なデバッグ機能を備えています。 また、MCU開発キットに含まれている追加リソースのほかに、ARMプロセッサ ベースのMCUベンダのWebサイトなど、インターネット上には数多くの例やチュートリアルが提供されています。
このセクションでは、ARM Cortex-Mプロセッサおよび関連テクノロジに関する有用なドキュメント、ホワイト ペーパー、およびチュートリアルを紹介します。
開発ツール、ソフトウェア、ボードおよびデバイス データベース、CMSISおよびmBedの詳細については、ARMエンベデッド マイクロサイトを参照してください。
| Definitive Guide to the ARM Cortex-M0 画期的なARM Cortex-M0プロセッサのプログラミングと実装のための総合ガイド | ![]() |
| Definitive Guide to the ARM Cortex-M3 画期的なARM Cortex-M3プロセッサのプログラミングと実装のための総合ガイド | |
