ARMはチップではなくコアを販売していますが、そのアドレスにあるものはARMコアを購入しチップに入れるチップベンダーによって異なります。実装は、ベンダごとに、チップごとに異なります。
伝統的にARMは、より正確にリセット例外ベクタは、アドレスゼロであり、アドレスゼロから起動します。他のプロセッサファミリと異なり、従来のARMモデルは例外エントリポイントのアドレスリストではありませんが、代わりにARMがそのアドレスで命令を実行します。つまり、相対分岐命令またはload pc命令を使用する必要があります。 thumb/thumb2のみ(ARM(32ビット)命令を実行できない)の最新のcortex-mシリーズは、従来の(ARM以外の)アドレスのようなリストを使用し、ゼロアドレスは例外ベクトルではありません。スタック・ポインタにロードするアドレス、次に2番目のエントリがリセットされます。また、cortex-m例外リストは異なります。そのファミリには、従来のARMに2つの高速かつ正常な128個の割り込みがあります。最近のcortex-mに基づく質問があります。おそらくthumb2のARMでlinuxを実行した場合のthumb2という質問があります。私は、cortex-mの実装はすべてマイクロコントローラクラスのチップで、数十キロバイトのチップメモリしか持っていないと思いますが、基本的にはあなたが求めているカテゴリには該当しません。とにかく皮質-a9について尋ねています。
いくつかのコアまたはそれらのすべてに、起動アドレスが0x00000000または代替アドレスとして0xFFFF0000などのブートオプションを持つことがあります。これを使用するとARMユーザーにとっては非常に混乱しますが、ROMから電源を入れて起動し、実行時の操作のために例外テーブルをRAMに切り替えることができるように、あるアドレスにROMを、別のRAMにRAMを持つことができます。あなたはおそらくこれを行うことができるコアを持つチップを持っているかもしれませんが、コアフィーチャーのこれらのエッジを使用するかどうか、またはそれらをある設定に固定して柔軟性を提供するかどうかは、チップベンダーによって異なります。
問題のチップのデータシート/ドキュメントを確認する必要があります。 cortex-a9のように、ARMコアの名前を調べてください。理想的には、r0p0のようなものも知っていて、ARMのウェブサイトにアクセスして、そのコアのテクニカルリファレンスマニュアルであるTRMを見つけてください。また、ARM ARM、ARMアーキテクチャリファレンスマニュアルのコピーを入手することもできます。 (従来の)ARM例外ベクタは、ARM ARMには非常に多くの情報が記載されています。また、チップベンダのドキュメントも必要です。起動時にブートプロムにアドレス0を指定すると、ブートローダーは何かをしてレジスタに入れてビットを反転させ、メモリコントローラはアドレス0をRAMに切り替えます。いくつかは、RAMとして常に設定されているアドレス0と、ROMとして設定されている他のアドレスで、たとえば0x80000000と言うことができます。また、ブート前にromからramにいくつかの項目をコピーします。リセットベクトルがROMへの分岐になるように設定すると、ベクタテーブルにパッチを当てるのはブートローダの責任です。あなたが考えることができる多くの異なるスキームとして、それは誰かがそれを試している可能性がありますので、チップベンダーのドキュメントまたはサンプルコードを理解するために研究する必要があります基本的にROMの質問への答えは、それは依存しているチップベンダー。
コアのARM TRMには、コア上のストラップオプション(代替アドレスからブートできるようなもの)が記述されている場合は、ベンダーによって実装されているストラップオプション(存在する場合)を接続する必要があります。 ARM ARMは実際にTRMのようにそれに入るつもりはありません。しかし、購入する価値のあるベンダーは、ROMベースのブートストラテジが何であるかを示す独自のドキュメンテーションやコードを持つことになります。
Linuxシステムを対象とするシステムでは、ブートローダ、システムを起動して最終的にlinuxを起動する非Linuxコード(デスクトップ/ラップトップのBIOSに非常に似ています)があります。 Linuxは、(マイクロコントローラやその他のよく知られているARMの実装に比べて)かなりの量のメモリを必要とし、そのRAMはsramやdramになり、Linuxを起動する前にブートローダがメモリインタフェースを初期化しなければならないことがあります。 redbootやubootのようなポピュラーなブートローダがあります。どちらも重大な過大評価ですが、開発者やユーザーにLinuxなどの再フラッシュを可能にする機能を提供します。
ARM linuxにはATAG(ARM TAG)があります。伝統的なlinuxのコマンドラインと、ルートファイルシステムを見つけるためのアドレスやATAGsのようなlinuxのブート情報を伝えることができます。 Atagsはメモリ内の構造体で、r0などのものはブートローダからlinuxに分岐するときに設定されます。一般的なコンセプトはチップのパワーアップ、ROMやRAMからのブート、使用準備が整った場合のRAMの準備、ROMからROMへのコピーが必要な場合などです。ラムのどこかにコピーする。 ATAGは、必要に応じてLinuxを解凍する場所と、コマンドラインを見つける場所、ルートファイルシステムのようなものを見つけるために、Linuxに渡されたパラメータとしていくつかのレジスタが用意されています。 Linuxカーネルのエントリポイントを含むアドレス。