对“MMU映射地址一”里边的程序
*(mmu_tlb_base + (virtuladdr >> 20)) = (physicaladdr & 0xFFF00000) |
我自己理解为:
但是有个问题,跟0x30000000有什么关系呢?
由于上面的程序是要把也表放在SDRAM里,并且是从0x30000000处开端放起;第二便是为什么只要virtuladdr>>20,而没有完好的virtual地址?由于地址是1M对齐,即后20位全为零,所以只看高12位就行,所以只要virtuladdr>>20也能起点效果;
那么我有个问题,便是把也表放在那了,那它是什么时分去用他们呢,怎样用的他们呢,如同跟前两篇博客讲的不太相同?
哦,相同,由于树立(一级)页表(地址在0x30000000)后,首先要告知MMU页表坐落0x30000000处;
第二,当CPU宣布一个虚拟地址时,要被MMU分红两部分,榜首部分便是段基址,第二部分是地址偏移量,然后MMU去页表地址找页表,然后主动经过一系列转换规则,来找到对应物理地址。