我正在使用S5PV210,这是一款sumsung arm-cortexA8芯片。在其文档中,程序将开始在0xd0200010执行。现在我成功运行了我的程序。但我还有一些问题。
首先,我使用链接命令“-Ttext 0xd02000010 -e main”,并认为它将主函数放到地址0xd0200010。但我发现它只是将.text部分放到0xd0200010上。如果我改变了我的.c文件中的函数顺序,即使.text部分仍然会被放在0xd0200010上,但是主函数不会在该地址上,并且“-e main”根本不起作用。
那么,我怎样才能将主函数设为0xd0200010?我可以仅通过编译器和链接器命令来完成吗?
答案 0 :(得分:2)
我解决了..
elf文件用于OS平台,然后定义入口点是elf文件的标题。
但对于裸机系统,它无法读取elf文件的信息,因此必须将其转换为二进制文件,该文件不包含任何有关入口点的信息。换句话说,裸-metal系统没有"入口点"的概念。所以主要选项不适用于二进制文件。
有很多方法可以在固定地址上放置C函数。我只是发布关于它的解决方案
在用户定义的部分声明主要功能
int main()属性(((" .main")))
使用链接描述文件,将.main部分放在所需的地址上。
SECTIONS { = 0×0000 .text: { led.o(.main) *(。文本) } ........ }