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

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

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

3天內不再提示

RK3562 單板機 Linux-RT 系統開發指南:內核配置、實時性優化與案例詳解

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

掃碼添加小助手

加入工程師交流群

?前 言

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

開發環境

Windows開發環境:Windows1064bit、Windows764bit

Linux開發環境:VMware16.2.5、Ubuntu20.04.6 64bit

LinuxSDK:LinuxSDK-[版本號](基于rk3562_linux_sdk_release_v1.2.0)

系統版本:Tronlong-Desktop 20.04、Linux-5.10.209、Linux-RT-5.10.209、U-Boot-2017.09

交叉編譯工具鏈:

應用開發交叉編譯工具鏈:aarch64-linux-gnu-gcc(版本為9.4.0)

U-Boot開發、內核開發:gcc-arm-10.3-2021.07-x86_64-arm-none-linux-gnueabihf

備注:本文基于2GByte LPDDR4X、16GByte eMMC配置單板機進行演示。

術語表

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

wKgZO2mKzYaAVj-sAAAbHEW1VFQ201.png

注意事項

我司默認使用的是Linux內核,同時提供了Linux-RT內核位于產品資料“4-軟件資料LinuxKernelimagelinux-5.10-[版本號]-[Git系列號]”目錄下。請按照如下方法替換為Linux-RT內核。

將Linux-RT內核鏡像boot-rt.img拷貝至單板機系統任意目錄下。執行如下命令,替換內核鏡像至eMMC,單板機重啟生效。

備注:如需固化至系統系統啟動卡,請將命令中的"mmcblk0p3"替換為"mmcblk1p3"。

Target# dd if=boot-rt.img of=/dev/mmcblk0p3conv=fsync

Target# sync

Target# reboot

wKgZPGmKzY-AaLINAAAYOXkshE4921.png圖?1

wKgZPGmKzY-AI6q6AAApiDe4WD0842.png圖?2?Linux-RT內核

1Linux-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內核的應用程序使用了調度策略后,系統將根據調度策略對其進行調優。

2Linux系統實時性測試

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

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

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

參考鏈接:https://wiki.linuxfoundation.org/realtime/documentation/howto/tools/cyclictest/start?s=cyclictest。

2.1Linux、Linux-RT實時性對比

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

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

Host# ifconfig

Host# iperf3 -s

wKgZO2mKzcCAMNCdAAFix02q6Zs487.png圖?3

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

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

wKgZPGmKzciANg9eAAANaiGZ9jQ945.png圖?4

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

Target# cyclictest -t5 -p98 -m -D10m

wKgZO2mKzdKANVNqAABPyeguwlI132.png圖?5?Linux-RT-5.10.209內核測試結果

wKgZO2mKzdKANVNqAABPyeguwlI132.png圖?6?Linux-5.10.209內核測試結果

wKgZO2mKzd-ANiWdAAAqTewfUIw292.png

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

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

wKgZPGmKzeaAbQn0AAEIFCb8VZU444.png圖?7

2.2Linux-RT性能測試

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

2.2.1CPU空載狀態

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

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

wKgZPGmKze-AYRpnAAAH6yqwGfY214.png圖?8

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

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

wKgZPGmKzfeAMJG4AAAInBla2gk328.png圖?9

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

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

wKgZPGmKzf-AU2OxAAAMB2iRA-w557.png圖?10

參數解析:

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

-n:使用clock_nanosleep;

-S:采用標準SMP測試;

-p:設置線程優先級;

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

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

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

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

2.2.2CPU滿負荷狀態

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

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

wKgZPGmKze-AYRpnAAAH6yqwGfY214.png圖?11

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

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

wKgZPGmKzfeAMJG4AAAInBla2gk328.png圖?12

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

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

wKgZO2mKzj-AVwowAAAZjId2pDA445.png圖?13

參數解析:

--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

wKgZO2mKzsKABFrvAAAmrhTjfV8973.png圖?14

2.2.3隔離CPU核心狀態

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

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

備注:若從板載eMMC啟動系統,請將命令中"sd"修改為"emmc"。

U-Boot# setenv bootargs "storagemedia=sd androidboot.storagemedia=sd androidboot.mode=normal isolcpus=3"

U-Boot# saveenv

U-Boot# reset

wKgZPGmKzuKAfCjbAAAStRaUXGw273.png圖?15

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

U-Boot# env default -f -a

U-Boot# saveenv

U-Boot# reset

wKgZO2mKzuqAS8i8AAAU27ODN7I743.png圖?16

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

Target# cat /proc/cmdline

wKgZO2mKzvGAfzfjAAAiux-VB_g098.png圖?17

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

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

wKgZPGmKze-AYRpnAAAH6yqwGfY214.png圖?18

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

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

wKgZPGmKzfeAMJG4AAAInBla2gk328.png圖?19

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

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

wKgZO2mKzj-AVwowAAAZjId2pDA445.png圖?20

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

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

wKgZO2mKzxCAZ5feAAAosMQdjnE058.png圖?21

2.2.4統計結果分析

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

wKgZPGmKzxeAVuKRAAA_3MzYr-Q091.png圖?22

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

Host# sudo apt-get install gnuplot

wKgZPGmKzyCAJ5giAAGZxKRPa1Y143.png圖?23

(1)CPU空載狀態

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

wKgZPGmKzyiANKcUAACDlEeying985.png圖?24

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

Host# cp no_load_outputoutput

Host# ./get_histogram.sh

wKgZPGmKzzCALDqTAADD_AJJSDE238.png圖?25

wKgZO2mKzzGAavfZABKQbEYugts738.png圖?26

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

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

wKgZPGmK0ByARQU6AAAWYjcQYZg229.png

(2)CPU滿負荷狀態

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

wKgZO2mK0CSAG3NIAABQ74eEwZ4344.png圖?27

wKgZO2mK0CqAJ96LAAAW8-e8vls046.png

(3)隔離CPU核心狀態

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

wKgZPGmK0DCAJFh0AABRnG91UD8480.png圖?28

wKgZPGmK0DiALSk4AAAXY0-GzNU178.png

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

由于篇幅過長等原因,部分內容均不逐一展示,如需獲取完整版詳細資料,請關注Tronlong創龍科技微信公眾號或官網,或者評論區留言,感謝您的支持!

審核編輯 黃宇

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

    關注

    2

    文章

    119

    瀏覽量

    10616
  • 單板機
    +關注

    關注

    1

    文章

    42

    瀏覽量

    18868
  • RK3562
    +關注

    關注

    0

    文章

    99

    瀏覽量

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

掃碼添加小助手

加入工程師交流群

    評論

    相關推薦
    熱點推薦

    RK3562 單板機圖形用戶界面開發完全手冊:Qt Creator 配置與 LVGL 案例詳解(二)

    本節為創龍科技RK3562 單板機 Qt 開發指南,核心包含開發環境配置、工程編譯、網絡調試及實戰案例。詳細說明 Qt Creator 交叉
    的頭像 發表于 02-27 10:42 ?4897次閱讀
    <b class='flag-5'>RK3562</b> <b class='flag-5'>單板機</b>圖形用戶界面<b class='flag-5'>開發</b>完全手冊:Qt Creator <b class='flag-5'>配置</b>與 LVGL 案例<b class='flag-5'>詳解</b>(二)

    延時僅33us,Linux-RT實時性能測試分享—基于瑞芯微RK3562J國產平臺

    本文主要介紹瑞芯微RK3562J的實時測試,開發環境如下:U-Boot:U-Boot-2017.09Kernel:Linux-RT-5.1
    發表于 08-22 13:51

    Linux-RT特點及簡單應用

    Linux-RT是指Linux Real-Time(實時)的簡稱,它是針對實時性能優化Linux
    發表于 12-05 07:37

    SBC8100單板機設計及使用指南

    SBC8100單板機設計及使用指南 SBC8100單板機開發者使用OMAP35x系列處理器提供了完善的硬件及軟件開發環境,支持
    發表于 03-09 09:27 ?40次下載

    Linux內核配置系統詳解

    ,都將面臨著同樣的問題,即如何將源代碼融入到 Linux 內核中,增加相應的 Linux 配置選項,并最終被編譯進 Linux
    發表于 11-01 15:45 ?4次下載

    Linux系統連接藍牙、WiFi方法分享,適用瑞芯微RK3562等主板產品

    Linux系統連接藍牙、WiFi方法分享,適用瑞芯微RK3562RK3568、RK3588等開發
    的頭像 發表于 09-12 10:24 ?2516次閱讀
    <b class='flag-5'>Linux</b><b class='flag-5'>系統</b>連接藍牙、WiFi方法分享,適用瑞芯微<b class='flag-5'>RK3562</b>等主板產品

    嵌入式開發必備-RK3562演示Linux常用系統查詢命令(下)

    本文繼續介紹Linux系統查看硬件配置及常用調試命令,方便開發者快速了解開發板硬件信息及進行相關調試。觸覺智能
    的頭像 發表于 01-03 13:54 ?1108次閱讀
    嵌入式<b class='flag-5'>開發</b>必備-<b class='flag-5'>RK3562</b>演示<b class='flag-5'>Linux</b>常用<b class='flag-5'>系統</b>查詢命令(下)

    Linux系統更換開機logo方法教程,觸覺智能RK3562開發板演示

    本文介紹Linux系統更換開機logo方法教程,通用RK3566、RK3568、RK3588、RK
    的頭像 發表于 01-06 10:53 ?1504次閱讀
    <b class='flag-5'>Linux</b><b class='flag-5'>系統</b>更換開機logo方法教程,觸覺智能<b class='flag-5'>RK3562</b><b class='flag-5'>開發</b>板演示

    RK3588核心板/開發RT-Linux系統實時及硬件中斷延遲測試

    本文介紹瑞芯微RK3588芯片平臺RT-Linux系統實時及硬件中斷延遲測試,基于觸覺智能RK
    的頭像 發表于 11-28 18:57 ?665次閱讀
    <b class='flag-5'>RK</b>3588核心板/<b class='flag-5'>開發</b>板<b class='flag-5'>RT-Linux</b><b class='flag-5'>系統</b><b class='flag-5'>實時</b><b class='flag-5'>性</b>及硬件中斷延遲測試

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

    本手冊由創龍科技研發,針對 DR1M90,詳述 Linux-RT 實時內核開發:含實時測試(
    的頭像 發表于 12-02 10:38 ?1173次閱讀
    基于 DR1M90 的 <b class='flag-5'>Linux-RT</b> <b class='flag-5'>內核</b><b class='flag-5'>開發</b>:從編譯<b class='flag-5'>配置</b>到 GPIO / 按鍵應用實現(1)

    RK3562單板機系統使用與開發手冊:基礎操作、升級部署與工具鏈配置(一)

    本文為創龍科技RK3562 單板機 Linux 系統使用指南,核心包含系統配置、升級部署與組件安
    的頭像 發表于 01-27 15:05 ?176次閱讀
    <b class='flag-5'>RK3562</b><b class='flag-5'>單板機</b><b class='flag-5'>系統</b>使用與<b class='flag-5'>開發</b>手冊:基礎操作、升級部署與工具鏈<b class='flag-5'>配置</b>(一)

    3562 單板機 Linux 系統固化完全指南:從 SD 卡啟動到 eMMC 永久部署

    本文為創龍科技 3562 單板機系統固化操作指南,核心涵蓋 SD 啟動卡、升級卡制作,以及 eMMC 芯片系統固化與啟動驗證。文檔詳細說明專
    的頭像 發表于 02-04 10:34 ?848次閱讀
    <b class='flag-5'>3562</b> <b class='flag-5'>單板機</b> <b class='flag-5'>Linux</b> <b class='flag-5'>系統</b>固化完全<b class='flag-5'>指南</b>:從 SD 卡啟動到 eMMC 永久部署

    RK3562 單板機系統開發完全手冊:U-Boot/Kernel/Rootfs 開發與性能優化

    本文為創龍科技RK3562 單板機 Linux 系統開發指南,核心包含 SDK 配置內核與文件
    的頭像 發表于 02-05 17:20 ?260次閱讀
    <b class='flag-5'>RK3562</b> <b class='flag-5'>單板機</b><b class='flag-5'>系統開發</b>完全手冊:U-Boot/Kernel/Rootfs <b class='flag-5'>開發</b>與性能<b class='flag-5'>優化</b>

    RK3562 單板機 Linux 應用開發實戰手冊:LED/CAN/TCP/UART 案例與 Python 開發(二)

    本文為創龍科技RK3562 單板機應用開發指南,核心包含交叉編譯工具鏈部署、GDB 遠程調試,以及 LED、CAN、TCP/UDP、MQTT 等實戰案例。文檔支持 C/C++ 與 Python 雙語
    的頭像 發表于 02-25 11:35 ?272次閱讀
    <b class='flag-5'>RK3562</b> <b class='flag-5'>單板機</b> <b class='flag-5'>Linux</b> 應用<b class='flag-5'>開發</b>實戰手冊:LED/CAN/TCP/UART 案例與 Python <b class='flag-5'>開發</b>(二)

    RK3562 單板機圖形用戶界面開發完全手冊:Qt Creator 配置與 LVGL 案例詳解(一)

    本節為創龍科技RK3562 單板機 Qt 開發指南,核心包含開發環境配置、工程編譯、網絡調試及實戰案例。詳細說明 Qt Creator 交叉
    的頭像 發表于 02-26 11:41 ?246次閱讀
    <b class='flag-5'>RK3562</b> <b class='flag-5'>單板機</b>圖形用戶界面<b class='flag-5'>開發</b>完全手冊:Qt Creator <b class='flag-5'>配置</b>與 LVGL 案例<b class='flag-5'>詳解</b>(一)