您的位置 首页 芯闻

[ARM笔记]虚拟地址和物理地址的联系

对于内核物理内存映射区的虚拟内存,使用virt_to_phys()可以实现内核虚拟地址转化为物理地址,phys_to_virt()可以实现物理地址转化为内核虚拟地址。#define__virt

  关于内核物理内存映射区的虚拟内存,运用virt_to_phys()能够完成内核虚拟地址转化为物理地址,phys_to_virt()能够完成物理地址转化为内核虚拟地址

  #define __virt_to_phys(x) ((x) – PAGE_OFFSET + PHYS_OFFSET)

  static inline unsigned long virt_to_phys(void *x)

  {

  return __virt_to_phys((unsigned long)(x));

  }

  上面的转化进程的PaGE_OFFSET一般为3GB,而PHYS_OFFSET则界说为DRAM内存的基地址。因而,关于LDD6410电路板而言,并不是将0地址映射到3GB,而是将外接的SDRAM的首地址映射到3GB。

  与之对应的函数为phys_to_virt(),它将物理地址转化为内核虚地址,phys_to_virt()的界说如下:

  #define __phys_to_virt(x) ((x) – PHYS_OFFSET + PAGE_OFFSET)

  static inline void *phys_to_virt(unsigned long x)

  {

  return (void *)(__phys_to_virt((unsigned long)(x)));

  }

  留意:上述virt_to_phys()和phys_to_virt()办法仅适用于896MB以下的低端内存,高端内存的虚拟地址和物理内存地址之间不存在如此简略的换算联系。

声明:本文内容来自网络转载或用户投稿,文章版权归原作者和原出处所有。文中观点,不代表本站立场。若有侵权请联系本站删除(kf@86ic.com)https://www.86ic.net/news/xinwen/235171.html

为您推荐

联系我们

联系我们

在线咨询: QQ交谈

邮箱: kf@86ic.com

关注微信
微信扫一扫关注我们

微信扫一扫关注我们

返回顶部