主题 : 求配套光盘里u-boot中有关mmu的解释 复制链接 | 浏览器收藏 | 打印
级别: 新手上路
UID: 38262
精华: 0
发帖: 26
金钱: 130 两
威望: 26 点
综合积分: 52 分
注册时间: 2011-02-23
最后登录: 2020-10-29
楼主  发表于: 2011-07-06 11:03

 求配套光盘里u-boot中有关mmu的解释

#ifdef CONFIG_ENABLE_MMU

/*
* MMU Table for SMDK6400
*/

    /* form a first-level section entry */
.macro FL_SECTION_ENTRY base,ap,d,c,b
    .word (\base << 20) | (\ap << 10) | \
          (\d << 5) | (1<<4) | (\c << 3) | (\b << 2) | (1<<1)
.endm
.section .mmudata, "a"
    .align 14
    // the following alignment creates the mmu table at address 0x4000.
    .globl mmu_table
mmu_table:
    .set __base,0
    // 1:1 mapping for debugging
    .rept 0xA00
    FL_SECTION_ENTRY __base,3,0,0,0
    .set __base,__base+1
    .endr

    // access is not allowed.
    .rept 0xC00 - 0xA00
    .word 0x00000000
    .endr

    // 128MB for SDRAM 0xC0000000 -> 0x50000000
    .set __base, 0x500
    .rept 0xC80 - 0xC00
    FL_SECTION_ENTRY __base,3,0,1,1
    .set __base,__base+1
    .endr

    // access is not allowed.
    .rept 0x1000 - 0xc80
    .word 0x00000000
    .endr

#endif

以上是u-boot中,建立MMU table的代码,实在是没看明白怎么将0x5000_0000映射到0xc000_0000处的,而且也没看明白,这个表到底是怎么建立的,建立后,放在哪了?

请高人给解释一下,谢谢!

此外,板子上是256M的内存,这里只映射了128M,那另外128M怎么办呢?
^很多问题的背后都是简单的原因......
级别: 荣誉会员
UID: 34780
精华: 0
发帖: 1219
金钱: 6230 两
威望: 1246 点
综合积分: 2438 分
注册时间: 2010-12-21
最后登录: 2017-09-18
1楼  发表于: 2011-07-06 16:01
linux kernel会重建MMU table的