我使用的是一款sumsung arm-cortexA8芯片S5PV210。在其文檔中,程序將開始在0xd0200010處執行。現在我成功地運行了我的程序。但我仍然有一些問題。我如何確保裸機臂固定地址的輸入功能?
起初,我用鏈接命令「-Ttext 0xd02000010 -e main」,並認爲它會把主函數放到地址0xd0200010。但是我發現它只是把.text部分放到0xd0200010上。如果我在.c文件中改變了函數的順序,即使.text部分仍然放在0xd0200010上,但main函數不會在該地址上,而「-e main」根本不起作用。
那麼,我怎樣才能使主要功能在0xd0200010?我可以通過編譯器和鏈接器命令來完成嗎?
通常情況下,您會編寫用於設置'C'環境的彙編程序(例如清零BSS數據,設置堆棧等)。然後你跳到你的主程序'bl_main'。此彙編程序代碼位於唯一部分,您使用自定義鏈接程序腳本將該代碼定位在圖像的開頭。對於* ELF *圖像(非二進制),您可以使用'ENTRY(start)'鏈接器來指定初始控制的位置。這對二進制文件不起作用,幾乎你應該使用[自定義鏈接腳本](https://sourceware.org/binutils/docs/ld/Scripts.html)。網絡上有各種例子。 – 2014-10-01 14:46:36
是的,你是對的...我也明白了,謝謝 – demonguy 2014-10-04 14:23:17