*pTT++=attr |(((paddrStart>>20)+i)<<20);将物理起始地址的高12位+index做为Translation Table中的section base address,再或上内存权限控制位,而后加上pTT就是最终的虚拟地址,再进入下个循环对下一个块进行映射。内存权限控制位在这里是RW_CB,查mmu.h得知
#define RW_CB (AP_RW|DOMAIN0|CB|DESC_SEC) //计算得RW_CB:1100 0001 1110,对应下图中的低12位(AP2位,Domain4位,Domain的值对应协处理器CP15中Control Register3:DOMAIN ACCESS CONTROL REGISTER 16个区域中的一个 ),这里AP是11,表明对supervision和user都是可读可写。Domain是0000,对应Control Register3中的file0(区域0),file0中的两位决定了是否对该内存区域进行访问权限的检查。
C位(write-through (WT)模式)和B位(write-back (WB)模式)不是不能同时为1吗,为什么这里都设置为1???