Gcc 从ROM、堆栈和RAM中的变量执行代码

Gcc 从ROM、堆栈和RAM中的变量执行代码,gcc,embedded,executable,rom,Gcc,Embedded,Executable,Rom,我有一个小的应用程序,在我们的董事会上,我们有ROM。我想这个程序是从ROM执行,而有变量和堆栈在RAM中 我知道我需要将.text段和.data段放在ROM中,然后在启动时使用一些代码初始化硬件,然后将.data复制到RAM中,将.bss初始化为0并初始化堆栈 我的问题是我真的不确定该用哪种技术。 有人能告诉我如何做到这一点吗 有关信息,我正在将gcc与sparc elf目标一起使用。查看链接器命令文件。它允许您将节(.data、.bss、.text)定位到特定的内存位置,如RAM或ROM。假

我有一个小的应用程序,在我们的董事会上,我们有ROM。我想这个程序是从ROM执行,而有变量和堆栈在RAM中

我知道我需要将.text段和.data段放在ROM中,然后在启动时使用一些代码初始化硬件,然后将.data复制到RAM中,将.bss初始化为0并初始化堆栈

我的问题是我真的不确定该用哪种技术。 有人能告诉我如何做到这一点吗


有关信息,我正在将gcc与sparc elf目标一起使用。

查看链接器命令文件。它允许您将节(.data、.bss、.text)定位到特定的内存位置,如RAM或ROM。假设您请求的是带有BSP启动的嵌入式应用程序,而不是c运行时启动)

有很多例子和许多crt0.S文件可以实现这一点。gnu工具的常见做法是在.data段声明周围的链接器脚本中有一些标签/变量。这会告诉引导程序代码.data段在rom中的位置,并简单地将其复制到ram中,再次使用链接器脚本变量来知道.data在ram中的位置。bss同样的协议,boostrap汇编程序使用链接器变量将一些ram归零。谢谢你的提示。我去看看。是的,它适用于嵌入式应用程序