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

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

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

3天內不再提示

基于 DR1M90 的 Linux-RT 內核開發:從編譯配置到 GPIO / 按鍵應用實現(1)

Tronlong創龍科技 ? 來源:Tronlong創龍科技 ? 作者:Tronlong創龍科技 ? 2025-12-02 10:38 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

前 言

本文檔主要介紹Linux-RT實時內核的性能測試方法,以及使用Linux-RT內核進行系統開發和應用開發的使用說明。

開發環境

Windows開發環境:Windows10 64bit

Linux開發環境:VMware16.2.5、Ubuntu22.04.4 64bit

LinuxSDK開發包:LinuxSDK-[版本號](基于SDK_2025.1)

交叉編譯工具鏈:

應用開發:gcc-linaro-7.5.0-2019.12-x86_64_aarch64-linux-gnu

U-Boot、內核開發:gcc-linaro-7.5.0-2019.12-x86_64_aarch64-linux-gnu

評估板系統版本:U-Boot-2021.01、Linux-6.1.111、Buildroot-2022.02

備注:本文基于8GByteeMMC、1GByteDDR配置核心板進行演示。

術語表

為便于閱讀,下表對文檔出現的關鍵術語進行解釋;對于廣泛認同釋義的術語,在此不做注釋。

wKgZPGkuUhuASFa8AAAbvNaqZZE168.png

注意事項

我司默認使用的是Linux內核,同時提供了Linux-RT內核,位于產品資料“4-軟件資料LinuxKernelimagelinux-6.1.111-[版本號]-[Git系列號]”目錄下。請按照《Linux系統開發手冊》替換Kernel鏡像章節中的方法替換Linux-RT內核。

Linux-RT介紹

我司提供的Linux-RT內核應用了開源的RT PREEMPT機制進行補丁。PREEMPT_RT補丁的關鍵是最小化不可搶占的內核代碼量,同時最小化必須更改的代碼量,以便提供這種附加的可搶占性。Linux-RT內核增加PREEMPT_RT補丁后,增加了系統響應的確定性和實時性,但是代價是CPU性能降低。

Linux-RT內核與普通Linux內核相比,幾個主要的相同之處是:

(1)具有相同的開發生態系統,包括相同工具鏈、文件系統和安裝方法,以及相同的POSIX API等。

(2)仍然存在內核空間和用戶空間的劃分。

(3)Linux應用程序在用戶空間中運行。

Linux-RT內核與普通Linux內核在常規編程方式上的幾個主要不同之處是:

(1)調度策略。

(2)優先級和內存控制。

(3)基于Linux-RT內核的應用程序使用了調度策略后,系統將根據調度策略對其進行調優。

Linux系統實時性測試

本章節主要介紹使用Cyclictest延遲檢測工具測試Linux系統實時性的方法。Cyclictest是rt-tests測試套件下的一個測試工具,也是rt-tests下使用最廣泛的測試工具,一般主要用來測試內核的延遲,從而判斷內核的實時性。

Cyclictest常用于實時系統的基準測試,是評估實時系統相對性能的最常用工具之一。Cyclictest反復測量并精確統計線程的實際喚醒時間,以提供有關系統的延遲信息。它可測量由硬件、固件和操作系統引起的實時系統的延遲。

為了測量延遲,Cyclictest運行一個非實時主線程(調度類SCHED_OTHER),該線程以定義的實時優先級(調度類SCHED_FIFO)啟動定義數量的測量線程。測量線程周期性地被一個到期的計時器(循環報警)所定義的間隔喚醒,隨后計算有效喚醒時間,并通過共享內存將其傳遞給主線程。主線程統計延遲值并打印最小、最大和平均延遲時間。

Linux、Linux-RT實時性對比

本次測試結合Iperf和Cyclictest工具,對比測試基于Linux-RT-6.1.111內核和Linux-6.1.111內核的系統實時性能。此處使用Iperf工具不斷觸發系統中斷,提高中斷處理負載,以便更好測試系統實時特性。

在Ubuntu執行如下命令查看IP地址,并以服務器模式啟動Iperf測試。

Host# ifconfig

Host# iperf3 -s

wKgZO2kuUiWAf7vAAAGSfWTfGp4837.png圖?1

分別使用Linux-RT-6.1.111內核和Linux-6.1.111內核啟動評估板進行測試。執行如下命令以客戶端模式啟動Iperf,并連接至服務器端(Ubuntu系統)。"192.168.13.81"為Ubuntu的IP地址,"-t3600"設置測試時間為3600秒,"&"表示讓程序在后臺運行。

Target# iperf3 -c 192.168.13.81-d -t3600 > /dev/null 2>&1 &

wKgZO2kuUi6ALhJ9AAAI1mgo_WI303.png圖 2

評估板文件系統默認已提供Cyclictest工具,進入評估板文件系統,執行如下命令使用Cyclictest工具測試系統實時性。

Target# cyclictest -t5 -p98 -m -D10m

wKgZPGkuUjeAXGZuAAAyOOKcxdc140.png圖?3?Linux-RT-6.1.111內核測試結果

wKgZO2kuUjeADfrXAAAwHIHS23M877.png圖?4?Linux-6.1.111內核測試結果

wKgZPGkuUkSAdSTRAAAsCybChdk905.png

對比測試數據,可看到基于Linux-RT-6.1.111內核的系統的延遲更加穩定,平均延遲、最大延遲更低,系統實時性更佳。

Cyclictest命令參數解析可執行"cyclictest --help"查看,如下圖所示。

wKgZO2kuUk6ACCkqAAC0l7w9vNk014.png圖?5

wKgZO2kuUk6AADjDAAA7Tvwbq5c110.png圖?6

Linux-RT性能測試

本次測試分別在CPU空載、滿負荷(運行stress壓力測試工具)、隔離CPU核心的情況下,對比評估Linux-RT內核的系統實時性。

CPU空載狀態

評估板上電啟動,進入評估板文件系統,執行如下命令修改內核printk日志等級,避免內核打印信息影響實時測試。

Target# echo 1 > /proc/sys/kernel/printk

wKgZO2kuUy2AIoSCAAAGrpsS3xA053.png圖?7

調整內存分配策略為"2",禁用內存過度使用。避免出現OOM(Out-of-Memory) Killer攻擊某些進程而產生延遲,影響測試結果。

Target# echo 2> /proc/sys/vm/overcommit_memory

wKgZO2kuU2CAbGDdAAAHNSIe2lw825.png圖?8

執行如下命令,基于CPU空載狀況下測試系統的實時性。測試指令需運行12小時,請保持評估板長時間穩定工作,測試完成后將生成統計結果no_load_output文件。

Target# cyclictest -m -Sp99 -i1000 -h800 -D12h -q > no_load_output

wKgZO2kuU_mAW_A4AAATPlqHe3U648.png圖?9

參數解析:

-m:鎖定當前和將來的內存分配;

-S:采用標準SMP測試;

-p:設置線程優先級;

-i:設置線程的基本間隔;

-h:運行后將延遲直方圖轉儲至標準輸出,亦可指定要跟蹤的最大延時時間(以微秒為單位);

-D:指定測試運行時長,附加m(分鐘)、h(小時)、d(天)指定;

-q:運行時不打印相關信息;

CPU滿負荷狀態

評估板上電啟動,進入評估板文件系統執行如下命令,修改內核printk日志等級,避免內核打印信息影響實時測試。

Target# echo 1 > /proc/sys/kernel/printk

wKgZO2kuVACAHE6IAAAGtC6a8bI402.png圖?10

調整內存分配策略為"2",禁用內存過度使用。避免出現OOM(Out-of-Memory) Killer攻擊某些進程而產生延遲,影響測試結果。

Target# echo 2 > /proc/sys/vm/overcommit_memory

wKgZPGkuVAaAexgqAAAHLu6ng8I080.png圖?11

執行如下命令,運行stress壓力測試工具,使得CPU處于滿負荷狀態。

Target# stress-ng --cpu 2 --cpu-method=all --io 2 --vm 2 --vm-bytes 32M --timeout 43200s &

wKgZO2kuVAyAXULTAAAee-bzhbg370.png圖?12

參數解析:

--cpu:指定壓力測試的進程個數;

--cpu-method:指定CPU壓力測試的方式;

--io:指定I/O測試的進程個數;

--vm:指定內存測試的進程個數;

--vm-bytes:指定每個內存測試進程中分配內存的大小;

--timeout:指定測試時長;

使用cyclictest工具測試CPU滿負荷狀態下的系統實時性能。測試指令需運行12小時,請保持評估板長時間穩定工作,測試完成后將生成統計結果overload_output文件。

Target# cyclictest -m -Sp99 -i1000 -h800 -D12h -q > overload_output

wKgZO2kuVBOAY632AAAg3iyohks906.png圖?13

隔離CPU核心狀態

本次測試以隔離CPU1核心為例,通過降低系統上所運行的其他進程對隔離CPU1產生的延遲影響,確保CPU1進程的正常運行,進而評估Linux-RT內核的系統實時性。

評估板上電啟動后,在U-Boot倒計時結束之前長按"Ctrl + C"進入U-Boot命令行模式,執行如下命令,修改環境變量,隔離CPU1核心。

U-Boot# setenv mmc_boot 'if mmc dev ${devnum}; then devtype=mmc; if test ${devnum} -eq 0; then setenv bootargs '"'"'console=ttyS1,115200n8 earlycon=uart,mmio32,0xf8401000 loglevel=8 root=/dev/mmcblk0p2 rw rootfstype=ext4 rootwait isolcpus=1'"'"'; fi; if test ${devnum} -eq 1; then setenv bootargs '"'"'console=ttyS1,115200n8 earlycon=uart,mmio32,0xf8401000 loglevel=8 root=/dev/mmcblk1p2 rw rootfstype=ext4 rootwait isolcpus=1'"'"'; fi; ext4load mmc ${devnum}:2 ${kernel_addr_r} ${bootdir}/${kernel_image}; ext4load mmc ${devnum}:2 ${fdt_addr_r} ${bootdir}/${devicetree_image}; bootm ${kernel_addr_r} - ${fdt_addr_r}; run scan_dev_for_boot_part2; fi'

U-Boot# saveenv

U-Boot# reset

wKgZPGkuVBqADK-EAAAw0r20zm0586.png圖?14

如需恢復U-Boot環境變量,在U-Boot命令行模式執行以下命令。

U-Boot# env default -a-f

U-Boot# saveenv

U-Boot# reset

wKgZPGkmlrOAZQkFAAAKhGVVYnk073.png圖?15

進入評估板文件系統,執行如下命令,查看環境變量是否設置成功。

Target# cat /proc/cmdline

wKgZO2kuVamAB_hwAAASx8BkVns687.png圖?16

執行如下命令,修改內核printk日志等級,避免內核打印信息影響實時測試。

Target# echo 1 > /proc/sys/kernel/printk

wKgZO2kuVACAHE6IAAAGtC6a8bI402.png圖?17

調整內存分配策略為"2",禁用內存過度使用。避免出現OOM(Out-of-Memory) Killer攻擊某些進程而產生延遲,影響測試結果。

Target# echo 2> /proc/sys/vm/overcommit_memory

wKgZPGkuVAaAexgqAAAHLu6ng8I080.png圖?18

執行如下命令,運行stress壓力測試工具,使得CPU處于滿負荷狀態。

Target# stress-ng --cpu 2 --cpu-method=all --io 2 --vm 2 --vm-bytes 32M --timeout 43200s &

wKgZO2kuVAyAXULTAAAee-bzhbg370.png圖?19

因CPU1核心被隔離,程序默認不會在CPU1上運行,需使用taskset工具將cyclictest測試程序運行在所有核心上,測試cyclictest在滿負荷狀態的CPU0和被隔離的CPU1的實時性能。測試指令需運行12小時,請保持評估板長時間穩定工作,測試完成后將生成統計結果iso_overload_output文件。

Target# taskset -c 0-1 cyclictest -m -Sp99 -i1000 -h800 -D12h -q > iso_overload_output

wKgZO2kuVeyAUimyAAAhwuSDRGk441.png圖?20

統計結果分析

我司已提供腳本文件get_histogram.sh用于繪制統計結果直方圖,位于產品資料“4-軟件資料Demolinux-rt-demoscyclictestbin”目錄下,請將該腳本文件拷貝至Ubuntu工作目錄下。

wKgZPGkuVfSAUlucAAAeyh8NSz8309.png圖?21

在Ubuntu系統執行如下命令,安裝gnuplot工具。

Host# sudo apt-get install gnuplot

wKgZO2kuVfmASt8aAAIwfQMxAl0640.png圖?22

(1)CPU空載狀態

請將CPU空載狀態下的統計結果no_load_output文件拷貝至Windows工作目錄,使用Windows文本工具打開該文件并拖動至文件末尾,可查看Linux系統每個核心CPU0~CPU1的最小延遲(Min Latencies)、平均延遲(Avg Latencies)、最大延遲(Max Latencies)統計結果。

wKgZO2kuVgGAKOdNAAAkhU7SScc160.png圖?23

請將CPU空載狀態下的統計結果no_load_output文件拷貝至Ubuntu,存放在get_histogram.sh同一目錄下。拷貝no_load_output文件為output文件。執行如下命令生成直方圖文件plot.png,請將其拷貝至Windows下并打開。

Host# cp no_load_output output

Host# ./get_histogram.sh

wKgZO2kuVgiADQo1AABS0i0OX_M123.png圖?24

wKgZPGkuVg-AJgHzAAAaFpP9nAQ274.png圖?25

根據測試結果output文件數據以及結合直方圖,可得主要數據如下表。本次測試中,CPU1核心Max Latencies值最大,為44us,CPU0核心的Max Latencies值最小,為42us。

備注:測試數據與實際測試環境有關,僅供參考。

wKgZO2kuVheAWzviAAAV7cNzZr0690.png

(2)CPU滿負荷狀態

參考如上方法,分析CPU滿負荷狀態下的統計結果如下所示。本次測試中,CPU1核心Max Latencies值最大,為100us,CPU0核心的Max Latencies值最小,為78us。

wKgZO2kuVh6AA2i_AAAcTxF95s0748.png圖?26

wKgZO2kuViWAN5fKAAAVS1yTIcg519.png

(3)隔離CPU核心狀態

參考如上方法,分析隔離CPU核心狀態下的統計結果如下所示。本次測試中,CPU0核心Max Latencies值最大,為42us,隔離CPU1核心的Max Latencies值最小,為28us。

wKgZPGkuViyAFi7fAAAaK0JDVFU672.png

wKgZO2kuVjOAPOnBAAAVBrqe61U657.png

根據CPU空載、CPU滿負荷、隔離CPU核心三種狀態的測試結果可知:當程序指定至隔離的CPU1核心上運行時,Linux系統延遲最低,可有效提高系統實時性。故推薦對實時性要求較高的程序(功能)指定至隔離的CPU核心運行。

外設使用說明

我司提供的Linux-RT內核與普通Linux內核測試方法一致,請參考《評估板測試手冊》進行測試即可。Linux-RT內核支持的外設接口及測試結果匯總如下表所示。

wKgZPGkuVjyAHNtxAAA97Ip85ng284.png

系統使用說明

Linux-RT內核與普通Linux內核在系統使用上保持一致,具體操作方法請參考《Linux系統使用手冊》。

?審核編輯 黃宇

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

    關注

    88

    文章

    11641

    瀏覽量

    218197
  • 編譯
    +關注

    關注

    0

    文章

    689

    瀏覽量

    34972
  • GPIO
    +關注

    關注

    16

    文章

    1314

    瀏覽量

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

掃碼添加小助手

加入工程師交流群

    評論

    相關推薦
    熱點推薦

    基于安路DR1M90 FPSoC的Linux系統全流程開發指南(4)

    本手冊由創龍科技研發,針對安路飛龍 DR1M90,詳述 Linux 系統開發流程:LinuxSDK 配置編譯、BOOT.bin(FSBL+U
    的頭像 發表于 11-30 15:46 ?2048次閱讀
    基于安路<b class='flag-5'>DR1M90</b> FPSoC的<b class='flag-5'>Linux</b>系統全流程<b class='flag-5'>開發</b>指南(4)

    一步步完成安路飛龍 DR1M90 Linux 系統固化:啟動卡制作 + eMMC 固化

    本手冊由創龍科技研發,針對安路飛龍 DR1M90,詳述 Linux 系統啟動卡制作(含工具包使用、PV 工具安裝等)與 eMMC 固化步驟,說明啟動卡和 eMMC 分區結構,提供 eMMC 剩余空間
    的頭像 發表于 11-21 10:48 ?5490次閱讀
    一步步完成安路飛龍 <b class='flag-5'>DR1M90</b> <b class='flag-5'>Linux</b> 系統固化:啟動卡制作 + eMMC 固化

    實測14us,Linux-RT實時性能及開發案例分享—基于全志T507-H國產平臺

    本文帶來的是基于全志T507-H(硬件平臺:創龍科技TLT507-EVM評估板),Linux-RT內核的硬件GPIO輸入和輸出實時性測試及應用開發案例的分享。本次演示的
    發表于 04-18 10:21

    實測14us,Linux-RT實時性能及開發案例分享—基于全志T507-H國產平臺

    的案例用戶手冊進行操作,得出如下測試結果。備注:測試數據與實際測試環境有關,僅供參考。測試結果如下表所示: 表1 Linux-RT GPIO輸入輸出案例測試數據 (1
    發表于 07-25 15:58

    米爾國產FPGA SoC芯選擇,安路飛龍DR1M90核心板重磅發布

    接口豐富,開箱即用 配套軟件開發資源豐富 MYC-YM90X核心板:工業級品質與緊湊設計 MYC-YM90X集成了DR1M90、DDR、eMMC、QSPI、WDT、Osc、Power
    發表于 01-10 14:32

    Linux-RT特點及簡單應用

    上下文切換延遲和提供硬實時保證來確保任務的低延遲和確定性。 Linux-RT上創建和管理實時任務 在Linux實時內核Linux-RT)上創建和管理實時任務涉及
    發表于 12-05 07:37

    基于全志A40i開發板——Linux-RT內核應用開發教程(1

    目錄1 Linux-RT內核簡介 32 Linux系統實時性測試 33 rt_gpio_ctrl案例 104
    發表于 04-19 15:17

    全志A40i開發板——Linux-RT內核應用開發教程(2)

    本帖最后由 Tronlong創龍科技 于 2022-4-19 15:30 編輯 目錄1 Linux-RT內核簡介 32 Linux系統實時性測試 33
    發表于 04-19 15:22

    基于全志A40i開發板——Linux-RT內核應用開發教程(3)

    目錄1 Linux-RT內核簡介 32 Linux系統實時性測試 33 rt_gpio_ctrl案例 104
    發表于 04-19 15:33

    每日推薦 | 第十期蓋樓送書活動,全志開發Linux-RT內核應用開發教程

    Verilog HDL知識,本書在介紹數字電路設計的過程中列舉了Verilog HDL的很多例程,并假定讀者沒有任何數字邏輯基礎知識。3、基于全志A40i開發板——Linux-RT內核應用開發
    發表于 04-20 10:30

    創龍科技DR1M90工業評估板的關鍵優勢

    安路科技生態合作伙伴創龍科技正式推出了基于安路科技產品DR1M90工業核心板,共同助力國產FPGA技術的推廣和創新應用。
    的頭像 發表于 08-18 16:20 ?1097次閱讀

    創龍 瑞芯微 RK3588 國產2.4GHz八核 工業開發板—Linux-RT應用開發案例

    Linux-RT 性能;還提供 rt_gpio_ctrl(實時線程控制 LED 翻轉)、rt_input(實時線程監聽按鍵觸發 LED)兩個開發
    的頭像 發表于 09-25 17:25 ?581次閱讀
    創龍 瑞芯微 RK3588 國產2.4GHz八核 工業<b class='flag-5'>開發</b>板—<b class='flag-5'>Linux-RT</b>應用<b class='flag-5'>開發</b>案例

    安路DR1M90評估板:基礎外設到通信模塊測試指南

    本手冊由創龍科技研發,針對安路飛龍 DR1M90 評估板,詳述 Linux 系統下功能測試流程。含系統啟動驗證,LED、按鍵、DDR 等基礎外設測試,ETH、WiFi、4G、GPS 等通信功能測試
    的頭像 發表于 11-20 15:26 ?913次閱讀
    安路<b class='flag-5'>DR1M90</b>評估板:<b class='flag-5'>從</b>基礎外設到通信模塊測試指南

    基于安路DR1M90 FPSoC 的Linux 系統全流程開發指南(1

    本手冊由創龍科技研發,針對安路飛龍 DR1M90,詳述 Linux 系統開發流程:LinuxSDK 配置編譯、BOOT.bin(FSBL+U
    的頭像 發表于 11-25 14:09 ?247次閱讀
    基于安路<b class='flag-5'>DR1M90</b> FPSoC 的<b class='flag-5'>Linux</b> 系統全流程<b class='flag-5'>開發</b>指南(<b class='flag-5'>1</b>)

    基于安路DR1M90 FPSoC 的Linux 系統全流程開發指南(3)

    本手冊由創龍科技研發,針對安路飛龍 DR1M90,詳述 Linux 系統開發流程:LinuxSDK 配置編譯、BOOT.bin(FSBL+U
    的頭像 發表于 11-26 17:01 ?172次閱讀
    基于安路<b class='flag-5'>DR1M90</b> FPSoC 的<b class='flag-5'>Linux</b> 系統全流程<b class='flag-5'>開發</b>指南(3)