ARM中mmu的映射原理与配置步骤

在mmu启动之前;

    1.将ttb放置在cp15的c2的高18位

    2.在虚拟地址映射表基地址位置构建一级页表:ttb的开始的16K字节空间,可分2^16=4096个映射描述符(我的理解是有四种不同的映射,可分4096个映射方式)

    注:构建一级页表是对所选的映射进行设置,配置domain ap 等;

有关mmu的转换过程:(我的理解)

       1 虚拟地址中的前12位地址他可以反映本次描述符在一级页表中的索引(即ttb+前12位地址)

       2 对于页映射 一级页表的前12位存放二级页表的基址,二级页表中的相对应的描述有虚拟地址中的

  12-19位(即二级页表的基址+虚拟地址中的对应的二级页表的索引)

      对于段映射前12位是物理基址,后20位是一次映射的大小,也就是偏移量

       3 若要映射比1M(偏移量)大的数据,则要进行多次映射,一次1M;

         比如映射64M的数据,一次映射1M,则程序可以是:

           vaddr=0xb0000000 //虚拟地址

           paddr = 0x30000000; //物理地址

            while(vaddr<=0xb3e00000)

                {

                   *(ttb+(vaddr<<20))=(paddr&0xfff00000)|mmu_secdsc;

                   vaddr+= 100000;

                    paddr+= 100000;

                }

发布了24 篇原创文章 · 获赞 2 · 访问量 2万+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章