存储器地址和处理器地址
在讲地址映射问题前,先讲述下地址空间。这边有两个概念必须理解,首先是处理器地址空间,然后是存储器地址空间,这两个是不一样的概念。这边处理器地址空间,任何处理器地址的编址都是一个地址对应一个字节,一个字节8位。对于arm来说,1G的地址空间,每个地址对应了1个字节,而存储器地址则不同,存储器的一个地址不一定代表1字节。此处我们举个例子,对于32位宽的SDRAM,16Kb大小,那么编址从0到4095,每个地址代表了4字节,所以我们必须清楚的分清处理器地址和存储器地址的区别。
中断重映射
中断重映射目的是什么呢?这边举u-boot中的例子。U-boot是处理器上电后运行的一段程序,其中要使用中断,那这个中断必须要保存好,不能因为下载应用程序而损坏了u-boot的中断向量表,而我们知道处理器要读取7个异常向量都是从0地址开始的地方去读取,这边0地址是从处理器方开来的,它只管发出地址,接着等待数据返回,正因为这个特点,我们才能将flash,ram,rom等映射到0地址去,这样我们就能够实现同一个地址却可以读到不同的内容,从而实现u-boot和应用程序的向量表不同。