0

シミュレートされた (OVPsim 上で) Microblaze プロセッサを起動するコードを書きたいと思います。

私は、真にベアメタルであるプラットフォームを構築しました。つまり、セミホスティング ライブラリはありません。しかし、インライン アセンブリの一部とは対照的に、.S ファイルの作成には慣れていません。

したがって、アセンブラーの .text セクションが物理アドレス 0x00000000 にあることを指定したいと思います。

Linux カーネルの head.S ファイルでは、ブート コードの前に 2 つのマクロがあります。

__HEAD

ENTRY(_start)

ソースを grep することでわかることから、どちらも Microblaze 固有ではありません。

__HEAD

次のように展開されます。

 .section        ".head.text","ax"

そして、私は本当に何を見ることができません

ENTRY(_start)

に展開しますが、大したことはないように見えます (??)

bootup .text の前に何を付ける必要があるかを説明できる人はいますか?

4

1 に答える 1

1

ザイリンクスから学習することから始めてくださいcrt0.s(その他のファイルも同様です)。crt*.sこれらのファイルは、MicroBlaze で実行される Linux 以外のスタンドアロン プログラムの C ランタイム環境を初期化します。

基本的に、これらのスタートアップ ファイルは最低限のことを行います。

  • MicroBlaze のリセット、割り込み、例外ベクター、初期化のアドレスを提供します。

  • スタックおよびその他のザイリンクス ABI レジスタを初期化します ( .bss.sbss.rodata)。

  • .bssセクションをゼロで初期化します。

  • 関数を呼び出しますmain()

ザイリンクス 14.3 の場合、それらの場所はXilinx/14.3/ISE_DS/EDK/sw/lib/microblaze/src/です。またはcrt0.s、Xilinx フォルダーを検索するか、Google で検索してください。

于 2014-11-03T18:18:37.963 に答える