三亩地 三亩地SAN MU DI · CODE DIARY
ARTICLE DETAIL

日记详情

真实记录编程学习的某一天,欢迎挑你感兴趣的翻一翻。

Cortex-M3:为什么需要区分“加载地址”和“执行地址”?

Cortex-M3:为什么需要区分“加载地址”和“执行地址”?

难度:★
本文首发于我的嵌入式技术号「OneChan讲Soc嵌入式」,未经授权禁止转载。


先看两个地址。

你写了一个全局变量:

intg_counter=100;

用调试器查看&g_counter,显示0x20000000

objdumpfromelf查看固件,发现100这个初始值存在0x08001000

同一个变量,为什么有两个地址?

0x08001000是 Flash 地址,0x20000000是 RAM 地址。它们都是g_counter的“家”,只不过一个是它“睡觉”的地方,一个是它“干活”的地方。

这就是嵌入式系统里最基础也最容易搞混的概念:加载地址执行地址

今天这篇文章,就来把这两个地址

← 返回列表