99精品伊人亚洲|最近国产中文炮友|九草在线视频支援|AV网站大全最新|美女黄片免费观看|国产精品资源视频|精彩无码视频一区|91大神在线后入|伊人终合在线播放|久草综合久久中文

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

RISC-V Linux的頁表創(chuàng)建

麥辣雞腿堡 ? 來源:嵌入式Linux充電站 ? 作者:Vincent ? 2023-10-08 11:14 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

臨時頁表分析

MMU開啟前,需要建立好kernel、dtb、trampoline等頁表。以便MMU開啟后,并且在內(nèi)存管理模塊運行之前,kernel可以正常初始化,dtb可以正常地被解析。這部分頁表都是臨時頁表,最終的頁表在setup_vm_final()建立。

臨時頁表創(chuàng)建順序:

首先為fixmap創(chuàng)建早期的PGD、PMD,這時PGD使用early_pg_dir。然后對從kernel開始的前2M內(nèi)存建立二級頁表,此時PGD使用trampoline_pg_dir,為這2M建立的頁表也叫作superpage。再然后,對整個kernel創(chuàng)建二級頁表,此時PGD使用early_pg_dir。最后為dtb預(yù)留4M大小創(chuàng)建二級頁表。

頁表創(chuàng)建函數(shù)

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:權(quán)限,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:權(quán)限,PAGE_KERNEL_EXEC/PAGE_KERNEL表示當前是最后一級頁表,否則pa代表下一級頁表的物理地址

使用舉例

例如,將虛擬地址PAGE_OFFSET映射到物理地址pa,映射大小為4K,創(chuàng)建三級頁表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);

這樣創(chuàng)建后,MMU就會根據(jù)PAGE_OFFSET在PGD中找到PMD,然后再PMD中找到PTE,最后取出物理地址。

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學習之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • Linux
    +關(guān)注

    關(guān)注

    87

    文章

    11511

    瀏覽量

    213822
  • 函數(shù)
    +關(guān)注

    關(guān)注

    3

    文章

    4381

    瀏覽量

    64888
  • RISC
    +關(guān)注

    關(guān)注

    6

    文章

    482

    瀏覽量

    84996
收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評論

    相關(guān)推薦
    熱點推薦

    如何使用RISC-V創(chuàng)建自定義處理器

    采用RISC-V來替代其自定義體系結(jié)構(gòu)。該體系結(jié)構(gòu)吸引人的一個關(guān)鍵特征是,CPU開發(fā)人員可以在不犧牲為基本標準創(chuàng)建的工具和庫的適用性的情況下,使RISC-V功能適應(yīng)其需求。適應(yīng)的關(guān)鍵在于了解R
    的頭像 發(fā)表于 04-14 15:55 ?4518次閱讀
    如何使用<b class='flag-5'>RISC-V</b><b class='flag-5'>創(chuàng)建</b>自定義處理器

    RISC-V Linux開發(fā)環(huán)境腳本

    比較多的RISC-V SOC Linux開發(fā)環(huán)境使用CMake/Makefile,雖然也知道些怎么用,但有沒完整系統(tǒng)的這方面學習資料?如語法、腳本鏈接結(jié)構(gòu)等,可以分享下深入學習
    發(fā)表于 03-31 12:48

    RISC-V能否復制Linux 的成功?》

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

    基于risc-v架構(gòu)的芯片與linux系統(tǒng)兼容性討論

    一直對基于RISC-V架構(gòu)的芯片與Linux系統(tǒng)的兼容性比較感興趣,查了各種資料,眾說紛紜,在此整理一下學習內(nèi)容,以備后用。這個復雜而重要的話題,涉及多個方面的考量。下面談?wù)勎业膶W習總結(jié)
    發(fā)表于 11-30 17:20

    科普RISC-V生態(tài)架構(gòu)(認識RISC-V)

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

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

    RISC-V 手冊 一本開源指令集的指南 本書是由 RISC-V 設(shè)計者 DAVID PATTERSON等親自寫的書。書寫的非常精彩,和Risc-V一樣非常簡潔明了,沒有廢話,書本身也不厚,114
    發(fā)表于 04-22 18:04

    我了解的RISC-V

    幾十條指令。 RISC-V的規(guī)范文檔僅有145,而“特權(quán)架構(gòu)文檔”的篇幅也僅為91。 易于移植*nix 現(xiàn)代操作系統(tǒng)都做了特權(quán)級指令和用戶級指令的分離,特權(quán)指令只能操作系統(tǒng)調(diào)用,而用戶級指令才能
    發(fā)表于 03-19 10:52

    RISC-V 發(fā)展

    。RISC-V指令集有RV32I、RV32E、RV64I、RV64E、RV64I等等,RV代表RISC-V,32/64代32位或64位,I和E都是基本指令集,在I和E的基礎(chǔ)上,可以添加D(雙精度浮點擴展
    發(fā)表于 04-14 10:18

    RISC-V MCU開發(fā) (二):工程創(chuàng)建與管理

    RISC-V MCU開發(fā) (二):工程創(chuàng)建與管理MounRiver? Studio(MRS)內(nèi)置了GD、WCH等芯片廠家的RISC-V/ARM以及RISC-V通用指令集系列的芯片工程模
    發(fā)表于 11-26 15:36 ?20次下載
    <b class='flag-5'>RISC-V</b> MCU開發(fā) (二):工程<b class='flag-5'>創(chuàng)建</b>與管理

    RISC-VRISC-V AI的未來(特邀講座)

    主題演講:RISC-VRISC-V AI的未來(特邀講座)ppt分享
    發(fā)表于 07-14 17:15 ?17次下載

    RISC-V設(shè)計支持工具,支持RISC-V技術(shù)的基礎(chǔ)

    RISC-V設(shè)計支持工具,支持RISC-V技術(shù)的基礎(chǔ) ppt分享
    發(fā)表于 07-14 17:15 ?22次下載

    Arch Linux RISC-V 端口及相關(guān)作品簡介

    Arch Linux RISC-V 端口及相關(guān)作品簡介 演講ppt分享
    發(fā)表于 07-17 16:34 ?6次下載

    創(chuàng)建源碼分析RISC-V Linux

    創(chuàng)建源碼分析 RISC-V Linux啟動,經(jīng)歷了兩次頁
    的頭像 發(fā)表于 10-08 11:22 ?1155次閱讀

    專家力薦|《嵌入式系統(tǒng)原理與開發(fā)——基于RISC-VLinux系統(tǒng)》新書發(fā)售

    當前,嵌入式系統(tǒng)已成為智能設(shè)備的核心之一,RISC-V+Linux的開源力量為嵌入式系統(tǒng)注入強大的創(chuàng)新動力。作為中國RISC-V軟硬件生態(tài)領(lǐng)導者,賽昉科技與業(yè)界專家合作推出《嵌入式系統(tǒng)原理與開發(fā)
    的頭像 發(fā)表于 07-24 08:20 ?1106次閱讀
    專家力薦|《嵌入式系統(tǒng)原理與開發(fā)——基于<b class='flag-5'>RISC-V</b>和<b class='flag-5'>Linux</b>系統(tǒng)》新書發(fā)售

    SOPHGO RISC-V SoC Linux Kernel 社區(qū)郵件列表建立,歡迎加入開源社區(qū)為RISC-V生態(tài)完善添磚加瓦

    SOPHGO RISC-V SoC Linux Kernel 社區(qū)郵件列表建立,歡迎加入開源社區(qū)為RISC-V生態(tài)完善添磚加瓦
    的頭像 發(fā)表于 02-14 08:34 ?408次閱讀
    SOPHGO <b class='flag-5'>RISC-V</b> SoC <b class='flag-5'>Linux</b> Kernel 社區(qū)郵件列表建立,歡迎加入開源社區(qū)為<b class='flag-5'>RISC-V</b>生態(tài)完善添磚加瓦