ARMの概要(ARMアーキテクチャとプログラミングの第1章に基づく)

AMRの概要

ARMプロセッサは、高性能、低コスト、低消費電力の16/32ビット組み込み1 RISCマイクロプロセッサです。これらの特性により、最も広く使用されている組み込みプロセッサとなっています。組み込み業界に従事している場合、それを体系的に研究する必要があります。チップアーキテクチャを深く理解し、その動作原理を習得する必要があります。これは、その後の低レベルの学習(ブート、カーネル、ファイルシステム)や奇妙な形のバグにも非常に役立ちます。より正確な位置決めをします。パフォーマンスの高いシステムを設計する場合は、ARMアーキテクチャに慣れてはいけません。

ARMプロセッサの動作モード

図に示すように、ARMプロセッサには7つの動作モードがあります
ARMプロセッサの動作モード
ユーザーモード以外の6つのプロセッサモードは特権モードと呼ばれます。ここでの特権モードとは、このモードのプログラムがすべてのシステムにアクセスできることを意味しますリソース、およびプロセッサモードを任意に切り替えます。システムモードに加えて、他の5つの特権モードは異常モードとも呼ばれます

上記の異なるプロセッサモード間の切り替えは、対応するフラグビット(CPSR)2を変更することにより、ソフトウェアで切り替えることができますまた、外部割り込みまたは例外処理によって切り替えることもできます。システムが中断された場合、適切な例外モードにプロセッサが、異常なパターンの種類のそれぞれは、対応する例外ハンドラのレジスタのセットがあり、それはユーザ・モード・レジスタが破壊されない保証することができる3

通常ユーザーモードで実行されるプログラムは、ソフト割り込み(SWI)を介してのみシステムリソースにアクセスする必要があります。一般的なシステムコール(読み取り/書き込み)は、SWIを介してシステムリソースにアクセスします。

ARMレジスタ

ARMプロセッサには37個のレジスタがあります。含む:
アーム各種モードレジスタの分類
=> 31汎用レジスタ。R0〜R14、パソコンあります。
1.バックアップレジスタ(R0〜R7)はなく、すべてのモードが共通で、競合関係があります。モードを切り替えると、その中のデータが変更されます。
2.バックアップレジスタ(R8〜R14):その中には、高速割り込みモードのみ独立したR8〜R12 4があり、他のモードと共有されます。R13は一般にスタックポインタとして使用され、R14は接続レジスタとして使用されるため、R14を使用して、異常な戻りアドレス現在のサブルーチンの戻りアドレスを保存できますしたがって、これらの2つのレジスタには、各モードで対応する物理レジスタがあります。
3.プログラムが命令を実行するために必要なレジスターであるため、どのモードであっても、プログラムカウンターR15は1つだけです。ARMプロセッサは、パイプライン機構取った5ので、偏差PCレジスタアドレスと現在の命令の実行があり、どのように多くのARMプロセッサの特定のアーキテクチャを参照する必要があります。

  • 注:ARMフィンガーセットを実行している場合、PCにコピーする際には特別な注意が必要です。ARMV4以降の命令セットバージョンは、ワード境界で整列された(つまり、下位2ビットが00である)データのみをコピーできますそれ以外の場合、エラーが発生します命令セットが少ないバージョンは自由にコピーできます(ランダムになりすぎないで、良い習慣を作るのが最善です)。ARMは下位の2つを自動的に無視します。システムは、thumb命令セットの実行時にbit0データを無視します。BX命令は、PCのbit0を使用して、thumb命令セットとarm命令セットを区別します。

=>異常モードのCPSRおよびSPSRを含む6つのステータスレジスタ(プログラムは通常モードで実行されるため、通常モードではSPSRはありません)。形式と概要は次のとおりです。
プログラムステータスレジスタフラグ
条件ビット
モード制御

ARMシステムの異常な中断。

ARM割り込みのタイプ

ARMの各タイプの異常割り込みには、独自のバックアップレジスタセットがあります。詳細については、前のセクションを参照してください。ARMで複数の例外割り込みが同時に発生した場合、各例外割り込みの優先度に従って、最も高い優先度で例外割り込みに応答するように選択できます。
ここに画像の説明を挿入

割り込みを行うARMプロセッサの応答フロー

異常割り込みに対するARMプロセッサの応答プロセスは次のとおりです。

  • プロセッサの現在のプログラムステータスレジスタ(CPSR)の内容を、実行する異常割り込みに対応するストアドプログラムステータスレジスタ(SPSR)に保存します。
  • 現在のプログラムステータスレジスタCPSRの対応するビットを設定し、IRQを無効にし、FIQ 6無効にし、開始するモードに設定します。
  • レジスタLr_modeを設定してアドレス7を返します
  • プログラムカウンター(PC)を異常割り込みの割り込みベクターアドレスに設定し、対応する異常割り込みハンドラーにジャンプします。

割り込み処理を開始...

  • 中断されたプログラムステータスレジスタの内容を復元します。
  • 異常割り込みが発生した命令の次の命令に戻り、R14の値をプログラムカウンタ(PC)にコピーします。

ARMシステムのストレージシステム

ここでは、ARMのストレージ形式について簡単に説明します。ARMシステムには、ワード、ハーフワード、バイトがあります。ストレージでは、ワード単位のワードアラインメントとハーフワードのハーフワードアラインメントを観察することをお勧めします。境界整列されていないストレージの場合、アクセス中に実行結果が予測できない、アクセスアドレスの下位ビットが無視されます(ハーフワード下位1ビット、ワード下位2ビット)
ここで、ストレージの大小の端、大端のストレージ:低以下に示すように、アドレスは上位バイトデータを格納し、リトルエンディアン:下位アドレスは下位バイトデータを格納します。
リトルエンディアン形式のストレージ


  1. 組込みシステムは、アプリケーション中心、コンピュータ技術、ハードウェアとソフトウェアを満たすように調整することができますを意味し、厳密なのコンピュータのアプリケーションシステムの機能、信頼性、コスト、サイズおよび電力要件を専門↩︎

  2. ソフトウェア切り替えの前提条件は、現在のプロセッサがすでに特権モードになっていることです。↩︎

  3. システムモードに異常が発生していないため、電源投入時にシステムモードに入ります。ユーザーモードとまったく同じレジスタセットを持っています。↩︎

  4. 高速割り込みモードでは、プロセッサが例外をすばやく処理する必要があるため、独立したR8〜R12レジスタを備えており、レジスタの保存と回復の操作を減らして、切り替え時間を短縮します。↩︎

  5. 命令が実行されると、プロセッサは後で実行される命令を取得します。↩︎

  6. 例外処理のプロセスでは、FIQとIRQを禁止する必要があります。そうしないと、例外が処理される前に他の例外に応答します。↩︎

  7. 特定のチップに応じて計算する必要がある戻りアドレスを保存するときに変換があります。↩︎

元の記事を35件公開 Like1 Visits 1870

おすすめ

転載: blog.csdn.net/lzj_linux188/article/details/103510239