プロの高周波基板、高速基板、ICパッケージ基板、半導体テスト基板、HDI基板、リジットフレッキ基板、PCB設計とPCB メーカー
iPcb会社-信頼できるPCBメーカー! お問い合わせ
0
よくある質問

よくある質問

よくある質問

よくある質問

ARMの各パターンをどう見るか?
2022-07-28
View:71
Author:ipcb      Share

ARM動作モードは、機能によって7つに分類されます。

 

User Mode:ユーザーモード。オペレーティングシステムのタスクは一般的にこのモードで実行されます。User ModeARMの非特権モードであり、CPUがこのモードにある場合、多くの命令が実行できないため、オペレーティングシステムのリソースが保護されることを示しています。

 

System ModeV 4およびそれ以上のバージョンで導入された特権モデルです。

 

IRQ Mode:割り込みモード。このモードでは、割り込み(ソフト割り込みを含まない)処理関数が実行されます。

 

FIQ Mode:高速割り込みモード。いくつかのレジスタが増えた以外はIRQと同じです。

 

Supervisor Mode:監視モード。このモードでは、ソフト割り込み(SWI)処理関数が実行されます。

 

Abort Mode:メモリ保護に関連する例外はすべてこのモードで実行されます。

 

Undefined Mode:無効な命令を処理する例外処理関数は、このモードで実行されます。

 

ARM動作モードは大きく3つに分類することもできます。

 

ユーザーモード:User Mode

 

システムモード:System Mode

 

例外モード:その他5つのモード

 

なぜ7つの機能の異なるパターンを3つに分類できるのでしょうか。

 

これは、CPUが割り込みまたは異常を発生して自動的に対応する異常モードに切り替わると、CPUが割り込みまたは異常を発生した原因に応じて対応する割り込みまたは異常ベクトルを実行するという点で、異常モードとユーザモードとシステムモードとは異なる点があるためです。これらのベクトルの位置はCPUによって事前に定義されており、現在2つの選択肢があります。

 

1)メモリローアドレス0 x 0000000000 ~ 0 x 00000001 cにある場合をLow vectorと呼ぶ。

 

2)メモリ高低の0 Xffff 0000 ~ 0 xffff 001 cにある場合をHigh vectorと呼ぶ。

 

一般的なオペレーティングシステムでは、これらの例外ベクトルアドレスにジャンプ命令が配置されます。Low vectorを使用するか、High vectorを使用するかは、CPU自身が決定し、ARM仕様には何の制限もありません。

 

プログラムは、CPUの現在の実行モードを判断するために、CPSRMODEドメインを読み取ることができます。

 

ARMのさまざまなパターンをどう見るか?

 

この質問に答えるには、パターンによって、どのようなものが異なるかを見なければなりません。要約すると、次の2つの点が異なります。

 

1)物理レジスタが異なる

 

2)権限が異なる

 

User Modeを参照モードにすると、次のようになります。

 

1System Mode:レジスタ同様、権限が異なるだけ。

 

2)その他のException Mode:レジスタが異なる、権限も異なる。

 

権限の観点から見ると、System Modeは他のException ModeFIQIRQSupervisorAbortUndefined)と同じであり、彼らの間の違いはレジスタ側にわずかな差があるだけです。

 

レジスタの観点から見ると、CPSR中のMODEドメインをスライス選択に似たものと見ることができ、その値が異なると、選択されたレジスタも異なります。

 

命令中のレジスタは同じであるが、MODEドメインのスライス選択を経て、実際には異なる物理レジスタを指しています。

 

SYSTEMモードとUSERモードは、アクセス権が異なる以外はすべて同じなため、ステータスレジスタを含む16個のレジスタにオペレーティングシステムが自由にアクセスできるようにする必要があります。

 

では、モード切り替えはどのように行われるのでしょうか。

 

1SWIまたはReset命令を実行する。UserモードでSWI命令を実行すると、CPUSupervisorモードに入ります。もちろん、他のモードでSWI命令を実行しても、Supervisorモードに入り、一般的なオペレーティングシステムを補完することはありません。Userモードが非特権モードであることを除いて、他のモードは特権モードに属しているからです(これはARM2つの実行状態しかなく、DummyX 86を望まず、4つの実行状態を定義していることを示しています)。SWIを実行するのは、一般にシステムリソースにアクセスするためであり、特権モードではすべてのシステムリソースにアクセスすることができます。SWI命令は、一般にオペレーティングシステムにAPIインタフェースを提供するために使用されます。

 

2)外部割込みが発生している。外部割り込みが発生すると、CPUIRQまたはFIQモードに入ります。具体的には、どのモードなのかは、外部の割り込み元がCPUを受け取ったPinであることを見なければなりません。

 

3CPU実行中に異常が発生した。典型的な例外は、MMU保護によるメモリアクセスの異常であり、CPUAbortモードに切り替わります。無効なコマンドの場合は、Undefinedモードになります。

 

上から、CPUが自動的に入らないモードがあることを発見しました。このモードはSystemモードです。Systemモードに入るには、プログラマ自身がコマンドを作成して実装する必要があります。実際には簡単で、どの特権モードでもCPSRMODEドメインをSystemモードに対応する数字に変更すればよいです。Systemモードに入るのは、一般的に「Systemモード」と「Userモード」のレジスタを利用するためです。そのため、一般的なオペレーティングシステムはSWIを介してSupervisorモードに入った後、簡単な処理を行った後、Systemモードに入ります。

 

また、どの特権モードでも、CPSRMODEドメインを変更することで他のモードに入ることができます。ただし、修正されたCPSRはこのモードにおけるシャドウCPSRであるため、実際のCPSRではないので、一般的なやり方はシャドウCPSRを修正し、それからMOVSコマンドを実行してあるブレークポイントに復帰して新しいモードに切り替えることです。

 

メモリフォーマット

 

Armアーキテクチャは、メモリをゼロアドレスから始まるバイトの線形結合とみなします。0バイトから3バイトまで格納されたワード(32ビット)データを配置し、4バイト目から7バイト目まで2番目に格納されたワードデータを配置します。32ビットのマイクロプロセッサとして、armアーキテクチャがサポートするアドレス空間は4 GBです。

 

メモリフォーマット:

 

1、大端フォーマット:高バイトは低アドレス、低バイトは高アドレス。

 

2、リトルエンドフォーマット:高バイトは高アドレス、低バイトは低アドレス。

 

命令長:Armマイクロプロセッサの命令長は32ビットであっても、16ビット(thumb状態)であってもよいです。Armマイクロプロセッサでは、バイト(8ビット)、ハーフワード(16ビット)、ワード(32ビット)の3種類のデータ型がサポートされています。ここで、ワードは4バイトの位置合わせが必要で、ハーフワードは2バイトの位置合わせが必要です。

 

注:命令長とは、単純なmovという3文字の長さではなく、完全な命令の長さです。

 

ARMシステムのCPUには2つの動作状態があります。

 

1ARM状態:プロセッサが32ビットのワードアラインメントを実行するARM命令。

 

2Thumb状態:プロセッサは16ビットの、半字整列のThumb命令を実行する。

 

プログラムの実行中は、2つの状態の間で適切な変換を行うことができます。プロセッサの動作状態の遷移は、プロセッサの動作モードおよび対応するレジスタ内のコンテンツに影響を与えません。CPUの電源が入っている状態はARMです。

 

(株)iPCBPCBPCBAの設計、製造販売及びこれらの付随業務の電子相関事業を手掛けています。弊社の詳細はリンク:https://www.ipcb.jp/ 或いはhttps://www.ipcb.com/jp をご覧ください。