創龍首頁 >關于創龍 > 新聞資訊 > 技術文章

聯系我們

Contact Us

公司總機:020-8998-6280

技術熱線:020-3893-9734

技術郵箱:support@tronlong.com

銷售郵箱:sales@tronlong.com

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

2024/04/18

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

 

Windows開發環境:Windows 7 64bit、Windows 10 64bit

Linux開發環境:Ubuntu18.04.4 64bit

虛擬機:VMware16.2.5

U-Boot:U-Boot 2018

Kernel:Linux-RT-4.9.170

SDK:LinuxSDK-V2.0

GPIO: LED(PI13)、KEY3(PH4)

分享案例:rt_gpio_ctrl、rt_input案例

測試工具:示波器

 

測試數據匯總

基于全志T507-H(硬件平臺:創龍科技TLT507-EVM評估板),按照創龍科技提供的案例用戶手冊進行操作,得出如下測試結果。

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

 

測試結果如下表所示:


表1 Linux-RT GPIO輸入輸出案例測試數據

 

GPIO輸入延時

系統延遲

GPIO輸出延時

輸入輸出總延時

測試1

37us

9us

14us

60us

測試2

53us

9us

14us

76us

測試3

57us

9us

14us

80us

測試4

60us

9us

14us

83us


 

(1)GPIO輸入延時:通過使用示波器測量按鍵事件觸發LED電平翻轉的實際耗時結合系統延時與GPIO輸出延時得出數據;

(2)系統延遲:根據Linux-RT性能測試平均值得出數據;

(3)GPIO輸出延時:通過使用示波器測量LED電平翻轉的實際耗時得出數據。

圖1

 

 表 2 Linux-RT實時性測試數據

 

Min Latencies

(最小值)

Avg Latencies

(平均值)

Max Latencies

(最大值)

CPU空載狀態

5us

7us

86us

CPU滿負荷狀態

5us

9us

88us

隔離CPU核心狀態

5us

9us

38us(CPU3)

 

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

 

Linux-RT實時性測試


本次測試是使用Cyclictest延遲檢測工具測試Linux系統實時性。Cyclictest是rt-tests測試套件下的測試工具,也是rt-tests下使用最廣泛的測試工具,一般主要用來測試內核的延遲,從而判斷內核的實時性。Cyclictest主要通過反復測量并精確統計線程的實際喚醒時間,以提供有關系統的延遲信息。它可測量由硬件、固件和操作系統引起的實時系統的延遲。


 

使用Cyclictest測試系統實時性


基于全志T507-H(硬件平臺:創龍科技TLT507-EVM評估板),按照創龍科技提供的案例用戶手冊進行操作,使用Cyclictest程序測試系統實時性,得出如下測試結果。


圖2 Linux-RT-4.9.170內核測試結果

圖3 Linux-4.9.170內核測試結果


 

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


T507-H核心板典型應用場景



圖4 T507-H核心板典型應用領域

 

Linux-RT應用案例的分享


rt_gpio_ctrl案例


案例說明
 

通過創建一個基本的實時線程,在線程內觸發LED的電平翻轉,同時程序統計實時線程的調度延時,并通過示波器測出LED電平兩次翻轉的時間間隔。由于程序默認以最高優先級運行,為避免CPU資源被程序完全占用,導致系統被掛起,因此在程序中增加100us的延時。程序原理大致如下:

(1)在Linux-RT內核上創建、使用實時線程。

(2)實時線程中,計算出觸發LED電平翻轉的系統調度延時。


案例測試


將可執行文件拷貝至評估板文件系統,并執行如下命令運行測試程序,再按"Ctrl + C"退出測試,串口終端將打印程序統計的延時數據,如下圖所示。


Target# ./rt_gpio_ctrl 100

圖5


同時使用示波器捕捉LED兩次電平翻轉之間的間隔就對應上線程調度的延遲。算出電平兩次翻轉的時間間隔為?x = 114us,如下圖所示。由于程序中默認增加了100us的時間延時。因此,實際延時應為:114us-100us = 14us,與程序統計打印的Latency results平均值相近。

 

圖6

 

rt_input案例


案例說明

 

通過創建一個基本的實時線程,在線程內打開input設備,并對按鍵事件進行監聽,然后觸發LED的電平翻轉,再通過示波器測量按鍵觸發到LED電平翻轉期間的實際耗時。程序原理大致如下:

(1)在Linux-RT內核上創建、使用實時線程。

(2)實時線程中對打開的input設備節點進行按鍵事件監聽,通過判斷監聽得到的按鍵事件來觸發LED的電平翻轉。

 

案例測試

 

將可執行文件拷貝至評估板文件系統,并執行如下命令運行測試程序,程序運行后按下KEY3用戶按鍵點亮LED,松開按鍵后LED熄滅,再按"Ctrl + C"退出測試程序。

 

Target#./rt_input /dev/input/event8

 

圖7


分別使用示波器探頭1測量按鍵KEY3引腳1,使用示波器探頭2測量LED。


從按鍵下降沿觸發的開始(下圖黃線)到LED上升沿觸發的完成(下圖藍線)的時間間隔,即為系統實時捕獲按鍵輸入時間并響應觸發LED電平翻轉的時間?x,從圖中可看到?x = 76us。 


圖8


 

如需選購T507-H工業核心板,歡迎登錄創龍科技天貓旗艦店:tronlong.tmall.com

全志T507-H技術交流群:535860770,歡迎加入!


 


更多全志T507-H工業核心板產品資料可長按二維碼識別下載


 

亦可添加如下客服微信進行咨詢

 


(即刻添加,馬上咨詢)

創龍官方微信公眾號

Copyright © 2013~2025 廣州創龍電子科技有限公司 All Rights Reserved  | 粵ICP備15055271號