一区二区三区三上|欧美在线视频五区|国产午夜无码在线观看视频|亚洲国产裸体网站|无码成年人影视|亚洲AV亚洲AV|成人开心激情五月|欧美性爱内射视频|超碰人人干人人上|一区二区无码三区亚洲人区久久精品

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

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

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

Linux系統(tǒng)中通過預留物理內(nèi)存實現(xiàn)ARM與FPGA高效通信的方法

駿龍電子 ? 來源:駿龍電子 ? 2025-04-16 13:42 ? 次閱讀

應用背景

嵌入式系統(tǒng)開發(fā)中,ARMFPGA 之間的通信可以使用 ARM 側(cè)的 DDR 作為通道。由于 FPGA 也可以直接訪問到 ARM 側(cè) DDR,但 DDR 作為共享通信時,就不能被操作系統(tǒng)的內(nèi)存管理子系統(tǒng)管理。因此,需要預留一部分物理內(nèi)存,使其不被內(nèi)核管理。接下來將為大家詳細介紹在 Linux 系統(tǒng)中通過預留物理內(nèi)存實現(xiàn) ARM 與 FPGA 高效通信的方法,預留物理內(nèi)存包括 memreserve、Linux 內(nèi)核啟動參數(shù) cmdline 和 Linux Reserved-Memory 三種方案。

Linux 內(nèi)存管理概述

Linux 內(nèi)存管理的主要目標是滿足進程 (Process) 對內(nèi)存的需求,同時最大限度地利用有限的內(nèi)存資源。為了實現(xiàn)這個目標,Linux 內(nèi)存管理采用了一系列的技術和策略,包括虛擬內(nèi)存 (Virtual Memory)、頁式內(nèi)存管理 (Paging)、交換空間 (Swap Space) 等。

在 Linux 內(nèi)存管理內(nèi)部是一個復雜的系統(tǒng),由多個組件和子系統(tǒng)構成,共同協(xié)作,實現(xiàn)高效的內(nèi)存使用。其中包含物理內(nèi)存管理 (Physical Memory Management),虛擬內(nèi)存管理 (Virtual Memory Management),內(nèi)存分配器 (Memory Allocator),交換空間管理 (Swap Space Management)。通過內(nèi)存管理系統(tǒng),整個物理內(nèi)存被有效管理。默認情況下,是對整個物理內(nèi)存進行管理。

為特定的應用或者設備預留一部分物理內(nèi)存做指定用途,這部分內(nèi)存不受 Linux 內(nèi)存系統(tǒng)管理,在需要使用的時候再對這部分內(nèi)存進行管理,這就是內(nèi)核中提供的 Reserved Memory 機制。

預留內(nèi)存三種方法

1. Memreserve

通過設備樹的 memreserve 分配的內(nèi)存,無法再被操作系統(tǒng)使用。因此這種方案不建議在共享 DDR 的方案中使用。如內(nèi)核源碼目錄下arch/arm/boot/dts/socfpga_cyclone5.dtsi。

wKgZO2f_Q1GAWYMTAABQKHhIRXw510.jpg

圖1 CycloneV SoC 設備樹 Memreserve 節(jié)點

2. Linux 內(nèi)核啟動參數(shù) cmdline

Linux 內(nèi)核啟動參數(shù) cmdline 提供了啟動選項。其中 mem 選項用來設置系統(tǒng)內(nèi)存的 size,也即操作系統(tǒng)管理的物理內(nèi)存 size。當 mem 指定的 size 小于實際物理內(nèi)存 size,剩余的部分不受 Linux 的內(nèi)存管理系統(tǒng)管理。如 SoC FPGA 有 4G 物理內(nèi)存,當 mem=3G 時,末尾的 1G 高端內(nèi)存,不受操作系統(tǒng)管理。

3. Linux Reserved Memory 預留內(nèi)存機制

Reserved Memory,顧名思義,把系統(tǒng)中的一部分內(nèi)存保留,內(nèi)核不會為它建立頁表,在內(nèi)核初始化過程中,解析該 reserved-memory 節(jié)點時,會將該段地址從 memblock 模塊中移除。一般應用程序不能訪問這段內(nèi)存。如內(nèi)核源碼目錄下arch/arm64/boot/dts/altera/socfpga_stratix10.dtsi,下圖 (圖2) 為設備樹節(jié)點:

wKgZO2f_Q1GAE8MeAACFBrDZdmw937.jpg

圖2 設備樹節(jié)點

關鍵參數(shù):

通過 reg 參數(shù),指定保存內(nèi)存的特定范圍

通過 no-map,指定操作系統(tǒng)不允許創(chuàng)建虛擬映射

通過 compatible=,這塊內(nèi)存會被用來進行 Contiguous Memory Allocator for dma

總結

本文主要介紹了 Linux 系統(tǒng)中通過預留物理內(nèi)存實現(xiàn) ARM 與 FPGA 高效通信的方法,預留物理內(nèi)存包括 memreserve、Linux 內(nèi)核啟動參數(shù) cmdline 和 Linux Reserved-Memory 三種方案。但在選擇具體實現(xiàn)方式時,應根據(jù)系統(tǒng)的動態(tài)需求、內(nèi)存管理要求和硬件特性進行權衡。

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

    關注

    1642

    文章

    21918

    瀏覽量

    611975
  • ARM
    ARM
    +關注

    關注

    134

    文章

    9270

    瀏覽量

    373512
  • 嵌入式系統(tǒng)

    關注

    41

    文章

    3662

    瀏覽量

    130616
  • Linux
    +關注

    關注

    87

    文章

    11420

    瀏覽量

    212316

原文標題:Linux 中 ARM 與 FPGA 通信的預留內(nèi)存三種實現(xiàn)方案

文章出處:【微信號:駿龍電子,微信公眾號:駿龍電子】歡迎添加關注!文章轉(zhuǎn)載請注明出處。

收藏 人收藏

    評論

    相關推薦

    Linux內(nèi)核的物理內(nèi)存組織結構詳解

    Linux內(nèi)存管理子系統(tǒng)使用 節(jié)點(node)、區(qū)域(zone)和頁(page) 三級結構描述物理內(nèi)存
    發(fā)表于 08-21 15:35 ?731次閱讀
    <b class='flag-5'>Linux</b>內(nèi)核的<b class='flag-5'>物理</b><b class='flag-5'>內(nèi)存</b>組織結構詳解

    查看Linux系統(tǒng)內(nèi)存使用情況的幾種方法

    Linux系統(tǒng)內(nèi)存監(jiān)控是優(yōu)化系統(tǒng)性能的關鍵。本文為你介紹12種方法,幫助你全面掌握
    的頭像 發(fā)表于 11-13 09:30 ?1.4w次閱讀
    查看<b class='flag-5'>Linux</b><b class='flag-5'>系統(tǒng)</b><b class='flag-5'>內(nèi)存</b>使用情況的幾種<b class='flag-5'>方法</b>

    使用Linux UIO框架實現(xiàn)ARMFPGA高效通信

    ARMFPGA 之間通信通信過程,通信開始或者完成時,需要實時通知對方,如果
    的頭像 發(fā)表于 02-25 09:49 ?1406次閱讀
    使用<b class='flag-5'>Linux</b> UIO框架<b class='flag-5'>實現(xiàn)</b><b class='flag-5'>ARM</b>和<b class='flag-5'>FPGA</b>的<b class='flag-5'>高效</b><b class='flag-5'>通信</b>

    《電子發(fā)燒友電子設計周報》聚焦硬科技領域核心價值 第8期:2025.04.14--2025.04.18

    方法 http://www.www27dydycom.cn/d/6539575.html 介紹在 Linux 系統(tǒng)通過
    發(fā)表于 04-18 20:03

    AM437x開發(fā)板FPGAARM基于GPMC通信測試

    ``最近都在研究AM437x,FPGAARM基于GPMC通信測試,入手的是創(chuàng)龍TL437xF-EVM,圖片如下:以下簡單介紹:本測試程序?qū)?b class='flag-5'>FPGA模擬成GPMC
    發(fā)表于 05-16 14:28

    Linux內(nèi)存系統(tǒng)Linux 內(nèi)存分配算法

    和 ioremap_nocache 將預留內(nèi)存映射到模塊。需要修改內(nèi)核啟動參數(shù), 無需重新編譯內(nèi)核. 但這種方法不支持 x86 架構, 只支持
    發(fā)表于 08-24 07:44

    請問如何在Linux Device Tree配置預留內(nèi)存?

    請問如何在Linux Device Tree配置預留內(nèi)存
    發(fā)表于 12-29 06:22

    怎樣在Linux內(nèi)核預留一部分內(nèi)存空間作特殊用途呢

    出來:/memreserve/ 0x40000000 0x00100000;使用 memreserve 預留出來的內(nèi)存一般無法再被 Linux 系統(tǒng)使用(當然,也可以
    發(fā)表于 12-29 07:16

    全志D1-H芯片 如何在 Linux Device Tree 配置預留內(nèi)存

    出來:/memreserve/ 0x40000000 0x00100000;使用 memreserve 預留出來的內(nèi)存一般無法再被 Linux 系統(tǒng)使用(當然,也可以
    發(fā)表于 03-16 13:50

    全志D1-H芯片 如何在 Linux Device Tree 配置預留內(nèi)存?

    出來:/memreserve/ 0x40000000 0x00100000;使用 memreserve 預留出來的內(nèi)存一般無法再被 Linux 系統(tǒng)使用(當然,也可以
    發(fā)表于 03-29 19:13

    ARM32 Linux內(nèi)存布局

    看我們實際上內(nèi)存布局是怎么樣的?Linux內(nèi)核在啟動時,會打印出內(nèi)核內(nèi)存空間的布局圖,下面是ARM IMX6平臺打印出來的內(nèi)存空間布局圖這部
    發(fā)表于 04-24 14:20

    一種基于ARM-LinuxFPGA程序加載方法

    本文實現(xiàn)了一種基于ARM-LinuxFPGA 程序加載方法,詳細討論了加載過程各個階段程序?qū)ε渲霉苣_的操作,給出了硬件
    發(fā)表于 12-19 16:26 ?31次下載

    如何避免Linux物理內(nèi)存碎片化

    Linux buddyy系統(tǒng)linux kernel比較穩(wěn)定的一個模塊,但是并不是說它沒有缺陷,Linux內(nèi)存管理
    的頭像 發(fā)表于 05-01 16:43 ?5627次閱讀
    如何避免<b class='flag-5'>Linux</b>的<b class='flag-5'>物理</b><b class='flag-5'>內(nèi)存</b>碎片化

    深入剖析Linux共享內(nèi)存原理

    不同進程之間進行通信,需要讓不同進程共享相同的物理內(nèi)存,Linux通過? 共享內(nèi)存 ?來
    的頭像 發(fā)表于 10-30 09:52 ?2447次閱讀
    深入剖析<b class='flag-5'>Linux</b>共享<b class='flag-5'>內(nèi)存</b>原理

    Linux系統(tǒng)的共享內(nèi)存的使用

    但有時候為了讓不同進程之間進行通信,需要讓不同進程共享相同的物理內(nèi)存Linux通過 共享內(nèi)存
    的頭像 發(fā)表于 11-14 11:55 ?1485次閱讀