Cortex-M3:为什么需要区分“加载地址”和“执行地址”? 难度:★本文首发于我的嵌入式技术号「OneChan讲Soc嵌入式」,未经授权禁止转载。先看两个地址。你写了一个全局变量:intg_counter=100;用调试器查看g_counter,显示0x20000000。用objdump或fromelf查看固件,发现100这个初始值存在0x08001000。同一个变量,为什么有两个地址?0x08001000是 Flash 地址,0x20000000是 RAM 地址。它们都是g_counter的“家”,只不过一个是它“睡觉”的地方,一个是它“干活”的地方。这就是嵌入式系统里最基础也最容易搞混的概念:加载地址和执行地址。今天这篇文章,就来把这两个地址