激情综合丁香-激情综合六月-激情综合婷婷亚洲图片-激情综合图区-激情综合网五月

Windows工控主板實時性能測試

 2024-12-5     作者:劉乾坤     聯(lián)系作者    


與典型的實時操作系統(tǒng)RT-Linux、WinCE、VxWorks等相比,Windows似乎無法直接應用于對實時性有要求的場合。而本文將在安裝了Windows 10 IoT企業(yè)版的ESM8400工控主板上、測試系統(tǒng)實時性能的一個重要指標——中斷響應延時。測試結(jié)果將表明,安裝Windows操作系統(tǒng)的ESM8400工控主板,在啟用軟實時特性后,系統(tǒng)實時性能將顯著提高,在ESM8400上實際測試中斷響應延時能穩(wěn)定的控制在200us以內(nèi)。

ESM8400是基于NXP iMX8MP的 名片尺寸ARM64工控主板,可安裝Windows 10 IoT企業(yè)版操作系統(tǒng),Windows 10 IoT企業(yè)版就是完整版本的Windows 10,而且支持軟實時特性,下面依次說明如何啟用Windows IoT企業(yè)版系統(tǒng)的軟實時特性,如果開發(fā)支持軟實時的應用程序。最后將對比ESM8400 工作在Windows標準模式和軟實時模式下GPIO中斷響應延時情況。


1.     啟用Windows IoT企業(yè)版 軟實時特性

Windows 10 軟實時是 Windows 10 IoT 企業(yè)版 版本 21H2 的一項新功能,它允許設備制造商在其設備上引入軟實時功能。此實時行為通過 4 個關鍵設置引入:

1.    CPU 隔離:將系統(tǒng)級干擾從隔離的 CPU 遷移出去,減少對用戶實時應用程序的潛在抖動。

2.    獨立 CPU 上的自定義 ISR/DPC 固定:所有硬件中斷都路由到系統(tǒng)和非實時內(nèi)核,但通過編寫自定義 ISR/DPC 驅(qū)動程序,可以將設備特定的中斷路由到實時內(nèi)核。

3.    互斥體的優(yōu)先級繼承:此設置可確保執(zhí)行最高優(yōu)先級的線程,即使在復雜的多線程場景中也是如此。

4.    最多 16 個 RT 線程優(yōu)先級別:這使程序員能夠在實時任務間分配資源,以確保首先執(zhí)行最重要的任務。

  1.1    啟用Windows IoT企業(yè)版 軟實時特性

在Windows管理員命令提示符下執(zhí)行以下腳本:

::禁用空閑狀態(tài)
powercfg.exe / setacvalueindex SCHEME_CURRENT SUB_PROCESSOR IdleDisable 1
powercfg.exe / setactive SCHEME_CURRENT

::禁用診斷策略服務DPS
sc query dps
sc stop dps
sc config dps start = disabled

::禁用Windows音頻
sc query Audiosrv
sc stop Audiosrv
sc config Audiosrv start = disabled

::禁用SysMain
sc query SysMain
sc stop SysMain
sc config SysMain start = disabled

::禁用Windows更新
sc query wuauserv
sc stop wuauserv
sc config wuauserv start = disabled

::禁用線程 DPC
reg add "HKLM\System\CurrentControlSet\Control\Session Manager\kernel" / v ThreadDpcEnable / t REG_DWORD / f / d 0

  1.2    為實時應用分配CPU核心

將系統(tǒng)配置為實時性能,需要提供要分配給實時任務的 CPU 核心數(shù),其余部分用于運行系統(tǒng)或標準用戶任務。 必須在 Windows IoT CSP SetRTCores 節(jié)點中提供數(shù)值,這是專用于實時工作負載的 CPU 核心數(shù),有效數(shù)值必須至少為 1 且小于 CPU 中的物理核心數(shù)。ESM8400主CPU為4核ARM Cortex-A53,建議將1個核作為實時任務的CPU核心。

需要注意的是,軟實時功能一旦啟用,就只能對分配的CPU核心數(shù)進行調(diào)整,要完全禁用軟實時只能重裝Windows系統(tǒng)。

1.    下載 psexec 工具。

2.    運行管理命令提示符。

3.    在命令提示符下,在系統(tǒng)帳戶下啟動 PowerShell psexec.exe -s -i powershell.exe

4.    執(zhí)行以下腳本:

$nameSpaceName = "root\cimv2\mdm\dmmap"
$className = "MDM_WindowsIoT_SoftRealTimeProperties01"
$obj = Get - CimInstance - Namespace $namespaceName - ClassName $className
Add - Type - AssemblyName System.Web
Set - CimInstance - CimInstance $obj
$obj.SetRTCores = 1
Set - CimInstance - CimInstance $obj

5.    重啟計算機以激活更改。


2.     開發(fā)軟實時應用程序

將設備配置為實現(xiàn)實時性能后,可以將應用程序設置為使用標準 Win32 API 進行實時運行。賦予線程或進程實時性能的唯一因素是線程/進程優(yōu)先級排名和 CPU 核心關聯(lián)。

若要獲取特定線程或進程的實時性能,其優(yōu)先級應在實時性能范圍內(nèi),并且應將其關聯(lián)設置為在實時內(nèi)核上運行。


  配置實時進程

1.    使用 SetPriorityClass 函數(shù) :將進程的 ProcessPriorityClass 屬性設置為 REALTIME_PRIORITY_CLASS。

2.    使用 SetProcessAffinityMask 函數(shù) 將進程設置為僅在為實時應用程序保留的內(nèi)核上運行


  配置實時線程

1.    使用 NtSetInformationThread 函數(shù) 將線程的 ThreadBasePriority 設置為 16 到 31 之間的值

2.    使用 SetThreadAffinityMask 函數(shù) 將線程設置為僅在為實時應用程序保留的內(nèi)核上運行


3.     GPIO中斷響應延時測試

中斷響應延時測試方法是:利用ESM8400的GPIO0作為中斷觸發(fā)信號,持續(xù)翻轉(zhuǎn)高低電平輸出,GPIO1中斷輸入管腳。利用Windows系統(tǒng)的QPC計數(shù)器,在操作GPIO0翻轉(zhuǎn)之前調(diào)用QPC獲取時間戳,在GPIO1中斷響應回調(diào)函數(shù)中再次獲取時間戳,然后計算兩個時間之間的間隔,以此完成GPIO中斷響應延時的精確測量。硬件上需要在ESM8400評估底板上用跳線器將ESM8400的GPIO0與GPIO1短接進行測試。

w1.png

參考本文第1節(jié),我們已經(jīng)可以將ESM8400設置成軟實時模式,參考第2節(jié)讓測試程序在分配的實時CPU核心上運行。

下面分別統(tǒng)計了1千萬次Windows工作在標準模式與實時模式時、系統(tǒng)CPU空閑和高負載情況下、GPIO中斷響應延時時間。

w2.png

可以看到當CPU空閑時,無論Windows是否工作在實時模式,99.99%的中斷響應都小于200us。當CPU負載加重時,Windows標準模式下的中斷響應時間變得極不確定,而實時模式下的中斷響應時間幾乎不受CPU負載的影響,仍然確保99.99%的中斷在200us內(nèi)得到響應。

下圖對GPIO中斷響應最大延時的測量,更能直觀反映Windows標準模式與實時模式在系統(tǒng)實時性能上的差距。

w3.png


主站蜘蛛池模板: 日韩中出| 91精品手机国产免费| 成人啪| 国产免费一区二区三区最新| 精品国产三级在线观看| 国产亚洲精品国看不卡| 青青艹视频在线| 亚洲欧美日韩国产专区一区| a级毛片免费高清毛片视频| 成人免费淫片免费观看| 非洲一区二区三区不卡| 成人欧美在线视频| 精品久久久久亚洲| 欧美精品亚洲精品| 亚洲刺激视频| 一级做a爱片特黄在线观看yy| 一级黄大片| 久久成人免费视频| 成人18在线观看| 欧美xxxxxbbbbb毛片| 国产二区精品视频| 黄色毛片网| 精品视频在线观看你懂的一区 | 午夜精品久久久久久影视riav| 日本高清在线一区| 免费h片在线观看| 欧美视频一级| 性生活大片免费看| 黄色一级毛片网站| 综合久草| 韩国18videos极品| 福利在线一区二区| 久久久久爽亚洲精品| 亚洲欧美日韩中文字幕在线不卡| 91精品国产三级在线观看| 一区二区三区四| va在线视频| 91在线视频免费91| 91精品国产高清久久久久久io| 一级黄片毛片| 99视频在线|