Extern int Image $$ RW

  
エクステナルintイメージ  

制限の意味


ARMシステムに記述されているRO、RW、およびZIデータについては、もっともらしい理解が常にありましたが、その間に私はそれを慎重に理解し、いくつかの規則を見つけました。私は、RO、RW、ZIについて理解していることを書くつもりで、みんなのために何かできることを願っています。助けて。 RO、RW、ZIを理解するには、まず次の知識を理解する必要があります。


ARMプログラムの構成


ここでいう "ARMプログラム"はARMシステムです。 ROMに保存されているbinイメージファイルではなく、実行中のプログラムが違いに注意を払います。 RO、RW、ZI ROはプログラム内の命令と定数RWはプログラム内の初期化変数ZIはプログラム内の未初期化変数上記の3つの点は、次のように解釈できます。 RWは読み取り/書き込み、ZIはゼロ


ARMイメージファイルの構成いわゆるARMイメージファイルは、ROMに書き込まれたbinファイルを指し、イメージファイルにもなります。以下はImageファイルを使用してそれを呼び出します。画像ファイルには、ROデータとRWデータが含まれています。 ImageファイルにZIデータが含まれていないのは、ZIデータが0であるためです。プログラムが実行されている限り、ZIデータが配置されている領域は常にクリアされる必要はありません。それを含むことは記憶スペースを無駄にする。 Q:なぜImageはROとRWを含まなければならないのですか? A:RO内のコマンドと定数、およびRW内で初期化された変数はZIとは異なるため、途中には何もありません。


ARMプログラムの実行プロセス


上記2つの点から、ROMに焼き付けられたイメージファイルは実際の動作においてARMプログラムと完全な互換性がないことがわかります。同じです。したがって、ARMプログラムがROM内のイメージから実際の実行状態にどのように到達するかを理解する必要があります。実際には、ROM内の命令は少なくともそのような機能を持っている必要があります:1. RWからROMへRAMを移動するRWは変数であるため、その変数はROMに存在できません。 2. ZIが配置されているRAM領域をクリアするZI領域はImageにないため、コンパイラはZIアドレスとサイズに従って、対応するRAM領域をクリアする必要があります。 ZIも変数であり、同様に変数はROMに存在することはできず、プログラム実行の初期段階では、2つの命令が完了した後にCプログラムは通常通り変数にアクセスできます。それ以外の場合は、変数なしでコードを実行することしかできません。

rt_system_heap_init((void *型)&画像RW I RAM1

ZI $$リミット、(void *型)STM32_SRAM_END
);

RW

イメージI RAM1

ZI $$制限


これはリンカによってエクスポートされたシンボルで、ZIセグメントの終わり、つまりプログラム実行領域のRAMが終了した後を表します(‘’に注意してください)。つまり、小さなi ++および++ i)アドレスは、実行領域内のRAMの未使用領域の開始アドレスです(実際には、この理解は、疑似検索の単なる標準であり、RAMで考えると、単なる遠いものです)。 ZI領域の使用はプログラム全体の終わりになることがよくありますが、ここでは間違っていると理解するかもしれません)。
& Imageアドレスを入力します。
RW I RAM1

ZI $$制限

Copyright © Windowsの知識 All Rights Reserved