移転とは何ですか?なぜ移転?(以下エンベデッド)

まず、あなたはいくつかの概念を知っている必要があります。

1、リンクおよび実行アドレス。

①実行アドレスは、名前が、あなたもロードアドレスとして知られているRAMのアドレスに、ダウンロードコードのツールを使用している実行中のプログラムを、対処するための時間であることを示唆しています。

②リンクアドレス、リンカスクリプトで指定されたアドレス。なぜリンクスクリプトはそれに対処指定しましたか?あなたは私たちがAの関数を呼び出す必要がある場合、コンパイラは、このAの機能を見つける方法である、Cプログラミング言語について考えますか?彼らはそれを見つけることができます前に、コンパイラは、それが置かれている場所を知っていなければなりません。これは、リンカスクリプトの役割であるプログラムが実行される前に、すべての機能は、我々はアドレス番号A機能を探してそこに行く呼び出した後、スクリプト実際のリンクは、アドレス内の機能番号を指定されています。C言語のポインタ変数に幾分類似しています。

図2に示すように、位置独立コードシンボルの位置。

①コードの場所は、このコードの実装が正しいか、すでにバインドされているアドレスと現在のアドレスに依存する必要はないが、例えば:PCの必須ポインタが_mainにジャンプしていることのLDR PC、_main、(このアドレスは、この関数は間違っているだろう_main格納されていない場合、コードの実行は、アドレスによってこの制約の成功に相当し、アドレスに)関数名のアドレスです。

②位置独立コード、このコードは庭の反対側の場所とは何の関係もないそのアドレスを使用して、実行することができる場所です。

第二に、理解する必要があるいくつかの問題の移転。

1、次の実行アドレス異なる状況へのリンクアドレスとどうなりますか?

A:上記の例を与える機能、異なる実行時のアドレスとリンクアドレス、リンクアドレスが関数Aの未来を指定するためのリンカスクリプトは、(ベースアドレス+に格納される、実行アドレス(ロードアドレス)が0000であり、0x1000番地である場合オフセット)= 0x1000番地+は0x0001 = 0x1001アドレスが、プログラムをダウンロードするプログラムダウンロード時間まだ0x0000に、それは実際に(ベースアドレス+オフセットに格納されたアドレスの関数である)= 0000 +は0x0001 = 0x0001にこのアドレス。ラインコードの例の場所にプログラムを実行すると:のLDR PC、アドレス0x1001 Aは、コンパイラは最初のリンカスクリプトA Aのfind関数で指定されますが、さまざまな理由のためのリンクアドレスとロードアドレスは、実際には、関数Aを持っているので、実装が間違って行くように、それは、0x0001に置きました。そうする際、これらの2つの異なるアドレスとすると、エラーコードの位置の実装の時間が予測不可能な発生であろう。

2、なぜ実行するために異なるアドレスを持つリンクアドレスはどうなりますか?

A:チップスタート、内部SRAMに頼っては、コードのスニペットを実行することはできませんが、アドレスの運転開始を運命DDRの初期化は、内部SRAMであるため。私たちは、オペレーティング・システムを実行する必要がある場合には、その後、どのように十分なメモリのポイントは、それを実行するには?あなたがDDRを初期化する必要があり、この時間が利用可能であるので、私たちは、コードが上記の将来のDDRで実行されていることを知っているので、リンカスクリプトアドレスからリンクアドレスの異なるを実行するために登場DDRは確かにアドレス上にあるリンクアドレスを指定します状況。

3.移転とは何ですか?

A:そのようなAの問題なので、あなたは上記の問題を解決するために、このように再配置を使用する必要があります。だから、それを再配置することは何ですか?移転は現在、アドレスリンクアドレス異なる状況下で実行され、位置独立コードの実装は、この位置独立コードの役割は、自身が新しい走り幅跳びに再び元のコードはどこへ行くのリンクアドレスを共有するためにコピーされており、その位置は、ちょうど株式コードを実行します。実行中のアドレスリンクアドレスと一致し、状況のこの実現。

3.なぜ移転?

:リンクアドレスは現在、我々は2つの選択肢があり、この場合には、別のアドレスを実行している
すべての位置独立コードを使用する①。
②2つのアドレスが同じになるように移転。
私たちは、それが小さなコードがある場合、あなたは①使用できることを知っているが、大規模なコードは非現実的である、すべての使用位置に依存しないコードは、あなたがこの問題を解決するための再配置を使用しなければならないことを確保することが困難ファイル。

公開された24元の記事 ウォン称賛27 ビュー10000 +

おすすめ

転載: blog.csdn.net/gyyu32g/article/details/78508406