我想写一些代码来启动一个模拟的(在OVPsim上)Microblaze处理器。
我已经构建了一个真正的裸机平台 - 即没有半主机库。但我不熟悉编写.S文件,而不是内联汇编的一些小部分。
所以,我想指定我的汇编程序.text部分位于物理地址0x00000000
在Linux内核head.S文件中,引导代码前面有两个宏:
__HEAD
和
ENTRY(_start)
从我所看到的来看,通过点击来源也不是特定的Microblaze:
__HEAD
似乎扩展为:
.section ".head.text","ax"
我无法真正看到
ENTRY(_start)
扩展为,但看起来没什么(??)
任何人都可以向我解释我需要在启动时使用.text开始。
答案 0 :(得分: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/
。或者只是在您的Xilinx文件夹上搜索crt0.s
或谷歌搜索。