1 ARMv8存儲管理
1.1 Aarch64 Linux中的內(nèi)存布局
ARMv8架構(gòu)可以支持48位虛擬地址,并配置成4級頁表(4K頁),或者3級頁表(64K頁)。而本Linux系統(tǒng)只使用39位虛擬地址(512G內(nèi)核,512G用戶),配置成3級頁表(4K頁)或者2級頁表(64K頁)
用戶空間的地址63:39位都置零,內(nèi)核空間地址63:39都置一,虛擬地址的第63位可以用來選擇TTBRx。swapper_pg_dir只包含內(nèi)核全局映射,用戶的pgd包含用戶(非全局)映射。swapper_pg_dir地址在TTBR1中,不會(huì)寫入TTBR0中。
AArch64Linux內(nèi)存布局:
Start End Size Use
--------------------------------------------------------------------------------------------------
0000000000000000 0000007fffffffff 512GB user
ffffff8000000000 ffffffbbfffcffff ~240GB vmalloc
ffffffbbfffd0000 ffffffbcfffdffff 64KB [guardpage]
ffffffbbfffe0000 ffffffbcfffeffff 64KB PCII/O space
ffffffbbffff0000 ffffffbcffffffff 64KB [guard page]
ffffffbc00000000 ffffffbdffffffff 8GB vmemmap
ffffffbe00000000 ffffffbffbffffff ~8GB [guard,future vmmemap]
ffffffbffc000000 ffffffbfffffffff 64MB modules
ffffffc000000000 ffffffffffffffff 256GB memory
1.2 AArch64的虛擬地址格式
1.2.1 4K頁時(shí)的虛擬地址
1.2.2 64K頁時(shí)的虛擬地址
2 head.S頁表建立過程分析
2.1 頁表建立函數(shù)__create_page_tables
該函數(shù)用于在內(nèi)核啟動(dòng)時(shí),為FDT(設(shè)備樹)、內(nèi)核鏡像創(chuàng)建啟動(dòng)所必須的頁表。等內(nèi)核正常運(yùn)行后,還需運(yùn)行create_mapping為所有的物理內(nèi)存創(chuàng)建頁表,這將覆蓋__create_page_tables所創(chuàng)建的頁表。
內(nèi)核開始運(yùn)行時(shí)創(chuàng)建頁表源文件:arm64/kernel/head.Sline345
/*
* Setup the initial page tables. We only setup the barest amount which is
* required to get the kernel running. The following sections are required:
* -identity mapping to enable the MMU (low address, TTBR0)
* -first few MB of the kernel linear mapping to jump to once the MMU has
* been enabled, including the FDT blob (TTBR1)
*/
__create_page_tables:
pgtbl x25, x26,x24 //idmap_pg_dir and swapper_pg_dir addresses
/*
* 清空新建的兩個(gè)頁表TTBR0,TTBR1
*/
mov x0,x25
add x6,x26, #SWAPPER_DIR_SIZE
1: stp xzr,xzr, [x0], #16
stp xzr,xzr, [x0], #16
stp xzr,xzr, [x0], #16
stp xzr,xzr, [x0], #16
cmp x0,x6
b.lo 1b
ldr x7,=MM_MMUFLAGS
/*
* Create the identity mapping.
*/
add x0, x25,#PAGE_SIZE // sectiontable address
adr x3, __turn_mmu_on // virtual/physical address
create_pgd_entry x25, x0, x3, x5, x6 //展開見1.1.3
create_block_map x0, x7, x3, x5, x5, idmap=1
/*
* Map the kernel image (starting withPHYS_OFFSET).
*/
add x0,x26, #PAGE_SIZE //section table address
mov x5,#PAGE_OFFSET
create_pgd_entry x26, x0, x5, x3, x6
ldr x6,=KERNEL_END - 1
mov x3,x24 // physoffset
create_block_map x0, x7, x3, x5, x6
/*
* Map the FDT blob (maximum 2MB; must bewithin 512MB of
* PHYS_OFFSET).
*/
mov x3,x21 // FDTphys address
and x3,x3, #~((1 << 21) - 1) // 2MBaligned
mov x6,#PAGE_OFFSET
sub x5,x3, x24 //subtract PHYS_OFFSET
tst x5,#~((1 << 29) - 1) //within 512MB?
csel x21,xzr, x21, ne // zero the FDTpointer
b.ne 1f
add x5,x5, x6 // __va(FDTblob)
add x6,x5, #1 << 21 // 2MB forthe FDT blob
sub x6,x6, #1 //inclusive range
create_block_map x0, x7, x3, x5, x6
1:
ret
ENDPROC(__create_page_tables)
2.1.1 pgtbl x25, x26, x24分析
pgtbl是個(gè)宏,定義如下:
arm64/kernel/head.S line55
.macro pgtbl,ttb0, ttb1, phys
add ttb1,phys, #TEXT_OFFSET - SWAPPER_DIR_SIZE
sub ttb0,ttb1, #IDMAP_DIR_SIZE
.endm
pgtbl x25,x26, x24 //展開后如下
add x26,x24, #TEXT_OFFSET -SWAPPER_DIR_SIZE
sub x25,x26,#IDMAP_DIR_SIZE
其中各變量定義如下:
#defineSWAPPER_DIR_SIZE (3 * PAGE_SIZE)
#defineIDMAP_DIR_SIZE (2 *PAGE_SIZE)
說明:
1、關(guān)于TTBR0、TTBR1的介紹見ARM ARM 手冊的Page B4-1708
2、x25中存TTBR0(TTBR0 holds the base address of translation table 0)的地址;
3、X26存TTBR1(TTBR1 holds the base address of translation table 1)地址;
4、X24 存PHYS_OFFSET,/* PHYS_OFFSET- the physical address of the start of memory. */
#definePHYS_OFFSET ({ memstart_addr; })
5、TEXT_OFFSET是Bootloader啟動(dòng)時(shí)傳進(jìn)來的參數(shù),是內(nèi)核Image加載時(shí)相對于RAM起始地址的偏移量
6、PAGE_OFFSEST:the virtual address of the start of the kernel image.
圖1 pgtbl宏分析
2.1.2 MM_MMUFLAGS解釋
在文件arm64/kernel/head.S line71:
/*
* Initial memory map attributes.
*/
#ifndefCONFIG_SMP
#definePTE_FLAGS PTE_TYPE_PAGE | PTE_AF
#definePMD_FLAGS PMD_TYPE_SECT | PMD_SECT_AF
#else
#definePTE_FLAGS PTE_TYPE_PAGE | PTE_AF |PTE_SHARED
#definePMD_FLAGS PMD_TYPE_SECT | PMD_SECT_AF| PMD_SECT_S
#endif
#ifdefCONFIG_ARM64_64K_PAGES
#defineMM_MMUFLAGS PTE_ATTRINDX(MT_NORMAL) |PTE_FLAGS
#defineIO_MMUFLAGS PTE_ATTRINDX(MT_DEVICE_nGnRE)| PTE_XN | PTE_FLAGS
#else
#defineMM_MMUFLAGS PMD_ATTRINDX(MT_NORMAL) |PMD_FLAGS
#defineIO_MMUFLAGS PMD_ATTRINDX(MT_DEVICE_nGnRE)| PMD_SECT_XN | PMD_FLAGS
#endif
根據(jù)以上宏定義能明確,MM_MMUFLAGS就是根據(jù)你編譯內(nèi)核時(shí)選定的頁大?。?4K or 4K),設(shè)置MMU。
2.1.3 create_pgd_entry/create_block_map宏解釋
1、create_pgd_entry
/*
* Macro to populate the PGD for thecorresponding block entry in the next
* level (tbl) for the given virtual address.
*
* Preserves: pgd,tbl, virt
* Corrupts: tmp1,tmp2
*/
.macro create_pgd_entry,pgd, tbl, virt, tmp1, tmp2
lsr tmp1,virt, #PGDIR_SHIFT
上一篇:關(guān)于ARMv8另外幾個(gè)問題
下一篇:單片機(jī)p0口的工作原理解析
推薦閱讀
史海拾趣
在電子行業(yè)快速發(fā)展的背景下,Aromat Corp始終堅(jiān)持創(chuàng)新引領(lǐng)的發(fā)展理念。公司不斷投入研發(fā)資源,推出了一系列具有創(chuàng)新性的電子產(chǎn)品。這些產(chǎn)品不僅滿足了市場的多樣化需求,還為公司帶來了可觀的利潤增長。同時(shí),Aromat Corp還注重知識產(chǎn)權(quán)保護(hù),積極申請專利,保護(hù)公司的創(chuàng)新成果。
為了進(jìn)一步提升公司的競爭力,Aromat Corp開始實(shí)施國際化戰(zhàn)略。公司積極拓展海外市場,通過設(shè)立海外分支機(jī)構(gòu)、與當(dāng)?shù)仄髽I(yè)合作等方式,將產(chǎn)品推向全球。同時(shí),Aromat Corp還加強(qiáng)了與國際同行的交流與合作,學(xué)習(xí)借鑒先進(jìn)的經(jīng)驗(yàn)和技術(shù),不斷提升自身的綜合實(shí)力。
DLP精工科技公司,一直秉承“品質(zhì)至上”的經(jīng)營理念,在DLP技術(shù)產(chǎn)品的設(shè)計(jì)和制造過程中嚴(yán)格把控品質(zhì)。公司擁有一支專業(yè)的研發(fā)團(tuán)隊(duì)和先進(jìn)的生產(chǎn)設(shè)備,確保每一件產(chǎn)品都符合高標(biāo)準(zhǔn)的質(zhì)量要求。通過不斷的技術(shù)創(chuàng)新和產(chǎn)品升級,DLP精工科技在電子行業(yè)中樹立了良好的品牌形象,贏得了消費(fèi)者的信賴和認(rèn)可。
在物聯(lián)網(wǎng)(IoT)和智能制造領(lǐng)域,F(xiàn)ujitsu America也展現(xiàn)出了卓越的創(chuàng)新能力和市場洞察力。公司通過與PTC等合作伙伴的緊密合作,將物聯(lián)網(wǎng)技術(shù)和智能制造技術(shù)相結(jié)合,推出了一系列面向制造業(yè)的智慧工廠解決方案。這些解決方案不僅提高了生產(chǎn)效率和產(chǎn)品質(zhì)量,還降低了生產(chǎn)成本和能源消耗,為制造業(yè)的數(shù)字化轉(zhuǎn)型和可持續(xù)發(fā)展提供了有力支持。Fujitsu America的智慧工廠解決方案在北美市場得到了廣泛應(yīng)用和認(rèn)可,為公司贏得了良好的市場口碑和品牌形象。
“Global Memory Tech”公司在HMC技術(shù)的研發(fā)過程中,深刻認(rèn)識到國際合作的重要性。該公司積極與全球各地的科研機(jī)構(gòu)、高校和行業(yè)標(biāo)準(zhǔn)組織合作,共同推動(dòng)HMC技術(shù)的標(biāo)準(zhǔn)化進(jìn)程。通過不懈努力,Global Memory Tech成功推動(dòng)了HMC相關(guān)標(biāo)準(zhǔn)的制定,為HMC技術(shù)的廣泛應(yīng)用奠定了堅(jiān)實(shí)基礎(chǔ)。同時(shí),該公司還通過技術(shù)授權(quán)和合作生產(chǎn)的方式,與多家國際企業(yè)建立了緊密的合作關(guān)系。
VS2005 C++基于對話框的智能設(shè)備程序,引入頭文件 如題: VS2005里,用VC++建立基于對話框的智能設(shè)備程序,在包含頭文件后,給對話框類增加CFtpConnection* m_pFTPConnection;成員變量,運(yùn)行時(shí)出現(xiàn)如下錯(cuò)誤: 1>------ Build started: Project: test, Configuration: Debug Pocket PC ...… 查看全部問答∨ |
|
請教usb主控芯片給usb設(shè)備寫驅(qū)動(dòng)程序的問題?知道的幫幫忙哦! 要做一個(gè)實(shí)時(shí)數(shù)據(jù)采集系統(tǒng),因?yàn)槭且ㄟ^無線方式將采來的數(shù)據(jù)(速率是8Mbits/s)傳給電腦,讓電腦進(jìn)行處理,同時(shí)電腦還可以給這個(gè)系統(tǒng)傳一些控制命令。 由于是無線方式的,同時(shí)數(shù)據(jù)量也比較大,所以就想用無線網(wǎng)卡(支持wifi協(xié)議的)來實(shí)現(xiàn),現(xiàn)在 ...… 查看全部問答∨ |
|
Smart Grid and Renewable Energy《智能電網(wǎng)與可再生能源》期刊導(dǎo)讀 Smart Grid and Renewable Energy《智能電網(wǎng)與可再生能源》期刊導(dǎo)讀 ISSN: 2151-481X (Print) 2151-4844 (Online).《智能電網(wǎng)與可再生能源》SGRE免費(fèi)下載網(wǎng)址: http://www.scirp.org/journal/sgre. Table of Contents(Vol.02 No.02, May ...… 查看全部問答∨ |
|
最近公司招了很多人,不僅僅硬件在招,軟件也在招人,實(shí)際上,我是非常羨慕軟件的面試人員的,因?yàn)樗麄冇泄P試題。不過是自己出的也好,網(wǎng)上搜的也好,總之軟件的很多知識,是可以通過一份試卷來先考察一下的。我經(jīng)??吹杰浖娜税亚舐氄邘У綍?huì)議室 ...… 查看全部問答∨ |
|
曬WEBENCH設(shè)計(jì)的過程+P10R-005(S)熱電耦傳感器設(shè)計(jì) 本帖最后由 ltbytyn 于 2014-8-16 11:22 編輯 P10R-005(S)熱電耦傳感器設(shè)計(jì) 第一步:打開TI官網(wǎng),進(jìn)入WEBENCH的“傳感器”選項(xiàng)。選擇“熱耦合傳感器”,點(diǎn)擊“開始設(shè)計(jì)”。 第二步:選擇熱電偶傳感器。 首先選擇熱電偶溫度范圍和接合點(diǎn)溫度 ...… 查看全部問答∨ |
最近想利用stm32f103rb的板子做個(gè)u盤,以此來加強(qiáng)對usb和fatfs 格式的理解。 用的是外接的一個(gè)spi flash。 網(wǎng)上資料是很多啦,但大多用的是zet6的,用rbt6的話都提示內(nèi)存不夠 如圖: 附件是所用例程,請哪位大神幫忙看看,怎么改才可在RBT6中運(yùn) ...… 查看全部問答∨ |
設(shè)計(jì)資源 培訓(xùn) 開發(fā)板 精華推薦
- Microchip 升級數(shù)字信號控制器(DSC)產(chǎn)品線 推出PWM 分辨率和 ADC 速度業(yè)界領(lǐng)先的新器件
- 意法半導(dǎo)體STM32MP23x:突破成本限制的工業(yè)AI應(yīng)用核心
- 意法半導(dǎo)體推出用于匹配遠(yuǎn)距離無線微控制器STM32WL33的集成的匹配濾波芯片
- ESP32開發(fā)板連接TFT顯示屏ST7789跳坑記
- 如何讓ESP32支持analogWrite函數(shù)
- LGVL配合FreeType為可變字體設(shè)置字重-ESP32篇
- 使用樹莓派進(jìn)行 ESP32 Jtag 調(diào)試
- ESP32怎么在SPIFFS里面存儲html,css,js文件,以及網(wǎng)頁和arduino的通訊
- ESP32 freeRTOS使用測試
- 蘋果被判侵犯3G專利,需向西班牙公司TOT賠償1.1億美元
- 從設(shè)計(jì)概念到 FPGA 原型僅需數(shù)分鐘,印度 InCore 完成 SoC Generator 平臺硅驗(yàn)證
- 消息稱因難尋客戶,三星推遲美國芯片工廠的完工時(shí)間
- BOE(京東方)聯(lián)合榮耀打造榮耀Magic V5 以領(lǐng)先LTPO技術(shù)打造行業(yè)新標(biāo)桿
- 華為ADS 4發(fā)布:多傳感器融合,提升自動(dòng)駕駛安全性
- 曉鶯說:線控制動(dòng)變革風(fēng)云
- 大眾商用車推出AirConsole 將其信息娛樂系統(tǒng)擴(kuò)展為游戲機(jī)
- 福州大學(xué)發(fā)明新機(jī)器視覺傳感器 可使機(jī)器人對極端光照做出超快反應(yīng)
- 蘋果獲沉浸式虛擬顯示器相關(guān)的專利
- 英特爾汽車“折戟”,十年布局一夜歸零
- TE可穿戴解決方案助你打造暖心大白,答題贏TTI好禮
- 你們想要的XMC4800 Relax EtherCAT Kit來了,速度來申請!
- 答題有禮|掃地機(jī)器人內(nèi)部有多復(fù)雜?TI E2E 五步為你解密!
- 玩游戲 和英飛凌一起解鎖天籟之音
- ADI有獎(jiǎng)下載活動(dòng)之14 ADI公司針對pH計(jì)和電導(dǎo)率儀的演示系統(tǒng)
- TI帶你一起解剖共享單車智能鎖!看視頻漲知識贏好禮嘍!
- 帶你零起點(diǎn)入門STM32(專為嵌入式應(yīng)用而開發(fā)的內(nèi)核)
- 有獎(jiǎng)直播 | TI 助力機(jī)器人電機(jī)控制系統(tǒng)設(shè)計(jì)
- 【已結(jié)束】力源直播【安森美 25KW 充電樁模塊方案】(9:30入場)
- 網(wǎng)友用紅米K20 Pro升降式攝像頭開啤酒蓋
- 訪三星電子權(quán)桂賢:5G時(shí)代三星將要崛起
- 江淮iEVS4電驅(qū)動(dòng)和動(dòng)力電池高溫散熱策略解析
- 蘭博基尼出一款手機(jī)Mist:比跑車還好看
- 谷歌折疊屏專利公布:能像書一樣折疊打開
- 中芯國際:今年沉淀,明年起飛?
- 賽諾手機(jī)回收市場報(bào)告:2014~2017廢舊手機(jī)再利用價(jià)值超6000
- 瑞薩真岡朋光:中國已向技術(shù)創(chuàng)新國轉(zhuǎn)變,日本需有清楚認(rèn)識
- 金融時(shí)報(bào):華為威脅美優(yōu)勢地位成犧牲品
- 工業(yè)機(jī)器人培訓(xùn)大概需要多久?
- 臨睡前上傳一很好的S5pv210 初學(xué)者文檔SMDKV210_Android2.3_Installation_Guide+v1.1
- 在Corex-M3開發(fā)板上移植.Net Micro Framework系列文章
- 關(guān)于wince5.0 模擬器 中文的問題
- FPGA菜鳥問問
- MSP430F6系列
- Proteus 8 Demonstration 演示版不錯(cuò)喲!
- 求助:如果用單片機(jī)控制GPRS模塊上網(wǎng),接入點(diǎn)IP CMNET寫錯(cuò)了為什么還能撥上去?
- 【設(shè)計(jì)工具】FPGA調(diào)試基礎(chǔ)知識
- USB 驅(qū)動(dòng) 問題
- 斑竹能不能提供些有關(guān)網(wǎng)絡(luò)分析儀時(shí)域測試的資料??