女人自慰AV免费观看内涵网,日韩国产剧情在线观看网址,神马电影网特片网,最新一级电影欧美,在线观看亚洲欧美日韩,黄色视频在线播放免费观看,ABO涨奶期羡澄,第一导航fulione,美女主播操b

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

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

3天內不再提示

Linux系統中通過預留物理內存實現ARM與FPGA高效通信的方法

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

應用背景

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

Linux 內存管理概述

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

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

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

預留內存三種方法

1. Memreserve

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

wKgZO2f_Q1GAWYMTAABQKHhIRXw510.jpg

圖1 CycloneV SoC 設備樹 Memreserve 節點

2. Linux 內核啟動參數 cmdline

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

3. Linux Reserved Memory 預留內存機制

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

wKgZO2f_Q1GAE8MeAACFBrDZdmw937.jpg

圖2 設備樹節點

關鍵參數:

通過 reg 參數,指定保存內存的特定范圍

通過 no-map,指定操作系統不允許創建虛擬映射

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

總結

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

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

    關注

    1643

    文章

    21957

    瀏覽量

    614038
  • ARM
    ARM
    +關注

    關注

    134

    文章

    9306

    瀏覽量

    374990
  • 嵌入式系統
    +關注

    關注

    41

    文章

    3665

    瀏覽量

    130896
  • Linux
    +關注

    關注

    87

    文章

    11459

    瀏覽量

    212782

原文標題:Linux 中 ARM 與 FPGA 通信的預留內存三種實現方案

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

收藏 人收藏

    評論

    相關推薦
    熱點推薦

    Linux內核的物理內存組織結構詳解

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

    查看Linux系統內存使用情況的幾種方法

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

    使用Linux UIO框架實現ARMFPGA高效通信

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

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

    方法 http://www.asorrir.com/d/6539575.html 介紹在 Linux 系統通過
    發表于 04-18 20:03

    AM437x開發板FPGAARM基于GPMC通信測試

    ``最近都在研究AM437x,FPGAARM基于GPMC通信測試,入手的是創龍TL437xF-EVM,圖片如下:以下簡單介紹:本測試程序將FPGA模擬成GPMC
    發表于 05-16 14:28

    Linux內存系統Linux 內存分配算法

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

    請問如何在Linux Device Tree配置預留內存

    請問如何在Linux Device Tree配置預留內存
    發表于 12-29 06:22

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

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

    全志D1-H芯片 如何在 Linux Device Tree 配置預留內存

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

    全志D1-H芯片 如何在 Linux Device Tree 配置預留內存

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

    ARM32 Linux內存布局

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

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

    本文實現了一種基于ARM-LinuxFPGA 程序加載方法,詳細討論了加載過程各個階段程序對配置管腳的操作,給出了硬件
    發表于 12-19 16:26 ?31次下載

    如何避免Linux物理內存碎片化

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

    深入剖析Linux共享內存原理

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

    Linux系統的共享內存的使用

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