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

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

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

3天內不再提示

openEuler Embedded軟實時系統(tǒng)的特性說明

openEuler ? 來源:openEuler ? 作者:openEuler ? 2022-05-10 15:22 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

本文主要介紹 openEuler Embedded 軟實時系統(tǒng)的特性說明,構建方式和性能測試。

軟實時特性介紹

「實時性簡介」

實時的訴求通常是事件的響應時間不能超過規(guī)定的期限,一個事件的最大響應時間應該是確定的、可以預測的。

「Preempt_RT 補丁簡介」

Preempt_RT 補?。ㄒ韵潞喎Q RT 補?。┛芍苯哟蛟趦群嗽创a上,并通過內核配置選項 CONFIG_PREEMPT_RT=y 使能軟實時功能。RT 補丁實現的核心在于最小化內核中不可搶占部分的代碼,從而使高優(yōu)先級任務就緒時能及時搶占低優(yōu)先級任務,減少切換時延。除此之外,補丁通過多種降低時延的措施,對鎖、驅動等模塊也進行了優(yōu)化。

openEuler Embedded 版本中可使用的 RT 補丁請參考:

  1. QEMU:
?
  1. patch-5.10.0-60.10.0-rt62.patch
  2. patch-5.10.0-60.10.0-rt62_openeuler_defconfig.patch
?
  1. raspberrypi
?
  1. 0000-raspberrypi-kernel.patch(樹莓派補丁)
  2. 0001-add-preemptRT-patch.patch
  3. 0002-modifty-bcm2711_defconfig-for-rt-rpi-kernel.patch
?

「補丁獲取地址」

https://gitee.com/src-openeuler/kernel/blob/openEuler-22.03-LTS

「補丁關鍵功能舉例」

  1. 增加中斷程序的可搶占性(中斷線程化、軟中斷線程化)
  2. 增加臨界區(qū)的可搶占性(如自旋鎖)
  3. 增加關中斷代碼的可搶占性
  4. 解決優(yōu)先級反轉問題(優(yōu)先級繼承)

軟實時鏡像構建指導

具體下載源碼和編譯流程建議參考容器環(huán)境下的快速構建指導:https://openeuler.gitee.io/yocto-meta-openeuler/yocto/quickbuild/container-build.html

「QEMU RT 鏡像構建方式」

  • 步驟:

下載源碼 --> 修改 bb 文件打入 RT 補丁 --> 手動打開 CONFIG_PREEMPT_RT --> 編譯構建

  • 更改 aarch64 鏡像內核 bb 文件,使其構建時自動打入 RT 補丁,示例:
cd /usr1/openeuler/src/yocto-meta-openeuler/meta-openeuler/recipes-kernel/linux/

sed -i '/0001-arm64-add-zImage/a    file://src-kernel-5.10/patch-5.10.0-60.10.0-rt62.patch \' linux-openeuler.bb

sed -i '/patch-5.10.0-60.10.0-rt62.patch/a    file://src-kernel-5.10/patch-5.10.0-60.10.0-rt62_openeuler_defconfig.patch \' linux-openeuler.bb

git diff 輸出示例:

diff --git a/meta-openeuler/recipes-kernel/linux/linux-openeuler.bb b/meta-openeuler/recipes-kernel/linux/linux-openeuler.bb
index 77d8717..5a4b2b8 100644
--- a/meta-openeuler/recipes-kernel/linux/linux-openeuler.bb
+++ b/meta-openeuler/recipes-kernel/linux/linux-openeuler.bb
@@ -11,6 +11,8 @@ SRC_URI = "file://kernel-5.10 
 # add patches only for aarch64
 SRC_URI_append_aarch64 += " 
     file://yocto-embedded-tools/patches/${ARCH}/0001-arm64-add-zImage-support-for-arm64.patch 
+    file://src-kernel-5.10/patch-5.10.0-60.10.0-rt62.patch 
+    file://src-kernel-5.10/patch-5.10.0-60.10.0-rt62_openeuler_defconfig.patch 
 "

 # add patches for OPENEULER_PLATFROM such as aarch64-pro
  • 打開 aarch64 鏡像 defconfig 中的 CONFIG_PREEMPT_RT,示例:
cd /usr1/openeuler/src/yocto-embedded-tools/config/arm64/

sed -i 's/CONFIG_PREEMPT=y/CONFIG_PREEMPT_RT=y/g' defconfig-kernel

git diff 輸出示例:

diff --git a/config/arm64/defconfig-kernel b/config/arm64/defconfig-kernel
index dece4f7..c4ef7ab 100644
--- a/config/arm64/defconfig-kernel
+++ b/config/arm64/defconfig-kernel
@@ -80,7 +80,7 @@ CONFIG_HIGH_RES_TIMERS=y

 # CONFIG_PREEMPT_NONE is not set
 # CONFIG_PREEMPT_VOLUNTARY is not set
-CONFIG_PREEMPT=y
+CONFIG_PREEMPT_RT=y
 CONFIG_PREEMPT_COUNT=y
 CONFIG_PREEMPTION=y
  • 編譯時選擇 aarch64-std 架構,示例:
cd /usr1/openeuler/src/yocto-meta-openeuler/scripts

source compile.sh aarch64-std /usr1/build /usr1/openeuler/gcc/openeuler_gcc_arm64le

bitbake openeuler-image
  • 構建鏡像生成目錄:

    /usr1/build/output/

  • 二進制介紹:

  1. Image-5.10.0:QEMU RT 內核鏡像
  2. openeuler-image-qemu-aarch64-<時間戳>.rootfs.cpio.gz:QEMU 文件系統(tǒng)
  3. openeuler-glibc-x86-64-openeuler-image-aarch64-qemu-aarch64-toolchain-22.03.shSDK 工具鏈
  4. zImage:QEMU RT 內核的壓縮鏡像

「樹莓派 RT 鏡像構建方式」

  • 步驟:

下載源碼 --> 修改 bb 文件打入 RT 補丁(補丁已自動打開 CONFIG_PREEMPT_RT) --> 編譯構建

  • 更改 raspberrypi 鏡像內核 bb 文件,使其構建時自動打入 RT 補丁并打開 CONFIG_PREEMPT_RT,示例:
cd /usr1/openeuler/src/yocto-meta-openeuler/bsp/meta-openeuler-bsp/raspberrypi/recipes-kernel/linux/

sed -i '/0000-raspberrypi-kernel.patch/a    file://src-kernel-5.10/0001-add-preemptRT-patch.patch \' linux-openeuler.bbappend

sed -i '/0001-add-preemptRT-patch.patch/a    file://src-kernel-5.10/0002-modifty-bcm2711_defconfig-for-rt-rpi-kernel.patch \' linux-openeuler.bbappend

git diff 輸出示例:

diff --git a/bsp/meta-openeuler-bsp/raspberrypi/recipes-kernel/linux/linux-openeuler.bbappend b/bsp/meta-openeuler-bsp/raspberrypi/recipes-kernel/linux/linux-openeuler.bbappend
index ad6ebab..cf52b3d 100644
--- a/bsp/meta-openeuler-bsp/raspberrypi/recipes-kernel/linux/linux-openeuler.bbappend
+++ b/bsp/meta-openeuler-bsp/raspberrypi/recipes-kernel/linux/linux-openeuler.bbappend
@@ -1,5 +1,7 @@
 SRC_URI += "
     file://src-kernel-5.10/0000-raspberrypi-kernel.patch 
+    file://src-kernel-5.10/0001-add-preemptRT-patch.patch 
+    file://src-kernel-5.10/0002-modifty-bcm2711_defconfig-for-rt-rpi-kernel.patch 
 "
 OPENEULER_KERNEL_CONFIG = "${S}/arch/${ARCH}/configs/bcm2711_defconfig"
 do_configure_prepend() {
  • 編譯時選擇 raspberrypi4-64 架構,示例:
cd /usr1/openeuler/src/yocto-meta-openeuler/scripts

source compile.sh raspberrypi4-64 /usr1/build /usr1/openeuler/gcc/openeuler_gcc_arm64le

bitbake openeuler-image
  • 構建鏡像生成目錄:

    /usr1/build/output/

  • 二進制介紹:

  1. Image:樹莓派 RT 內核鏡像
  2. openeuler-image-raspberrypi4-64-<時間戳>.rootfs.rpi-sdimg:樹莓派 RT 支持 SD 卡鏡像
  3. openeuler-glibc-x86-64-openeuler-image-cortexa72-raspberrypi4-64-toolchain-22.03.sh:SDK 工具鏈

樹莓派 4B 的具體使用方法后期會詳細介紹。

?

「說明」

  • 如果開發(fā)人員使用的內核配置不是 RT 補丁中修改的 defconfig(QEMU:arch/arm64/configs/openeuler\_defconfig,樹莓派:arch/arm64/configs/bcm2711\_defconfig),則需要在自己的 defconfig 中開啟內核配置選項CONFIG_PREEMPT_RT,例如上面 QEMU 構建方式中的 yocto-embedded-tools/config/arm64/defconfig-kernel
  • openEuler Embedded 軟實時特性當前僅支持 arm64 架構
?

驗證環(huán)境的軟實時是否使能

  • 查看系統(tǒng)是否有 PREEMPT_RT 字樣:

輸入示例:

uname -a

輸出示例:

Linux openeuler 5.10.0-rt62-v8 #1 SMP PREEMPT_RT Fri Mar 25 0322 UTC 2022 aarch64 GNU/Linux

軟實時性能測試

「軟實時相關測試」

參考 RT-Tests 指導

https://wiki.linuxfoundation.org/realtime/documentation/howto/tools/rt-tests

進行軟實時相關測試,用例包括但不限于:

  1. cyclictest 時延性能測試
  2. pi_stress 優(yōu)先級繼承測試
  3. hackbench 負載構造工具

下面以 cyclictest 時延性能測試為例進行說明。

「cyclictest 時延性能測試」

  1. 準備開發(fā)環(huán)境

安裝 SDK,準備編譯環(huán)境,示例:

sh openeuler-glibc-x86_64-openeuler-image-aarch64-qemu-aarch64-toolchain-22.03.sh

. /path/to/sdk/environment-setup-aarch64-openeuler-linux
  1. 編譯用例
git clone https://git.kernel.org/pub/scm/utils/rt-tests/rt-tests.git

cd rt-tests

git checkout stable/v1.0

make all
  1. 執(zhí)行用例

編譯完成后生成二進制 cyclictest,傳入單板環(huán)境后可查看執(zhí)行 cyclictest 時可配置的參數:

./cyclictest --help

cyclictest 有多種參數配置方法,用例具體的入參設計可參考 test-design

https://wiki.linuxfoundation.org/realtime/documentation/howto/tools/cyclictest/test-design

輸入示例:

./cyclictest -p 90 -m -i 100 -n -h 100 -l 10000000

輸出示例:

# /dev/cpu_dma_latency set to 0us
policy: fifo: loadavg: 2.32 1.99 1.58 1/95 311

T: 0 (  311) P:90 I:100 C:10000000 Min:      7 Act:    9 Avg:    8 Max:      16

即用例循環(huán) 1000 萬次后,平均時延為 8us,最壞時延為 16us(該數據僅為示例,具體以環(huán)境實測為準)。

?

「說明:」

如果樹莓派 4B 的空載情況下,平均時延較差(如超過 20us),可查看使用的樹莓派固件是否將 CPU 頻率配置為了節(jié)能模式,并根據需要將 CPU 頻率配置為最高運行頻率。如無 cpufreq 相關接口,則不涉及。

?

輸入示例:

cat /sys/devices/system/cpu/cpu*/cpufreq/scaling_governor

輸出示例:

powersave

如上結果表示 CPU 頻率為節(jié)能模式。

配置 CPU 最高運行頻率,輸入示例:

echo performance > /sys/devices/system/cpu/cpu*/cpufreq/scaling_governor
審核編輯 :李倩

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

    關注

    7

    文章

    2788

    瀏覽量

    50389
  • 源碼
    +關注

    關注

    8

    文章

    671

    瀏覽量

    30334
  • openEuler
    +關注

    關注

    2

    文章

    328

    瀏覽量

    6341

原文標題:openEuler Embedded 軟實時系統(tǒng)介紹

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

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

掃碼添加小助手

加入工程師交流群

    評論

    相關推薦
    熱點推薦

    openEuler 22.03為什么無法運行在VisionFive2上?

    (求助)openEuler 22.03無法運行在VisionFive2上
    發(fā)表于 06-19 07:13

    CODESYS全平臺適配openEuler 布局工業(yè)4.0前沿

    OpenAtom openEuler(簡稱“openEuler”)社區(qū)與工業(yè)自動化全球領軍企業(yè)CODESYS集團聯合宣布,經過深度技術合作, CODESYS全系列開發(fā)平臺(含CODESYS
    的頭像 發(fā)表于 06-10 18:27 ?890次閱讀

    通動力亮相openEuler Developer Day 2025

    的技術成果,分享各行各業(yè)基于openEuler的商業(yè)實踐。通動力作為openEuler項目群黃金捐贈人、openEuler社區(qū)重要參與者和貢獻者,應邀出席本次大會并參加“2025-2
    的頭像 發(fā)表于 04-15 17:21 ?571次閱讀

    openEuler Developer Day 2025成功舉辦

    近日,由OpenAtom openEuler(簡稱“openEuler”)社區(qū)發(fā)起的openEuler Developer Day 2025(簡稱“大會”)在杭州成功舉辦。
    的頭像 發(fā)表于 04-14 16:11 ?566次閱讀

    潤和軟件亮相openEuler Developer Day 2025

    近日,openEuler Developer Day 2025 (ODD 2025)在杭州成功舉行。本次會議由開放原子開源基金會openEuler社區(qū)發(fā)起,全面解讀了全新發(fā)布的openEuler 25.03 版本創(chuàng)新
    的頭像 發(fā)表于 04-14 11:42 ?565次閱讀

    回顧2024年度潤和軟件與openEuler的精彩瞬間

    openEuler生態(tài)系統(tǒng)蓬勃發(fā)展中扮演了關鍵角色。讓我們共同回顧2024年度潤和軟件與openEuler的精彩瞬間!
    的頭像 發(fā)表于 01-07 18:12 ?1095次閱讀

    通動力亮相openEuler Summit 2024

    近日,主題為“以智能,致世界”的openEuler Summit 2024在北京隆重舉行。本次大會由開放原子開源基金會孵化及運營的 openEuler社區(qū)主辦,通動力等產業(yè)伙伴參與協(xié)辦。會上,
    的頭像 發(fā)表于 11-26 16:50 ?790次閱讀

    RK3588J成功適配“歐拉”系統(tǒng)!助力能源電力國產OS!

    系統(tǒng)、分布式總線等特性,以及必要的基礎設施,將諸多的運行時與Linux有機集成,共同為嵌入式系統(tǒng)提供高效、靈活、安全的解決方案。 圖 2open
    發(fā)表于 11-21 15:45

    通動力榮膺2024年度openEuler社區(qū)突出貢獻單位

    近日,主題為“以智能 致世界”的操作系統(tǒng)大會2024在北京中關村國際創(chuàng)新中心舉辦,大會由openEuler社區(qū)和全球計算聯盟主辦,通動力參與協(xié)辦。作為開放原子開源基金會白金捐贈人
    的頭像 發(fā)表于 11-20 11:50 ?872次閱讀

    華為亮相操作系統(tǒng)大會openEuler Summit 2024

    “以智能 致世界”為主題的操作系統(tǒng)大會 & openEuler Summit 2024 在北京中關村國際創(chuàng)新中心舉行。本次大會由 openEuler社區(qū)、全球計算聯盟主辦。華為公司戰(zhàn)略部部長蓋剛出席該活動并做大會致辭。
    的頭像 發(fā)表于 11-18 11:52 ?829次閱讀

    潤和軟件亮相操作系統(tǒng)大會openEuler Summit 2024

    近日,操作系統(tǒng)大會&openEuler Summit 2024在北京隆重舉辦。本次大會由openEuler社區(qū)和全球計算聯盟主辦,江蘇潤和軟件股份有限公司(以下簡稱“潤和軟件”)參與協(xié)辦。旨在匯聚全球產業(yè)發(fā)展力量,共同探討操作
    的頭像 發(fā)表于 11-17 09:08 ?971次閱讀

    潤和軟件參與openEuler社區(qū)操作系統(tǒng)安全主題技術交流

    Meetup,分享和交流openEuler社區(qū)在操作系統(tǒng)安全領域的最新進展、安全特性和實踐案例。江蘇潤和軟件股份有限公司(以下簡稱“潤和軟件”)作為openEuler項目群黃金捐贈人受
    的頭像 發(fā)表于 11-13 16:14 ?810次閱讀

    第二屆openEuler生態(tài)大會圓滿結束

    近日,第二屆openEuler生態(tài)大會(中國·湖南)成功舉辦。大會以“根植openEuler共建開源生態(tài)”為主題,旨在響應國家開源產業(yè)發(fā)展戰(zhàn)略,推動建設以openEuler為根技術的開源操作
    的頭像 發(fā)表于 10-31 16:02 ?679次閱讀

    國際參加openEuler 24.03 LTS版本發(fā)布會

    國產操作系統(tǒng)的發(fā)展再次迎來了重要里程碑,開放原子開源基金會openEuler社區(qū)在北京舉辦openEuler 24.03 LTS版本發(fā)布會。這場大會不僅是一個版本的發(fā)布儀式,更是一次技術革新的展示,一個社區(qū)成員共同參與的盛會。
    的頭像 發(fā)表于 10-10 11:23 ?826次閱讀

    飛凌嵌入式受邀參加openEuler Embedded Meetup(廣州站)

    9月12日下午,由openEuler社區(qū)主辦的openEuler Embedded Meetup(廣州站)在華南理工大學舉行,此次交流會旨在深入探討嵌入式技術的最新趨勢,加強產學研的交流與合作,吸引
    的頭像 發(fā)表于 09-13 09:45 ?1073次閱讀
    飛凌嵌入式受邀參加<b class='flag-5'>openEuler</b> <b class='flag-5'>Embedded</b> Meetup(廣州站)