1. linux debugfs 使用

    四 23 五月 2024 | tags: Linux

    内核配置

    确保内核配置选项中启用了debugfs支持(CONFIG_DEBUG_FS=y)并重新编译内核

    挂载debugfs文件系统

    mount -t debugfs none /sys/kernel/debug
    

    kernel_page_tables

    确保内核配置选项中启用了如 …

    read more

    comments

  2. init_pg_dir页表

    四 23 五月 2024 | tags: Linux

    页表分配和释放

    init_pg_dir页表的主要的作用就是在boot阶段,能够把kernel image的编译时VA(也就是0xffffxxxxxxxxxxxx,但是在使能了CONFIG_RANDOMIZE_BASE会加一个offset)映射成u-boot加载时的PA。 所以这个页表的大小就是根据kernel image所占用空间来决定。

    #define EARLY_PAGES(vstart, vend, add) ( 1                      /* PGDIR …
    read more

    comments

  3. FDT的区域的Map过程

    三 22 五月 2024 | tags: Linux

    u-boot或者uefi启动Linux的时候,会把device tree 所在的地址通过x0寄存器传给Linux。 kernel在boot阶段会使用到x0寄存器,所以在primary_entry -> preserve_boot_args 会把device tree的地址保存到x21寄存器:

    SYM_CODE_START_LOCAL(preserve_boot_args)
            mov     x21, x0                         // x21=FDT
    

    1:1 mapping阶段

    在init_idmap_pg_dir阶段,会把这个x21地址所对应的物理地址mapping到kernel结尾之后2M对的的地方,这个地方其实不是1:1的映射 …

    read more

    comments