Linux内存初始化
1、启动阶段,uboot将kernel image和dtb拷贝到内存中,并将dtb的物理地址告诉kernel;
问题:kernel此时只知道dtb的物理地址,没有完成映射,如何访问
/*
 * PGD: 页全局目录,一级页表
 * PUD:页上级目录,二级页表
 * PMD:页中间目录,三级页表
 * PT:页表,四级页表
 */
void __init early_fixmap_init(void)
2、Fixed map机制:编译kernel时,在虚拟地址空间中预留一段fixed区域,其中的一部分虚拟地址空间,预留用来映射dtb所在的物理地址,
fixed map区域描述的一个例子:arch/arm64/include/asm/fixmap.h 中的 enum fixed_address 结构;

arm64:
default page size: CONFIG_ARM64_4K_PAGES
default va space size: CONFIG_ARM64_VA_BITS_39
default arm64 va bits: CONFIG_ARM64_VA_BITS=39
                    
                
                
            
        
浙公网安备 33010602011771号