本文介紹瑞芯微RK3576芯片平臺RT-Linux系統實時性及硬件中斷延遲測試,基于觸覺智能RK3576開發板Purple Pi OH2演示。
Linux-RT實時性測試
- 測試環境說明
本次測試是使用Cyclictest延遲檢測工具測試Linux系統實時性。Cyclictest 是一款專門用于測試和評估系統實時性(Real-Time)的工具,主要用于測量 Linux 系統中線程調度的延遲(即從線程被喚醒到實際開始執行之間的時間差)。它是 rt-tests 工具集的核心組件之一,廣泛應用于實時系統(如 RT-Linux)的性能驗證和優化。
- Preempt_RT
可參考網盤文檔,使用Cyclictest程序測試系統實時性(Linux內核版本:Kernel 6.1.99)。

空載測試12小時:

負載隔離CPU測試12小時:

測試結果匯總:

- Xenomai RT
空載測試12小時:

負載測試12小時:

負載隔離CPU測試12小時:

Xenomai RT內核測試結果匯總:

結論如下:對比Preempt_RT與Xenomai RT的實時性數據,Preempt RT內核的延時更低。觸覺智能作為專業RK方案商,不僅RK3576這款還測試了RK3506等多款芯片平臺,實際應用推薦使用Preempt RT內核。
Linux-RT硬件中斷延遲測試
測試基本原理
基于Preempt_RT內核在隔離CPU的情況下,使用一個GPIO引腳(簡稱GPIO1)作為中斷輸入,使用另一個GPIO引腳(簡稱GPIO2)作為響應中斷輸出,當GPIO1接收到信號觸發中斷后立即控制GPIO2輸出,使用示波器抓取“觸發信號”與“響應信號”之間的時間差(簡稱中斷延遲)。
測試結果
(1)配置隔離CPU,配置GPIO1作為按鍵輸入(中斷信號輸入),配置GPIO2作為LED輸出(中斷響應信號輸出)
chosen: chosen { bootargs = "earlycon=uart8250,mmio32,0x2ad40000 console=ttyFIQ0 root=PARTUUID=614e0000-0000 rw rootwait rcupdate.rcu_expedited=1 rcu_nocbs=all isolcpus=3"; };
--- a/kernel-6.1/arch/arm64/boot/dts/rockchip/ido-evb7608_v1b.dtsi +++ b/kernel-6.1/arch/arm64/boot/dts/rockchip/ido-evb7608_v1b.dtsi @@ -213,7 +213,12 @@ status = "okay"; compatible = "gpio-leds"; pinctrl-names = "default"; - pinctrl-0 = <&leds_gpio>; + pinctrl-0 = <&leds_gpio &led1_gpio>; + + user_led0: user-led0 { + gpios = <&gpio2 RK_PB2 GPIO_ACTIVE_HIGH>; + default-state = "off"; + }; work_led: work { gpios = <&gpio3 RK_PA4 GPIO_ACTIVE_HIGH>; @@ -280,6 +285,22 @@ default-state="on"; }; }; + + gpio_keys: gpio-keys { + status = "okay"; + compatible = "gpio-keys"; + autorepeat; + pinctrl-names = "default"; + pinctrl-0 = <&key1_user>; + + user_key1 { + label = "user-key1"; + linux,code = ; + gpios = <&gpio4 RK_PC5 GPIO_ACTIVE_HIGH>; + debounce-interval = <0>; + }; + }; + }; @@ -568,6 +589,16 @@ <0 RK_PA2 RK_FUNC_GPIO &pcfg_pull_none>, <2 RK_PB4 RK_FUNC_GPIO &pcfg_pull_none>; }; + + led1_gpio: led1-gpio { + rockchip,pins = <2 RK_PB2 RK_FUNC_GPIO &pcfg_pull_none>; + }; + }; + + keys { + key1_user: key1-user { + rockchip,pins = <4 RK_PC5 RK_FUNC_GPIO &pcfg_pull_down>; + }; };
例程通過創建一個基本的實時線程,在線程內實現打開GPIO1對應的按鍵input設備并對按鍵事件進行監聽從而觸發GPIO2對應的LED的亮滅控制。例程代碼參考如下:

完成交叉編譯應用程序后,執行測試程序等待接收觸發信號,硬件使用示波器捕獲觸發信號。

紅色信號為GPIO1,黃色信號為GPIO2,示波器實測中斷延遲為:44us。
-
嵌入式開發
+關注
關注
18文章
1146瀏覽量
50121 -
開發板
+關注
關注
26文章
6289瀏覽量
118034 -
RT-Linux
+關注
關注
0文章
8瀏覽量
6422 -
核心板
+關注
關注
6文章
1397瀏覽量
31995 -
rk3576
+關注
關注
1文章
265瀏覽量
1546
發布評論請先 登錄
米爾RK3576核心板適配多種系統,解鎖多樣化應用
RK3576核心板/開發板RT-Linux系統實時性及硬件中斷延遲測試
評論