<strike id="kiyse"></strike>
  • <tr id="kiyse"></tr>
  • <strike id="kiyse"></strike><samp id="kiyse"><tbody id="kiyse"></tbody></samp>
    <strike id="kiyse"><s id="kiyse"></s></strike>
    <tr id="kiyse"></tr>
    <noframes id="kiyse"><code id="kiyse"></code></noframes>
    <th id="kiyse"></th>
    <samp id="kiyse"></samp>
  • <th id="kiyse"><s id="kiyse"></s></th>
  • Windows工控主板實時性能測試

     2024-12-5 17:53:49     作者:劉乾坤     聯系作者    


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

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


    1.     啟用Windows IoT企業版 軟實時特性

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

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

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

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

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

      1.1    啟用Windows IoT企業版 軟實時特性

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

    ::禁用空閑狀態
    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核心

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

    需要注意的是,軟實時功能一旦啟用,就只能對分配的CPU核心數進行調整,要完全禁用軟實時只能重裝Windows系統。

    1.    下載 psexec 工具。

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

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

    4.    執行以下腳本:

    $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.     開發軟實時應用程序

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

    若要獲取特定線程或進程的實時性能,其優先級應在實時性能范圍內,并且應將其關聯設置為在實時內核上運行。


      配置實時進程

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

    2.    使用 SetProcessAffinityMask 函數 將進程設置為僅在為實時應用程序保留的內核上運行


      配置實時線程

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

    2.    使用 SetThreadAffinityMask 函數 將線程設置為僅在為實時應用程序保留的內核上運行


    3.     GPIO中斷響應延時測試

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

    w1.png

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

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

    w2.png

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

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

    w3.png


    国产精品视频白浆合集| 亚洲av午夜成人片精品网站| 99久热任我爽精品视频| 久久亚洲国产精品一区二区| 亚洲国产精品不卡毛片a在线| 精品videossexfreeohdbbw| 亚洲综合国产精品| 久久久久国产精品| 久久精品国产只有精品66| 国产成人综合日韩精品婷婷九月| 精品国产一区二区三区香蕉| 一本一道久久精品综合| 99视频在线观看精品| 国产精品美女WWW爽爽爽视频| 国内揄拍国内精品视频| 国产精品久久久久9999高清| 99精品国产一区二区三区不卡| 中文字幕精品久久| 国产精品熟女福利久久AV| 国产精品视频公开费视频| 日产精品一卡2卡三卡4乱码| 精品综合久久久久久97| 91精品一区二区三区在线观看| 国产成人精品日本亚洲| 久久91综合国产91久久精品| 国产亚洲精品a在线观看| japanese乱人伦精品| 亚洲综合精品网站| 538国产精品一区二区在线| 九九九国产精品成人免费视频| 美女bbbb精品视频| 色妞www精品视频免费看| 国产精品午夜小视频观看 | 97久久精品国产成人影院| 亚洲国产精品无码久久久秋霞2| 国产亚洲美女精品久久久久狼| 久久精品国产精品亚洲| 国产亚洲精品线观看动态图| 99在线热播精品免费99热| 中文字幕精品久久| 久久久九九有精品国产|