问题: 如下图所示,为什么打印的值不同,而打印的地址相同?
要解释这个问题,就要引用虚拟地址的概念。首先介绍单片机:
如下图所示,在cpu与外设之间,有一个内存控制器,CPU将address的范围发送给内存控制器,然后内存控制器根据地址范围将对应的CSx设置为0,从而控制对应的外设。(片选)
在单片机上用的是物理地址直接控制对应的外设,单片机CPU上有内存,称为SOC:system on chip。
在MPU中,引用了虚拟地址的概念。
Linux芯片的硬件如下(注意Linux芯片有的有ARM,有的没有。)