【发布时间】:2015-12-31 00:52:51
【问题描述】:
在阅读了this Embedded Gurus article 关于堆栈溢出的内容后,我有兴趣在嵌入式(裸机 ARM)项目中反转静态 RAM 和堆栈的顺序。见下图:
当前:所有静态 RAM 数据都放入整个 RAM 部分。 “堆栈开始”地址固定在最高 RAM 地址,并作为链接器定义的符号提供。
反转:如果“静态变量”部分的大小是固定的,但大小会随着变量的添加/删除而变化,这将很简单。我想做的是将所有静态 RAM 数据放入 RAM 的末尾,然后根据静态 RAM 数据的大小确定堆栈应该从哪里开始。该“堆栈开始”地址将作为链接器定义的符号提供。
有没有办法让一个可变大小的部分在整个 RAM 部分的末尾保存静态 RAM 数据?如果不是,如何在不需要固定大小的静态 RAM 数据部分的情况下实现这种反转?
【问题讨论】:
标签: gcc linker g++ embedded ld