吴忠躺衫网络科技有限公司

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

    文章

    11345

    瀏覽量

    210409
  • 函數
    +關注

    關注

    3

    文章

    4346

    瀏覽量

    62978
  • RISC
    +關注

    關注

    6

    文章

    465

    瀏覽量

    83876
收藏 人收藏

    評論

    相關推薦

    如何使用RISC-V創建自定義處理器

    采用RISC-V來替代其自定義體系結構。該體系結構吸引人的一個關鍵特征是,CPU開發人員可以在不犧牲為基本標準創建的工具和庫的適用性的情況下,使RISC-V功能適應其需求。適應的關鍵在于了解R
    的頭像 發表于 04-14 15:55 ?4206次閱讀
    如何使用<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能否復制Linux 的成功?》

    的產品,Linux成為開源軟件發展的基石。 這種成功是否可以復制到開源硬件上呢?RISC-V這樣的指令集架構(ISA)是否也可以像Linux內核作為開源軟件的基礎一樣,成為開源硬件發展的基石呢? 這個
    發表于 11-26 20:20

    基于risc-v架構的芯片與linux系統兼容性討論

    一直對基于RISC-V架構的芯片與Linux系統的兼容性比較感興趣,查了各種資料,眾說紛紜,在此整理一下學習內容,以備后用。這個復雜而重要的話題,涉及多個方面的考量。下面談談我的學習總結
    發表于 11-30 17:20

    科普RISC-V生態架構(認識RISC-V)

    RISC-V,逐步完成全線產品遷移到RISC-V定制架構;MicroSemi提供基于Risc-V+Linux+CNN加速器的AI解決方案;印度***則大力資助基于RISC-V的處理器項
    發表于 08-02 11:50

    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 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 ?869次閱讀

    專家力薦|《嵌入式系統原理與開發——基于RISC-VLinux系統》新書發售

    當前,嵌入式系統已成為智能設備的核心之一,RISC-V+Linux的開源力量為嵌入式系統注入強大的創新動力。作為中國RISC-V軟硬件生態領導者,賽昉科技與業界專家合作推出《嵌入式系統原理與開發
    的頭像 發表于 07-24 08:20 ?692次閱讀
    專家力薦|《嵌入式系統原理與開發——基于<b class='flag-5'>RISC-V</b>和<b class='flag-5'>Linux</b>系統》新書發售
    台湾省| 百家乐网上公式| 全讯网赢足一世| 百家乐官网赌场论坛在线| 百家乐真人博彩的玩法技巧和规则 | 金盾百家乐网址| 百家乐官网全透明牌靴| 百家乐赌场走势图| bet365开户| 百家乐四式正反路| 深州市| 四方百家乐的玩法技巧和规则| 澳门1百家乐官网网| 二八杠下载| 24山向内什么山向最好| 闽清县| 百家乐反缆公式| 真人百家乐官网游戏网址| 大发888手机注册送钱| 百家乐庄闲机率| 百家乐官网玩法秘决| 真人百家乐官网平台下载| 大发888常见断续| 百家乐娱乐城博彩| 玩百家乐官网怎么才能赢| 推二八杠技巧| 百家乐如何投注技巧| 免佣百家乐官网赌场优势| 大富豪棋牌游戏中心| 免佣百家乐规则| 百家乐官网保单机作弊| 旺苍县| 贵族百家乐的玩法技巧和规则| 新锦江百家乐官网的玩法技巧和规则| 从江县| 老虎机加分器| 百家乐园游戏庄闲| 澳门百家乐官网下路写法| 娱乐城注册送体验金| 大连百家乐官网食品| 财神百家乐官网娱乐城|