0

我想编写一些代码来启动模拟(在 OVPsim 上)Microblaze 处理器。

我已经建立了一个真正的裸机平台——即没有半主机库。但是我不熟悉编写 .S 文件,而不是一些小的内联汇编。

所以,我想指定我的汇编器 .text 部分位于物理地址 0x00000000

在 Linux 内核的 head.S 文件中,引导代码前面有两个宏:

__HEAD

ENTRY(_start)

从我通过获取来源可以看到的情况来看,Microblaze 也不是特定的:

__HEAD

似乎扩大到:

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

我真的看不出是什么

ENTRY(_start)

扩展到,但看起来没什么(??)

任何人都可以向我解释我需要在我的启动 .text 前面加上什么?

4

1 回答 1

1

您应该从 Xilinx 学习crt0.s(以及其他crt*.s文件)开始。这些文件为在 MicroBlaze 上运行的独立非 Linux 程序初始化 C 运行时环境。

基本上这些启动文件做的最少:

  • 为 MicroBlaze 复位、中断、异常向量、初始化提供地址;

  • 初始化堆栈和其他 Xilinx ABI 寄存器(.bss、、、.sbss.rodata

  • .bss用零初始化部分;

  • 调用你的main()函数。

对于 Xilinx 14.3,它们的位置是Xilinx/14.3/ISE_DS/EDK/sw/lib/microblaze/src/. 或者只是搜索crt0.s您的 Xilinx 文件夹或谷歌它。

于 2014-11-03T18:18:37.963 回答