0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

RISC-V Linux的页表创建

麦辣鸡腿堡 来源:嵌入式Linux充电站 作者:Vincent 2023-10-08 11:14 次阅读

临时页表分析

MMU开启前,需要建立好kernel、dtb、trampoline等页表。以便MMU开启后,并且在内存管理模块运行之前,kernel可以正常初始化,dtb可以正常地被解析。这部分页表都是临时页表,最终的页表在setup_vm_final()建立。

临时页表创建顺序:

首先为fixmap创建早期的PGD、PMD,这时PGD使用early_pg_dir。然后对从kernel开始的前2M内存建立二级页表,此时PGD使用trampoline_pg_dir,为这2M建立的页表也叫作superpage。再然后,对整个kernel创建二级页表,此时PGD使用early_pg_dir。最后为dtb预留4M大小创建二级页表。

页表创建函数

create_pgd_mapping()

void __init create_pgd_mapping(pgd_t *pgdp,
          uintptr_t va, phys_addr_t pa,
          phys_addr_t sz, pgprot_t prot)

pgdp:PGD页表

va:虚拟地址

pa:物理地址

sz:映射大小,PGDIR_SIZE或PMD_SIZE或PTE_SIZE

prot:PAGE_KERNEL_EXEC/PAGE_KERNEL表示当前是最后一级页表,否则pa代表下一级页表的物理地址

create_pmd_mapping()

static void __init create_pmd_mapping(pmd_t *pmdp,
          uintptr_t va, phys_addr_t pa,
          phys_addr_t sz, pgprot_t prot)

pmdp:PMD页表

va:虚拟地址

pa:物理地址

sz:映射大小,PMD_SIZE或PAGE_SIZE

prot:权限,PAGE_KERNEL_EXEC/PAGE_KERNEL表示当前是最后一级页表,否则pa代表下一级页表的物理地址

create_pte_mapping()

static void __init create_pte_mapping(pte_t *ptep,
          uintptr_t va, phys_addr_t pa,
          phys_addr_t sz, pgprot_t prot)

ptep:PTE页表

va:虚拟地址

pa:物理地址

sz:映射大小,PAGE_SIZE

prot:权限,PAGE_KERNEL_EXEC/PAGE_KERNEL表示当前是最后一级页表,否则pa代表下一级页表的物理地址

使用举例

例如,将虚拟地址PAGE_OFFSET映射到物理地址pa,映射大小为4K,创建三级页表PGD、PMD和PTE:

create_pgd_mapping(early_pg_dir,PAGE_OFFSET,
                   (uintptr_t)early_pmd,PGDIR_SIZE,PAGE_TABLE);
create_pmd_mapping(early_pmd,PAGE_OFFSET,
                   (uintptr_t)early_pte,PGDIR_SIZE,PAGE_TABLE);
create_pte_mapping(early_pte,PAGE_OFFSET,
                   (uintptr_t)pa,PAGE_SIZE,PAGE_KERNEL_EXEC);

这样创建后,MMU就会根据PAGE_OFFSET在PGD中找到PMD,然后再PMD中找到PTE,最后取出物理地址。

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • Linux
    +关注

    关注

    87

    文章

    11222

    浏览量

    208890
  • 函数
    +关注

    关注

    3

    文章

    4304

    浏览量

    62418
  • RISC
    +关注

    关注

    6

    文章

    461

    浏览量

    83651
收藏 人收藏

    评论

    相关推荐

    如何使用RISC-V创建自定义处理器

    采用RISC-V来替代其自定义体系结构。该体系结构吸引人的一个关键特征是,CPU开发人员可以在不牺牲为基本标准创建的工具和库的适用性的情况下,使RISC-V功能适应其需求。适应的关键在于了解R
    的头像 发表于 04-14 15:55 4103次阅读
    如何使用<b class='flag-5'>RISC-V</b><b class='flag-5'>创建</b>自定义处理器

    RISC-V Linux开发环境脚本

    比较多的RISC-V SOC Linux开发环境使用CMake/Makefile,虽然也知道些怎么用,但有没完整系统的这方面学习资料?如语法、脚本链接结构等,可以分享下深入学习
    发表于 03-31 12:48

    risc-v的发展历史

    RISC-V的发展历史可以追溯到2006年左右,当时David Patterson和其他研究者开始探索创建一个开放和可扩展的指令集架构(ISA)。以下是RISC-V发展的主要里程碑: 一、起源与初步
    发表于 07-29 17:20

    科普RISC-V生态架构(认识RISC-V)

    RISC-V,逐步完成全线产品迁移到RISC-V定制架构;MicroSemi提供基于Risc-V+Linux+CNN加速器的AI解决方案;印度***则大力资助基于RISC-V的处理器项
    发表于 08-02 11:50

    RISC-V中***会子活动之一:基于RISC-V的鸿蒙开发板设计

    `一、Workshop介绍 首届RISC-V中***会(RISC-V World Conference China)将于6月21日在上海科技大学盛大开幕。 本次峰会预计线下超过1000人、线上
    发表于 06-03 16:26

    RISC-V-Reader-Chinese-v2p1 RISC-V手册(中文) RISC-V开源指令集的指南

    RISC-V 手册 一本开源指令集的指南 本书是由 RISC-V 设计者 DAVID PATTERSON等亲自写的书。书写的非常精彩,和Risc-V一样非常简洁明了,没有废话,书本身也不厚,114
    发表于 04-22 18:04

    我了解的RISC-V

    几十条指令。 RISC-V的规范文档仅有145,而“特权架构文档”的篇幅也仅为91。 易于移植*nix 现代操作系统都做了特权级指令和用户级指令的分离,特权指令只能操作系统调用,而用户级指令才能
    发表于 03-19 10:52

    RISC-V 发展

    RISC-V指令集有RV32I、RV32E、RV64I、RV64E、RV64I等等,RV代表RISC-V,32/64代32位或64位,I和E都是基本指令集,在I和E的基础上,可以添加D(双精度浮点扩展
    发表于 04-14 10:18

    RISC-V规范的演进 RISC-V何时爆发?

    RISC-V的关注度越来越高,开源的理念也正在被越来越多的开发者和公司接受。对于尚不成熟的RISC-V而言,无论是规范和技术的演进还是生态的建设,还有人才和专利都还有不小挑战。2021年RISC-V
    的头像 发表于 02-11 10:10 3141次阅读

    RISC-V MCU开发 (二):工程创建与管理

    RISC-V MCU开发 (二):工程创建与管理MounRiver® Studio(MRS)内置了GD、WCH等芯片厂家的RISC-V/ARM以及RISC-V通用指令集系列的芯片工程模
    发表于 11-26 15:36 20次下载
    <b class='flag-5'>RISC-V</b> MCU开发 (二):工程<b class='flag-5'>创建</b>与管理

    RISC-VRISC-V AI的未来(特邀讲座)

    主题演讲:RISC-VRISC-V AI的未来(特邀讲座)ppt分享
    发表于 07-14 17:15 16次下载

    RISC-V设计支持工具,支持RISC-V技术的基础

    RISC-V设计支持工具,支持RISC-V技术的基础 ppt分享
    发表于 07-14 17:15 12次下载

    Arch Linux RISC-V 端口及相关作品简介

    Arch Linux RISC-V 端口及相关作品简介 演讲ppt分享
    发表于 07-17 16:34 6次下载

    创建源码分析RISC-V Linux

    创建源码分析 RISC-V Linux启动,经历了两次页
    的头像 发表于 10-08 11:22 768次阅读

    专家力荐|《嵌入式系统原理与开发——基于RISC-VLinux系统》新书发售

    当前,嵌入式系统已成为智能设备的核心之一,RISC-V+Linux的开源力量为嵌入式系统注入强大的创新动力。作为中国RISC-V软硬件生态领导者,赛昉科技与业界专家合作推出《嵌入式系统原理与开发
    的头像 发表于 07-24 08:20 510次阅读
    专家力荐|《嵌入式系统原理与开发——基于<b class='flag-5'>RISC-V</b>和<b class='flag-5'>Linux</b>系统》新书发售