天嵌 ARM开发社区

 找回密码
 注册
查看: 4479|回复: 3

关于MMU映射 建表的问题

[复制链接]
徐长远 发表于 2013-3-1 21:08:29 | 显示全部楼层 |阅读模式
本帖最后由 徐长远 于 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
建议你先看下MMU的特性及设置方法,韦东山好像有本书讲的很详细,你可以到网上下个PDF的看看

亲,要不你就来解释下?然后我们深讨下?
wf1205 发表于 2014-6-25 22:41:36 | 显示全部楼层
/*
     * Steppingstone的起始物理地址为0,第一部分程序的起始运行地址也是0,
     * 为了在开启MMU后仍能运行第一部分的程
     * 将0~1M的虚拟地址映射到同样的物理地址
     */
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

i.MX8系列ARM cortex A53 M4 工控板上一条 /1 下一条

Archiver|手机版|小黑屋|天嵌 嵌入式开发社区 ( 粤ICP备11094220号 )

GMT+8, 2024-3-29 15:50 , Processed in 1.062500 second(s), 18 queries .

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表