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

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

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

3天內不再提示

openEuler Embedded軟實時系統的特性說明

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

掃碼添加小助手

加入工程師交流群

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

軟實時特性介紹

「實時性簡介」

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

「Preempt_RT 補丁簡介」

Preempt_RT 補丁(以下簡稱 RT 補丁)可直接打在內核源碼上,并通過內核配置選項 CONFIG_PREEMPT_RT=y 使能軟實時功能。RT 補丁實現的核心在于最小化內核中不可搶占部分的代碼,從而使高優先級任務就緒時能及時搶占低優先級任務,減少切換時延。除此之外,補丁通過多種降低時延的措施,對鎖、驅動等模塊也進行了優化。

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. 增加臨界區的可搶占性(如自旋鎖)
  3. 增加關中斷代碼的可搶占性
  4. 解決優先級反轉問題(優先級繼承)

軟實時鏡像構建指導

具體下載源碼和編譯流程建議參考容器環境下的快速構建指導: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 文件系統
  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 的具體使用方法后期會詳細介紹。

?

「說明」

  • 如果開發人員使用的內核配置不是 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 架構
?

驗證環境的軟實時是否使能

  • 查看系統是否有 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 優先級繼承測試
  3. hackbench 負載構造工具

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

「cyclictest 時延性能測試」

  1. 準備開發環境

安裝 SDK,準備編譯環境,示例:

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. 執行用例

編譯完成后生成二進制 cyclictest,傳入單板環境后可查看執行 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

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

?

「說明:」

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

?

輸入示例:

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

輸出示例:

powersave

如上結果表示 CPU 頻率為節能模式。

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

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

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

    關注

    7

    文章

    2837

    瀏覽量

    53283
  • 源碼
    +關注

    關注

    8

    文章

    685

    瀏覽量

    31317
  • openEuler
    +關注

    關注

    2

    文章

    337

    瀏覽量

    6730

原文標題:openEuler Embedded 軟實時系統介紹

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

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

掃碼添加小助手

加入工程師交流群

    評論

    相關推薦
    熱點推薦

    深入解析bq32000實時時鐘:特性、應用與設計要點

    深入解析bq32000實時時鐘:特性、應用與設計要點 在電子設備的設計中,實時時鐘(RTC)是一個關鍵組件,它為系統提供精確的時間和日期信息。TI的bq32000
    的頭像 發表于 02-09 11:25 ?205次閱讀

    開啟功能的MOS管開關電路說明

    電源開關電路,經常用在各“功能模塊”電路的電源通斷控制,是常用電路之一。本文要講解的電源開關電路,是用MOS管實現的,且帶開啟功能。 電路說明 電源開關電路,尤其是MOS管電源開關電路,經常用在各
    發表于 12-01 08:23

    潤和軟件亮相操作系統大會openEuler Summit 2025

    2025年11月14-15日,以“智躍無界,開源致遠”為主題的操作系統大會&openEuler Summit 2025在北京隆重舉辦。本次大會由開放原子開源歐拉(OpenAtom
    的頭像 發表于 11-20 09:36 ?451次閱讀
    潤和軟件亮相操作<b class='flag-5'>系統</b>大會<b class='flag-5'>openEuler</b> Summit 2025

    通動力成為openEuler社區首批全球化先鋒伙伴

    11月14—15日,操作系統大會&openEuler Summit 2025在北京隆重舉行。本次大會由開放原子開源歐拉社區協同通動力等數十家產業伙伴共同舉辦,旨在匯聚全球產業界力量,打造極具創新力的操作
    的頭像 發表于 11-19 17:25 ?733次閱讀

    嵌入式實時操作系統的特點

    實時嵌入式操作系統(Real-Time Embedded Operating System)是專門設計用于嵌入式系統實時操作
    發表于 11-13 06:30

    通動力攜手openEuler推動開源生態全球化發展

    8月29日,開放原子開源基金會園區行在重慶召開。開放原子開源基金會openEuler社區作為開源社區代表參會,開源歐拉用戶委員會主席、通動力助理副總裁王軍應邀分享了開源歐拉社區的治理經驗與通動力攜手開源歐拉的國際化實踐。
    的頭像 發表于 09-01 11:39 ?677次閱讀

    請問在Vision Five2上怎樣安裝openeuler24.03 LTS SP1?

    在Vision Five2上怎樣安裝openeuler24.03 LTS SP1?
    發表于 07-29 09:02

    通動力加入openEuler社區AI聯合工作組

    近日,2025開放原子開源生態大會開幕,openEuler社區攜手軟通動力與社區成員單位共同發起成立“openEuler社區AI聯合工作組”,工作組將整合芯片、算法、應用等全產業鏈力量,推動操作系統
    的頭像 發表于 07-25 14:42 ?1097次閱讀

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

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

    CODESYS全平臺適配openEuler 布局工業4.0前沿

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

    什么樣的才叫實時工業操作系統

    實時工業操作系統的核心是在嚴格時間約束下保證任務執行的確定性、可靠性和安全性,通常需通過專用架構、實時調度算法和工業級認證來滿足嚴苛的工業環境需求。選擇時需根據具體場景的實時性等級(硬
    的頭像 發表于 04-17 10:09 ?733次閱讀
    什么樣的才叫<b class='flag-5'>實時</b>工業操作<b class='flag-5'>系統</b>

    通動力亮相openEuler Developer Day 2025

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

    Bosch Sensortec亮相Embedded World 2025

    2025年3月11日至13日,全球嵌入式系統盛會 Embedded World 2025在德國紐倫堡展覽中心圓滿落幕。
    的頭像 發表于 04-15 17:03 ?1297次閱讀

    openEuler Developer Day 2025成功舉辦

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

    潤和軟件亮相openEuler Developer Day 2025

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