国产精品久久久aaaa,日日干夜夜操天天插,亚洲乱熟女香蕉一区二区三区少妇,99精品国产高清一区二区三区,国产成人精品一区二区色戒,久久久国产精品成人免费,亚洲精品毛片久久久久,99久久婷婷国产综合精品电影,国产一区二区三区任你鲁

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

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

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

為什么要用MMU?為什么要用虛擬地址?

Linux閱碼場 ? 來源:Linux閱碼場 ? 作者:baron ? 2022-04-26 14:37 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

1、MMU概念介紹

MMU分為兩個部分: TLB maintenance 和 address translation

5f9f94b6-c3bd-11ec-bce3-dac502259ad0.png

MMU的作用,主要是完成地址的翻譯,即虛擬地址到物理地址的轉(zhuǎn)換,無論是main-memory地址(DDR地址),還是IO地址(設(shè)備device地址),在開啟了MMU的系統(tǒng)中,CPU發(fā)起的指令讀取、數(shù)據(jù)讀寫都是虛擬地址,在ARM Core內(nèi)部,會先經(jīng)過MMU將該虛擬地址自動轉(zhuǎn)換成物理地址,然后在將物理地址發(fā)送到AXI總線上,完成真正的物理內(nèi)存、物理設(shè)備的讀寫訪問.

那么為什么要用MMU?為什么要用虛擬地址?以下總結(jié)了三點:

多個程序獨立執(zhí)行 --- 不需要知道具體物理地址

虛擬地址是連續(xù)的 --- 程序可以在多個分段的物理內(nèi)存運行

允許操作系統(tǒng)管理內(nèi)存 --- 哪些是可見的,哪些是允許讀寫的,哪些是cacheable的……

既然MMU開啟后,硬件會自動的將虛擬地址轉(zhuǎn)換成物理地址,那么還需要我們軟件做什么事情呢?即創(chuàng)建一個頁表翻譯都需要做哪些事情呢?或者說啟用一個MMU需要軟件做什么事情呢?

設(shè)置頁表基地址VBAR_EL3 (Specify the location of the translation table)

初始化MAIR_EL3 (Memory Attribute Indirection Register)

配置TCR_EL3 (Configure the translation regime)

創(chuàng)建頁表 (Generate the translation tables)

Enable the MMU

2、虛擬地址空間和物理地址空間

2.1、(虛擬/物理)地址空間的范圍

內(nèi)核虛擬地址空間的范圍是什么?應(yīng)用程序的虛擬地址空間的范圍是什么?以前我們在學(xué)習(xí)操作系統(tǒng)時,最常看到的一句話是:內(nèi)核的虛擬地址空間范圍是3G-4G地址空間,應(yīng)用程序的虛擬地址空間的范圍是0-3G地址空間;到了aarch64上,則為 :內(nèi)核的虛擬地址空間是0xffff000000000000 - 0xffffffffffffffff , 應(yīng)用程序的虛擬地址空間是: 0x0000000000000000 - 0x0000ffffffffffff.

做為一名杠精,必需告訴你這句話是錯誤的。錯誤主要有兩點:(1) arm處理器,并沒有規(guī)定你的內(nèi)核必需要使用哪套地址空間,以上這是Linux Kernel自己的設(shè)計,它設(shè)計了讓Linux Kernel使用0xffff000000000000 - 0xffffffffffffffff地址區(qū)間,Userspace使用0x0000000000000000 - 0x0000ffffffffffff地址區(qū)間,這里正好可以舉一個反例,比如optee os,它的kernel mode和user mode使用的都是高位的虛擬地址空間。(2) 高位是有幾個F(幾個1)是根據(jù)你操作系統(tǒng)使用的有效虛擬地址位來決定的,也并非固定的。比如optee中的mode和user mode的虛擬地址空間范圍都是:0x0000000000000000 - 0x00000000ffffffff

其實arm文檔中有一句標準的描述 :高位是1的虛擬地址空間,使用TTBR1ELx基地址寄存器進行頁表翻譯;高位是0的虛擬地址空間,使用TTBR0ELx基地址寄存器頁表翻譯。 所以不應(yīng)該說,因為你使用了哪個寄存器(TTBR0/TTBR1),然后決定了你使用的哪套虛擬地址空間;應(yīng)該說,你操作系統(tǒng)(或userspace軟件)使用了哪套虛擬地址空間,決定了使用哪個哪個基地址寄存器(TTBR0/TTBR1)進行翻譯。

如下便是兩套虛擬地址空間和TTBRn_ELx的對應(yīng)關(guān)系,其中高位的位數(shù)不是固定的16(即T1SZ和T0SZ不一定等于16)

5fb48362-c3bd-11ec-bce3-dac502259ad0.png

以下摘自ARM文檔的官方描述:

As Figure shows, for 48-bit VAs:? The address range translated using TTBR0ELx is 0x0000000000000000 to 0x0000FFFFFFFFFFFF.? The address range translated using TTBR1ELx is 0xFFFF000000000000 to 0xFFFFFFFFFFFFFFFF.In an implementation that includes ARMv8.2-LVA and is using Secure EL3 the 64KB translation granule, for 52-bit VAs:? The address range translated using TTBR0ELx is 0x0000000000000000 to 0x000FFFFFFFFFFFFF.? The address range translated using TTBR1ELx is 0xFFF0000000000000 to 0xFFFFFFFFFFFFFFFF.Which TTBRELx is used depends only on the VA presented for translation. The most significant bits of the VA must all be the same value and:? If the most significant bits of the VA are zero, then TTBR0ELx is used.? If the most significant bits of the VA are one, then TTBR1_ELx is used.

2.2、物理地址空間有效位(范圍)

具體每一個core的物理地址是多少位,其實都是定死的,虛擬地址是多少位,是編譯或開發(fā)的時候根據(jù)自己的需要自己配置的。如下表格摘出了部分arm core的物理地址有效位,所以你具體使用多少有效位的物理地址,可以查詢core TRM手冊。

5fd091e2-c3bd-11ec-bce3-dac502259ad0.png

2.2.1、頁表翻譯相關(guān)寄存器的配置

ID_AA64MMFR0_EL1.PARange: Physical address size : 讀取arm寄存器,得到當前系統(tǒng)支持的有效物理地址是多少位

5fe643d4-c3bd-11ec-bce3-dac502259ad0.png

TCR_EL1.IPS: Output address size : 告訴mmu,你需要給我輸出多少位的物理地址

5ffd4958-c3bd-11ec-bce3-dac502259ad0.png

TCR_EL1.T0SZ和TCR_EL1.T1SZ: Input address size : 告訴mmu,我輸入的是多少有效位的虛擬地址

601415de-c3bd-11ec-bce3-dac502259ad0.png

3、Translation regimes

內(nèi)存管理單元 (MMU) 執(zhí)行地址翻譯。MMU 包含以下內(nèi)容:

The table walk unit : 它從內(nèi)存中讀取頁表,并完成地址轉(zhuǎn)換

Translation Lookaside Buffers (TLBs) :緩存,相當于cache

軟件看到的所有內(nèi)存地址都是虛擬的。這些內(nèi)存地址被傳遞到 MMU,它檢查最近使用的緩存轉(zhuǎn)換的 TLB。如果 TLB沒有找到最近緩存的翻譯,那么翻譯單元將從內(nèi)存中讀取適當?shù)囊粋€或多個表項目進行地址翻譯,如下所示:

602a4b4c-c3bd-11ec-bce3-dac502259ad0.png

Translation tables 的工作原理是將虛擬地址空間劃分為大小相等的塊,并在表中為每個塊提供一個entry。Translation tables 中的entry 0 提供block 0 的映射,entry 1 提供block 1 的映射,依此類推。每個entry都包含相應(yīng)物理內(nèi)存塊的地址以及訪問物理地址時要使用的屬性。

603e518c-c3bd-11ec-bce3-dac502259ad0.png

在當前的ARMV8/ARMV9體系中(暫不考慮armv9的RME擴展), 至少存在以下9類Translation regime:

Secure EL1&0 translation regime, when EL2 is disabledNon-secure EL1&0 translation regime, when EL2 is disabledSecure EL1&0 translation regime, when EL2 is enabledNon-secure EL1&0 translation regime, when EL2 is enabledSecure EL2&0 translation regimeNon-secure EL2&0 translation regimeSecure EL2 translation regimeNon-secure EL2 translation regimeSecure EL3 translation regime

這9類Translation regime的地址翻譯的場景如下圖所示:

60592c28-c3bd-11ec-bce3-dac502259ad0.png

Secure and Non-secure地址空間在REE(linux)和TEE(optee)雙系統(tǒng)的環(huán)境下,可同時開啟兩個系統(tǒng)的MMU.

在secure和non-secure中使用不同的頁表.secure的頁表可以映射non-secure的內(nèi)存,而non-secure的頁表不能去映射secure的內(nèi)存,否則在轉(zhuǎn)換時會發(fā)生錯誤

606cb78e-c3bd-11ec-bce3-dac502259ad0.png

Two Stage TranslationsEL1&0 Translation regime處于VM(Virtual Machine)或SP(Secure Partition)時,EL2 enabled的情況下,是需要stage2轉(zhuǎn)換的。對于EL2 Translation regime 和 EL3 Translation regime是沒用stage2 轉(zhuǎn)換的。

609ad2fe-c3bd-11ec-bce3-dac502259ad0.png

4、地址翻譯/幾級頁表?

4.1、思考:頁表到底有幾級?

從以下圖來看,有的頁表從L2開始,有得從L1開始,有的從L0開始,還有從L-1開始的,都是到L3終止。那么我們的頁表到底有幾級呢?

60b6e61a-c3bd-11ec-bce3-dac502259ad0.png

4.2、以4KB granule為例,頁表的組成方式

60d12ea8-c3bd-11ec-bce3-dac502259ad0.png

除了第一級index(這里是leve 0 table中的index),每一個查找table/page的index都是9個bit,也就是說除了第一級頁表,后面的每一級table都是有512個offset

如果VA_BIT = 39,那么leve 0 table用BIT[38:39]表示,只有1個offset

如果VA_BIT = 48,那么leve 0 table用BIT[47:39]表示,有512個offset

如果VABIT > 48,那是不存在的,因為arm規(guī)定,大于48的,只有一個,那就是VABIT=52,并且規(guī)定該情況下的最小granue size=64KB,而我們這里講述的是granue size=4KB的情況

如果VABIT = 32,那么leve 0 table就不用了,TTBRELx指向Level 1 table

另外我們還需注意一點,在Level 0 table中,他只能指向DTable,不能指向DBlock

以下針對虛擬地址是48有效位的情形做了一個總結(jié):

60ee14a0-c3bd-11ec-bce3-dac502259ad0.png

4.3、optee實際使用的示例

32位有效虛擬地址、,3級頁表查詢(L1、L2、L3),顆粒的位4KB

61088970-c3bd-11ec-bce3-dac502259ad0.png

如下展示是optee os的頁表結(jié)構(gòu),TTBR0_EL1指向L1 Table,L1 Table中有4個表項,但只用了3個 , 也就對應(yīng)著3張L2 Table.

611ecdf2-c3bd-11ec-bce3-dac502259ad0.png

配置相關(guān)的代碼如下:

61380e3e-c3bd-11ec-bce3-dac502259ad0.png

5、頁表格式(Descriptor format)

5.1、ARMV8支持的3種頁表格式

AArch64 Long Descriptor:我們只學(xué)習(xí)這個

Armv7-A Long Descriptor :for Large Physical Address Extension (LPAE)

Armv7-A Short Descriptor

5.2、AArch64 Long Descriptor支持的四種entry

對于AArch64 Long Descriptor,又分為下面四種entry:

An invalid or fault entry.

A table entry, that points to the next-level translation table.

A block entry, that defines the memory properties for the access.

A reserved format

注意:entry[1:0] 表示該entry屬于哪類entry, Block Descriptor和Page Descriptor是一個意思。在當前架構(gòu)中,reserved也是invalid。

615b081c-c3bd-11ec-bce3-dac502259ad0.png

5.3、頁表的屬性位介紹( Block Descriptor/Page Descriptor )

5.3.1、stage1的頁表屬性

(Attribute fields in stage 1 VMSAv8-64 Block and Page descriptors)

6173113c-c3bd-11ec-bce3-dac502259ad0.png

PBHA, bits[62:59] :for FEAT_HPDS2

XN or UXN, bit[54] :Execute-never or Unprivileged execute-never

PXN, bit[53] :Privileged execute-never

Contiguous, bit[52] :translation table entry 是連續(xù)的,可以存在一個TLB Entry中

DBM, bit[51] :Dirty Bit Modifier

GP, bit[50] :for FEAT_BTI

nT, bit[16] :for FEAT_BBM

nG, bit[11] :緩存在TLB中的翻譯是否使用ASID標識

AF, bit[10] :Access flag, AF=0后,第一次訪問該頁面時,會將該標志置為1. 即暗示第一次訪問

SH, bits[9:8] :shareable屬性

AP[2:1], bits[7:6] :Data Access Permissions bits,

NS, bit[5] :Non-secure bit

AttrIndx[2:0], bits[4:2] :

5.3.2、stage2的頁表屬性

(Attribute fields in stage 2 VMSAv8-64 Block and Page descriptors)

618a6882-c3bd-11ec-bce3-dac502259ad0.png

PBHA[3:1], bits[62:60] :for FEAT_HPDS2

PBHA[0], bit[59] :for FEAT_HPDS2

XN[1:0], bits[54:53] :Execute-never

Contiguous, bit[52] :translation table entry 是連續(xù)的,可以存在一個TLB Entry中

DBM, bit[51] :Dirty Bit Modifier

nT, bit[16] :for FEAT_BBM

FnXS, bit[11] :for FEAT_XS

AF, bit[10] :Access flag

SH, bits[9:8] :shareable屬性

S2AP, bits[7:6] :Stage 2 data Access Permissions

MemAttr, bits[5:2] :

5.3.3、其它標志位的詳細介紹

(1)、MemAttr指向MAIR_ELx寄存器中的attrn屬性域,表示內(nèi)存的緩存屬性,如cachable、shareable等

(2)、NSNon-secure比特表示轉(zhuǎn)換后的物理地址是secure的還是non-secure的。

(3)、APData access permissions 數(shù)據(jù)訪問權(quán)限

61a5a9e4-c3bd-11ec-bce3-dac502259ad0.png

(4)、SH

shareable屬性

61ba2540-c3bd-11ec-bce3-dac502259ad0.png

(5)、AFAccess flag, AF=0后,第一次訪問該頁面時,會將該標志置為1. 即暗示第一次訪問(6)、nG對于 EL0/EL1 虛擬地址空間,Page Descriptor屬性字段中的 nG 位將轉(zhuǎn)換標記為Gloabl(G) 或non-Gloabl(nG)。例如,內(nèi)核映射是Gloabl(G)翻譯,應(yīng)用程序映射是non-Gloabl翻譯。Gloabl翻譯適用于當前正在運的任何應(yīng)用程序。非全局翻譯僅適用于特定應(yīng)用程序

non-Gloabl映射在 TLB 中使用 ASID進行標記。在 TLB 查找時,將 TLB 條目中的 ASID 與當前選擇的 ASID 進行比較。如果它們不匹配,則不使用TLB 條目。下圖顯示了內(nèi)核空間中沒有 ASID 標記的全局映射和用戶空間中具有 ASID 標記的非全局映射

61d2f9a8-c3bd-11ec-bce3-dac502259ad0.png

(7)、XN or UXN特權(quán)和非特權(quán)不可從該memory-region中執(zhí)行指令的標志位:Execute-neverUnprivileged execute-never

6、地址翻譯指令介紹

address translation的指令大約14個:

61eb66e6-c3bd-11ec-bce3-dac502259ad0.png

總結(jié)一下:

61fffc64-c3bd-11ec-bce3-dac502259ad0.png

7、地址翻譯相關(guān)的系統(tǒng)寄存器總結(jié)

地址轉(zhuǎn)換由系統(tǒng)寄存器的組合控制:

7.1 SCTLR_ELx

6218f750-c3bd-11ec-bce3-dac502259ad0.png

622f2246-c3bd-11ec-bce3-dac502259ad0.png

系統(tǒng)控制寄存器,控制著MMU、I-cache、D-cache的打開與關(guān)閉,也控制著translation table walks訪問內(nèi)存的大小端。

M - Enable Memory Management Unit (MMU).

C - Enable for data and unified caches.

EE - Endianness of translation table walks.

7.2 TTBRn_ELx

6249630e-c3bd-11ec-bce3-dac502259ad0.png

62688a72-c3bd-11ec-bce3-dac502259ad0.png

BADDR : 基地址

ASID :TLB entry區(qū)分user程序所用的ASID

7.3 TCR_ELx

在ARM Core中(aarch64),有三個Translation Control Register 寄存器:

627dddb4-c3bd-11ec-bce3-dac502259ad0.png

6293a64e-c3bd-11ec-bce3-dac502259ad0.png

比特位 功能 說明
ORGN1、IRGN1、ORGN0、IRGN0 cacheable屬性 outer/inner cableability的屬性(如直寫模式、回寫模式)
SH1、SH0 shareable屬性 cache的共享屬性配置(如non-shareable, outer/inner shareable)
TG0/TG1 Granule size Granule size(其實就是頁面的大小,4k/16k/64k)
IPS 物理地址size 物理地址size,如32bit/36bit/40bit
EPD1、EPD0 - TTBREL1/TTBREL0的enable和disable
TBI1、TBI0 - top addr是ignore,還是用于MTE的計算
A1 - ASID的選擇,是使用TTBREL1中的,還是使用TTBREL0中的
AS - ASID是使用8bit,還是使用16bit

7.3 MAIR_ELx

內(nèi)存屬性寄存器,分為8個Attrn,所以一個core,最多只支持8中內(nèi)存屬性。頁表中的每一個entry,都會指向一個Attr域。

62a8e2d4-c3bd-11ec-bce3-dac502259ad0.png

審核編輯 :李倩

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

    關(guān)注

    68

    文章

    20250

    瀏覽量

    252211
  • MMU
    MMU
    +關(guān)注

    關(guān)注

    0

    文章

    92

    瀏覽量

    19216
  • 深度學(xué)習(xí)
    +關(guān)注

    關(guān)注

    73

    文章

    5598

    瀏覽量

    124396

原文標題:armv8-armv9 MMU深度學(xué)習(xí)

文章出處:【微信號:LinuxDev,微信公眾號:Linux閱碼場】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。

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

掃碼添加小助手

加入工程師交流群

    評論

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

    Linux內(nèi)核大塊內(nèi)存申請:從場景到落地全解析

    網(wǎng)卡、硬盤等外設(shè)的 DMA 控制器,要求內(nèi)存物理地址連續(xù)(無法識別虛擬地址映射),且需一次性分配大尺寸緩沖區(qū)(如 1GB 網(wǎng)絡(luò)幀緩存)。
    的頭像 發(fā)表于 02-09 16:41 ?663次閱讀
    Linux內(nèi)核大塊內(nèi)存申請:從場景到落地全解析

    【「Linux 設(shè)備驅(qū)動開發(fā)(第 2 版)」閱讀體驗】+讀深入理解Linux內(nèi)核內(nèi)存分配

    的一部分。也就是說,在ARM架構(gòu)中,MMU是已獲得許可的處理核心的一部分,負責(zé)在每次訪問內(nèi)存時將虛擬地址轉(zhuǎn)換為物理地址,這個過程被稱為地址轉(zhuǎn)換。邏輯
    發(fā)表于 01-16 20:05

    直流高壓發(fā)生器主要用處在哪里?

    要用于電力設(shè)備(如電纜、變壓器、絕緣子、開關(guān)等)的絕緣性能檢測與耐壓試驗,驗證設(shè)備在高壓環(huán)境下的絕緣可靠性,保障電力系統(tǒng)安全運行。
    發(fā)表于 12-16 15:50

    FLASH中的代碼是如何得到運行的呢

    指令的地址。正常情況下自動加“4”,遇到分支跳轉(zhuǎn)的時候,由跳轉(zhuǎn)指令設(shè)置值。那么指針是什么?指針是一個變量的地址,在含有操作系統(tǒng)(比如Linux、Windows)即硬件層面含有內(nèi)存管理單元(MMU)的情況下,指針是
    發(fā)表于 12-04 08:06

    誰有3566+電池+POE充電的方案,有個項目需要用該功能的主板

    誰有3566+電池+POE充電的方案,有個項目需要用該功能的主板
    發(fā)表于 12-01 08:21

    請問e203定義的地址空間是虛擬地址還是物理地址

    蜂鳥e203實現(xiàn)的是物理地址,硬件端與軟件端的地址分配相同,從而確定軟件開發(fā)過程中能操作底層寄存器。 硬件端:在總線分發(fā)模塊sirv_icb1to16_bus定義好各個端口寄存器的地址區(qū)間, 軟件端
    發(fā)表于 11-11 06:20

    關(guān)于系統(tǒng)鏈接腳本的介紹

    Flash里面,但上電后上載至ITCM中進行執(zhí)行(flash模式) 三、關(guān)于物理地址虛擬地址 物理地址是該程序要被存儲的存儲器地址(調(diào)試器下載程序時會遵從從此物理
    發(fā)表于 10-30 08:26

    振動傳感器主要用于哪些設(shè)備的監(jiān)測?

    振動傳感器是一種高性能、低功耗、抗干擾的復(fù)合型傳感器,專為監(jiān)測和分析機械振動信號而設(shè)計。它主要用于以下設(shè)備的監(jiān)測: 1.工業(yè)設(shè)備: 電機:振動傳感器可用于監(jiān)測電機的振動狀態(tài),預(yù)防潛在的故障。 風(fēng)機
    的頭像 發(fā)表于 10-09 10:31 ?419次閱讀
    振動傳感器主<b class='flag-5'>要用</b>于哪些設(shè)備的監(jiān)測?

    芯片清洗要用多少水洗

    芯片清洗過程中用水量并非固定值,而是根據(jù)工藝步驟、設(shè)備類型、污染物種類及生產(chǎn)規(guī)模等因素動態(tài)調(diào)整。以下是關(guān)鍵影響因素和典型范圍:?1.主要影響因素(1)清洗階段不同預(yù)沖洗/粗洗:快速去除大塊顆粒或松散雜質(zhì),用水量大但精度要求低;?例:噴淋式初洗可能使用5~10L/min的流量。精洗(如兆聲波清洗):針對微觀污染物(納米級顆粒),需配合高純水與能量場協(xié)同作用,此
    的頭像 發(fā)表于 08-05 11:55 ?1036次閱讀
    芯片清洗<b class='flag-5'>要用</b>多少水洗

    為什么光刻要用黃光?

    進入過無塵間光刻區(qū)的朋友,應(yīng)該都知道光刻區(qū)里用的都是黃燈,這個看似很簡單的問題的背后卻蘊含了很多鮮為人知的道理,那為什么實驗室光刻要用黃光呢? 光刻是微流控芯片制造中的重要工藝之一。簡單來說,它是
    的頭像 發(fā)表于 06-16 14:36 ?1258次閱讀

    TECS OpenStack資源池虛擬機網(wǎng)絡(luò)二層地址無法互通的問題處理

    某運營商TECS OpenStack使用主機overlay SDN方案組網(wǎng),運維人員在創(chuàng)建虛擬機測試虛擬機網(wǎng)絡(luò)狀態(tài)時發(fā)現(xiàn)問題:在其中一臺主機上創(chuàng)建兩臺同網(wǎng)段虛擬機,虛擬機之間二層
    的頭像 發(fā)表于 06-12 09:28 ?879次閱讀
    TECS OpenStack資源池<b class='flag-5'>虛擬</b>機網(wǎng)絡(luò)二層<b class='flag-5'>地址</b>無法互通的問題處理

    帶您了解觀測水尺的主要用途和意義

    觀測水尺是一種用于測量和記錄水位變化的工具,主要應(yīng)用于水文監(jiān)測、水利工程、航運、防洪抗旱等領(lǐng)域。以下是它的主要用途和意義:1.水文監(jiān)測與數(shù)據(jù)采集記錄水位變化:通過定期觀測水尺刻度,獲取河流、湖泊
    的頭像 發(fā)表于 04-14 10:59 ?1036次閱讀
    帶您了解觀測水尺的主<b class='flag-5'>要用</b>途和意義

    請問如何在imx8qm上將PCIe和SMMU用于顯卡?

    您好,目前,我正準備在 IMX8QM 處理器上支持 PCIe 顯卡設(shè)備。要求是通過 SMMU 方法將映射從虛擬地址更改為物理地址,以實現(xiàn)自定義設(shè)備空間。但是,我在 Linux 的 imx8qm-mek.dts 設(shè)備樹文件中沒有找到任何與 PCIe 設(shè)備使用 SMMU 相關(guān)
    發(fā)表于 03-28 06:27

    USB組合設(shè)備的配置描述符里一定要用IAD描述符嗎?

    USB組合設(shè)備的配置描述符里一定要用IAD描述符嗎
    發(fā)表于 03-11 06:41

    帶你了解頻譜分析儀的主要用

    頻譜分析儀是一種用于分析信號頻譜的儀器,主要用于測量和顯示信號在頻域中的分布。通過對信號進行頻率分析,頻譜分析儀可以幫助工程師、研究人員、技術(shù)人員等了解信號的頻率成分、功率分布、調(diào)制特性等,從而
    的頭像 發(fā)表于 03-06 17:47 ?1792次閱讀