徐长远 发表于 2013-3-1 21:08:29

关于MMU映射 建表的问题

本帖最后由 徐长远 于 2013-3-1 21:12 编辑

#define MMU_FULL_ACCESS   (3 << 10)   /* 访问权限 */
#define MMU_DOMAIN          (0 << 5)    /* 属于哪个域 */
#define MMU_SPECIAL         (1 << 4)    /* 必须是1 */
#define MMU_CACHEABLE       (1 << 3)    /* cacheable */
#define MMU_BUFFERABLE      (1 << 2)    /* bufferable */
#define MMU_SECTION         (2)         /* 表示这是段描述符 */
#define MMU_SECDESC         (MMU_FULL_ACCESS | MMU_DOMAIN | MMU_SPECIAL | \
                           MMU_SECTION)
#define MMU_SECDESC_WB      (MMU_FULL_ACCESS | MMU_DOMAIN | MMU_SPECIAL | \
                           MMU_CACHEABLE | MMU_BUFFERABLE | MMU_SECTION)
#define MMU_SECTION_SIZE    0x00100000

    unsigned long virtuladdr, physicaladdr;
    unsigned long *mmu_tlb_base = (unsigned long *)0x30000000;
   
    /*
   * Steppingstone的起始物理地址为0,第一部分程序的起始运行地址也是0,
   * 为了在开启MMU后仍能运行第一部分的程
   * 将0~1M的虚拟地址映射到同样的物理地址
   */
    virtuladdr = 0;
    physicaladdr = 0;
    *(mmu_tlb_base + (virtuladdr >> 20)) = (physicaladdr & 0xFFF00000) | \
                                          MMU_SECDESC_WB;


其中最后一句代码什么意思?virtuladdr >> 20 位为0? physicaladdr & 0xFFF00000 相与为0?最后一或赋值又是多少?

embedsky_lhh 发表于 2013-3-2 11:25:48

建议你先看下MMU的特性及设置方法,韦东山好像有本书讲的很详细,你可以到网上下个PDF的看看

徐长远 发表于 2013-3-2 12:47:15

embedsky_lhh 发表于 2013-3-2 11:25 static/image/common/back.gif
建议你先看下MMU的特性及设置方法,韦东山好像有本书讲的很详细,你可以到网上下个PDF的看看

亲,要不你就来解释下?然后我们深讨下?

wf1205 发表于 2014-6-25 22:41:36

/*
   * Steppingstone的起始物理地址为0,第一部分程序的起始运行地址也是0,
   * 为了在开启MMU后仍能运行第一部分的程
   * 将0~1M的虚拟地址映射到同样的物理地址
   */
页: [1]
查看完整版本: 关于MMU映射 建表的问题