十年匠心定制 · 商业建站与技术教学双线并行 咨询热线:400-886-1026 service@lmnt.cn
ARTICLE DETAIL

资讯详情

深耕网站建设与运营推广的一线实战洞察。

Cortex-M3:为什么 EMPTY 区域常用于堆栈?

Cortex-M3:为什么 EMPTY 区域常用于堆栈? 难度:★本文首发于我的嵌入式技术号「OneChan讲Soc嵌入式」,未经授权禁止转载。打开一个典型的 Cortex-M3 分散加载文件,除了ER_IROM1和RW_IRAM1,你大概率还会看到这样一个区域:STACK 0x20010000 EMPTY 0x00000400 { }或者更简洁的:STACK 0x20010000 EMPTY 0x400 { }EMPTY。空的。为什么要在宝贵的 RAM 里,划出一块“空”的区域?而且这个区域,经常被命名为STACK或HEAP?今天这篇文章,就来拆开EMPTY的真正含义。它的背后,藏着栈和堆这两个运行时最核心的内存结构,以及链接器对它们“特殊对待”的全部逻辑。一、EMPTY 是什么?它和“空”有什么关系?EMPTY是 ARM 链接器的一个执行域属性。它的定义是:在执行地址空间里,预留一段指定大小的区域,但这段区域不属于任何加载域,不包含任何输入段,不占用任何 Flash 空间。换句话说,EMPTY是一块“
返回列表