金牌会员
 
- 积分
- 1769
- 金钱
- 1769
- 注册时间
- 2015-6-11
- 在线时间
- 313 小时
|
发表于 2018-10-18 13:34:29
|
显示全部楼层
可以这么理解,但看文档中的实现
1.虚拟地址和实际地址并不一定是顺序的,而且不是一一对应的,如虚拟地址0x2000可能对应的物理地址是0x10000000,用户来说不需要知道物理地址,只需要从传入虚拟地址0x2000,内部就经过转换返回实际物理地址的数据。
2.另外文档说明的另一个功能是虚拟地址不仅可以保存变量,还可以保存数组,多个存储在FLASH中的数可以具有相同的Address,此时传入Address返回时就会将所有具有该地址的数据,得到数组如果一一对应,直接用物理地址效果更好。
假设FLASH数据:
物理地址0x10000000: {data = 0x0001, 虚拟地址Address = 0x5555}
物理地址0x10000010: {data = 0x0025, 虚拟地址Address = 0x5555}
使用虚拟地址0x5555,返回的就是[0x0001, 0x0025]这个数组,如果使用物理地址,是无法做到的,这才是为什么用虚拟地址的原因。 |
|