2014-11-01 56 views
0

我想寫一些代碼來啓動一個模擬(在OVPsim)Microblaze處理器。引導Microblaze(在OVPsim上)

我建立了一個真正裸機的平臺 - 即沒有半主機庫。但是我不熟悉編寫.s文件,而不是一些內聯彙編的小部分。

__HEAD 

所以,我希望指定我的彙編.text段位於物理地址00000000

在Linux內核中的head.S文件,引導代碼是由兩個宏之前

ENTRY(_start) 

從我可以通過grepping來源既不看到的是Microblaze的具體:

__HEAD 

似乎擴展爲:

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

,我實在看不出有什麼

ENTRY(_start) 

擴展,但它看起來像沒有什麼太大(??)

任何人能夠向我解釋我需要爲我的啓動文本添加前綴?

回答

1

您應該從Xilinx學習crt0.s(以及其他crt*.s文件)開始。這些文件初始化運行在MicroBlaze上的獨立的非Linux程序的C運行環境。

基本上那些啓動文件做最低限度:

  • 爲MicroBlaze的復位提供地址,中斷,異常向量,初始化;

  • 初始化堆棧和其它Xilinx ABI寄存器(.bss.sbss.rodata);

  • 初始化.bss部分爲零;

  • 請致電main()函數。

對於賽靈思14.3它們的位置是Xilinx/14.3/ISE_DS/EDK/sw/lib/microblaze/src/。或者只需在您的Xilinx文件夾中搜索crt0.s或通過Google搜索。