This discussion has been locked.
You can no longer post new replies to this discussion. If you have a question you can start a new discussion

armv8上面开着mmu怎么样才能是虚拟地址和物理地址一样的

大家好,armv8上面,我想开着mmu,但是虚拟地址和物理地址又是一样的,这个怎么样才能实现。

谢谢。

  • MMU的作用就是用来做虚拟地址和物理地址转换的,你开着还要保持一致,有什么特殊原因吗?

  • 这个在baremetal的arm代码里面一般都是配置PA等于VA的。 需要在page table的描述符上,把PA配置为和VA一样。

    在linux一般不这样做, linux kernel运行在EL1的VA是高地址.一般一个SOC的physical map,还不会有0xFFFF 0000 0000 0000 这么大的地址

  • 这个比较好实现,设置TLB描述表项的物理地址即可,具体方法如下:

    以1MB一级页表为例,设:

       unsigned int page_table[4096]={0}

       unsigned int va=0xC000 0000  <---虚拟地址

       unsigned int pa=0x4000 0000    <--物理地址

    设置

      page_table[va>>20].pa=pa & 0xfff0 0000

     page_table[va>>20].pa表示对应表项的pa字段

    表项的低20位为该TLB描述符属性,参照手册