在线观看www成人影院-在线观看www日本免费网站-在线观看www视频-在线观看操-欧美18在线-欧美1级

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

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

3天內不再提示

英創信息技術基于WEC7的多核系統編程方法

英創信息技術 ? 來源:英創信息技術 ? 作者:英創信息技術 ? 2020-02-05 11:05 ? 次閱讀

Windows Embedded Compact 7(WEC7)一個最重要的特性就是對多核處理器的支持(Symmetric Multi-Processing(SMP)),ESM6802是英創公司推出的基于Freescale i.MX6DL雙核處理器的高性能工控主板,預裝正版WEC7嵌入式操作系統,并且內核啟用了對SMP的支持。在多個程序同時執行的情況下,支持SMP的多核系統具有比單處理器更好的性能,因為不同的程序可以在不同的處理器上同時運行,支持SMP還可以實現在一個核心上執行硬實時應用程序,而用戶界面(UI)或其它應用程序可在另一個核心上運行,以提高系統的效率。

WEC7提供了一組處理多核系統上線程和處理器調度的SMP API接口函數:

https://msdn.microsoft.com/en-us/library/gg154433(v=winembedded.70).aspx

其中應用程序常用的SMP API如下所示:

GetCurrentProcessorNumber 獲取在調用此函數期間當前線程正在運行的處理器
CeGetIdleTimeEx 獲取指定處理器的空閑時間
CeGetProcessAffinity 獲取指定進程的進程關聯
CeGetThreadAffinity 獲取指定線程的線程關聯
CeGetTotalProcessors 獲取系統中的處理器核心總數
CeSetProcessAffinity 為指定的進程設置處理器關聯
CeSetThreadAffinity 為指定的線程設置處理器關聯

默認情況下,WEC7系統會自動的將系統負載分配到CPU的所有核心上運行,應用程序不需要做任何設置。但根據不同的應用場景,應用程序也可以利用SMP API手動的設置每個進程、每個線程在指定的CPU核心上運行,這里以計算ESM6802 i.MX6DL CPU每個核心的負載為例,介紹WEC7 SMP API的使用方法。

應用程序首先通過CeGetTotalProcessors函數獲取當前系統總的處理器(核心)個數,然后根據CPU核心個數創建相同數量的CPUIdleMonitorThread應用線程用于計算CPU負載,在創建線程后通過CeSetThreadAffinity函數將所創建的線程固定在指定的CPU核心上運行。CPUIdleMonitorThread線程函數在執行時先調用GetCurrentProcessorNumber函數取得執行當前線程的CPU核,而后再利用CeGetIdleTimeEx函數最終計算出每個CPU核心的負載率。完整的例子代碼如下:

#include"stdafx.h"

// time in seconds to run the monitor thread

#defineIDLE_MONITOR_TIME 100

HANDLE g_hMonitorThreads[4];

UINT32CPUIdleMonitorThread(PVOID pContext)

{

UINT32 nCPUId = ((UINT32*)pContext)[0];

UINT32 nRunTime = ((UINT32*)pContext)[1];

UINT32 nIdleBefore, nIdleAfter, nIdleDiff, nIdlePercent;

UINT32 nReturn = ERROR_SUCCESS;

LARGE_INTEGER pcBefore = { 0, 0 };

LARGE_INTEGER pcAfter = { 0, 0 };

LARGE_INTEGER diff;

LARGE_INTEGER freq;

RETAILMSG(1, (L"[CPU%d] Run monitor thread for %d seconds\r\n", nCPUId, nRunTime));

// The processor number is a 1-based index.

QueryPerformanceFrequency(&freq);

while(nRunTime > 0)

{

nCPUId = GetCurrentProcessorNumber();

CeGetIdleTimeEx(nCPUId, (LPDWORD)&nIdleBefore);

QueryPerformanceCounter(&pcBefore);

Sleep(2000);

QueryPerformanceCounter(&pcAfter);

CeGetIdleTimeEx(nCPUId, (LPDWORD)&nIdleAfter);

diff.QuadPart = (pcAfter.QuadPart - pcBefore.QuadPart) * 1000 / freq.QuadPart;

nIdleDiff = nIdleAfter - nIdleBefore;

nIdlePercent = nIdleDiff / 20;

RETAILMSG(1, (L"[CPU%d] Sleep: 2000 ms (actual:%d ms) Idle: %03d ms (CPU%d = %d%%)\r\n",

nCPUId, diff.LowPart, nIdleDiff, nCPUId, 100 - nIdlePercent));

nRunTime--;

}

SetEvent(g_hMonitorThreads[nCPUId - 1]);

returnnReturn;

}

intWINAPI WinMain(HINSTANCE hInstance,

HINSTANCE hPrevInstance,

LPTSTR lpCmdLine,

int nCmdShow)

{

UINT32 nCPUCount;

UINT32 nTemp = 0;

UINT32 i;

UINT32 nParam[8] = { 1, IDLE_MONITOR_TIME, 2, IDLE_MONITOR_TIME, 3, IDLE_MONITOR_TIME, 4,IDLE_MONITOR_TIME };

nCPUCount = CeGetTotalProcessors();

for(i = 0; i < nCPUCount; i++)

g_hMonitorThreads[i] = CreateEvent(NULL, TRUE, FALSE, NULL);

nTemp = 1;

CeSetThreadAffinity(GetCurrentThread(), 1);

for(i = 1; i < nCPUCount; i++)

{

HANDLE hThread = CreateThread(

NULL,

0,

(LPTHREAD_START_ROUTINE)CPUIdleMonitorThread,

&nParam[i * 2],

CREATE_SUSPENDED,

NULL);

if(NULL != hThread)

{

CeSetThreadAffinity(hThread, i + 1);

ResumeThread(hThread);

Sleep(0);

CloseHandle(hThread);

nTemp++;

}

else

{

SetEvent(g_hMonitorThreads[i]);

}

}

CPUIdleMonitorThread(&nParam[0]);

Sleep(2000);

for(i = 0; i < nCPUCount; i++)

WaitForSingleObject(g_hMonitorThreads[i], (IDLE_MONITOR_TIME + 5) * 1000);

RETAILMSG(1, (L"[CPULOAD] Number of CPUs monitored: %d\r\n", nTemp));

return0;

}

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

    關注

    4

    文章

    3555

    瀏覽量

    89049
  • 嵌入式主板
    +關注

    關注

    7

    文章

    6086

    瀏覽量

    35505
收藏 人收藏

    評論

    相關推薦

    飛騰助力首屆教育信息技術應用創新大賽圓滿落幕

    近日,由中國教育技術協會主辦,教育部教育管理信息中心教育信實驗室、公安部第三研究所、中國電子工業標準化技術協會信工委會支持,北京航空航天
    的頭像 發表于 12-24 09:57 ?172次閱讀

    有方科技參編的信息技術團體標準發布

    近日,有方科技參編的《信息技術產品供應鏈成熟度 共性指標 第1部分:企業背景評價》《信息技術產品供應鏈成熟度 共性指標 第2部分:技術掌控評價》《信息技術產品供應鏈成熟度 共性指標 第
    的頭像 發表于 12-23 10:44 ?187次閱讀

    龍芯中科助力2024首屆教育信息技術應用創新大賽成功舉辦

    近日,2024首屆教育信息技術應用創新大賽在北京航空航天大學成功舉辦。本次大賽由中國教育技術協會主辦,教育信實驗室、公安部第三研究所、中國電子工業標準化技術協會信
    的頭像 發表于 12-19 17:02 ?263次閱讀

    拓維信息參與牽頭組建!長沙新一代信息技術產教聯合體正式獲批

    的長沙新一代信息技術產教聯合體成功獲批,為長沙市信息技術產業發展注入了新的活力。圖/《2024年長沙市市級市域產教聯合體名單》長沙新一代信息技術產教聯合體將依托龍頭企
    的頭像 發表于 12-07 01:06 ?447次閱讀
    拓維<b class='flag-5'>信息</b>參與牽頭組建!長沙新一代<b class='flag-5'>信息技術</b>產教聯合體正式獲批

    中科達榮獲2024年軟件和信息技術服務優秀企業

    及前百家企業”名單。中科達憑借非凡的技術實力與持續的創新能力,成功入選“2024年度軟件和信息技術服務競爭力百強企業”以及“2024年軟件和信息技術服務優秀企業”。
    的頭像 發表于 10-30 11:44 ?523次閱讀

    國產化背景下的工控主板發展現狀

    ,是信息技術應用創新產業的簡稱,于2016年“信工委會”(信息技術應用創新工作委員會)提出,目的就是要推動我們國內軟硬件關鍵技術的研發
    的頭像 發表于 09-21 16:15 ?463次閱讀

    加速鯤鵬落地!拓維信息遷移工具榮獲鯤鵬原生開發技術認證

    認證。圖/拓維·數據庫適配中間件取得鯤鵬原生開發N認證在數字化時代的大潮中,信戰略作為國家推動信息技術應用創新、保障信息安全與自主可控的關鍵舉措,其重要性日益凸顯
    的頭像 發表于 09-10 08:03 ?484次閱讀
    加速鯤鵬落地!拓維<b class='flag-5'>信息</b>信<b class='flag-5'>創</b>遷移工具榮獲鯤鵬原生開發<b class='flag-5'>技術</b>認證

    梯度科技入選2023年信息技術應用創新解決方案名單

    日前,工業和信息化部網絡安全產業發展中心(工業和信息化部信息中心)在天津舉辦2024信息技術應用創新發展大會暨解決方案應用推廣大會。會上正式公布了2023年
    的頭像 發表于 09-09 16:29 ?459次閱讀

    中軟國際信服務助力大連信產業發展

    為進一步激發大連本地信產業生態的活力與潛力,搭建一個高效、開放的交流平臺。由大連軟件行業協會攜手大連市信息技術應用創新綜合服務中心主辦,中軟國際協辦的,2024年大連市信息技術應用創新產業發展大會
    的頭像 發表于 08-27 16:49 ?927次閱讀

    GB/T 35590-2017信息技術 便攜式數字設備用移動電源推薦標準

    GB/T 35590-2017是《信息技術 便攜式數字設備用移動電源通用規范》的國家標準,這是一項由全國信息安全標準化技術委員會歸口管理,并聯合鋰離子電池業內產學研用多家單位聯合制定的標準。該標準自
    的頭像 發表于 08-12 16:47 ?1312次閱讀
    GB/T 35590-2017<b class='flag-5'>信息技術</b> 便攜式數字設備用移動電源推薦標準

    翼輝信息入選2023年信息技術應用創新解決方案名單

    近日,2023 年(第五屆)信息技術應用創新解決方案公布遴選名單,歷經資格初審、技術中評、區域評議、終評預審,翼輝以“面向工業領域嵌入式操作系統 SylixOS 解決方案”,成功在全國優秀方案中脫穎而出,入選典型解決方案名單。
    的頭像 發表于 04-28 11:37 ?594次閱讀
    翼輝<b class='flag-5'>信息</b>入選2023年<b class='flag-5'>信息技術</b>應用創新解決方案名單

    芯盾時代中標西安西熱電站信息技術有限公司!

    芯盾時代中標西安西熱電站信息技術有限公司!芯盾時代基于完整的身份安全產品體系,增強客戶的業務系統、網絡設備和安全設備等認證安全強度
    的頭像 發表于 04-09 11:32 ?540次閱讀

    龍芯中科三項信方案入圍工信部2023年信息技術應用創新應用示范案例名單

    近日,工業和信息化部通報了2023年信息技術應用創新解決方案征集遴選結果,本次共評選出典型解決方案173個、應用示范案例83個、單項創新案例64個。
    的頭像 發表于 03-07 16:45 ?982次閱讀
    龍芯中科三項信<b class='flag-5'>創</b>方案入圍工信部2023年<b class='flag-5'>信息技術</b>應用創新應用示范案例名單

    RX78M組 EtherCAT ETG.5003示例程序固件信息技術

    電子發燒友網站提供《RX78M組 EtherCAT ETG.5003示例程序固件信息技術.pdf》資料免費下載
    發表于 02-21 14:22 ?1次下載
    RX78M組  EtherCAT ETG.5003示例程序固件<b class='flag-5'>信息技術</b>

    軟通動力與捷技術簽訂戰略合作協議

    近日,軟通動力信息技術(集團)股份有限公司(以下簡稱“軟通動力”)與寧波捷技術股份有限公司(以下簡稱“捷技術”)正式簽訂戰略合作協議,并
    的頭像 發表于 02-03 16:35 ?1142次閱讀
    主站蜘蛛池模板: 高h水果榨汁play男男| 成年女人免费看一级人体片| 四虎永久免费网站| 天天做天天爱天天爽综合区| 精品视频一区二区三区四区五区| 色综合视频在线| 正在播放国产巨作| 中文字幕区| 人人澡人人澡人人看青草| 国产亚洲精品aa在线观看| 欧美又粗又硬又大久久久| 天天曰天天干| 免费任我爽橹视频在线观看| 天天干夜干| 午夜大片网| 午夜免费视频福利集合100| ts国产| 国产一区二区在线观看免费| 美女污污网站| 免看乌克兰a一级| 欧美午夜视频在线观看| 日本午夜片| 日产乱码免费一卡二卡在线| 色综合久久天天综合观看| 日本三级全黄三级a| 黄网址免费| 国产精品黄网站免费进入| 狠狠欧美| 韩国免费特一级毛片| www.av在线.com| 欧美1024| 亚洲视频在线一区| 男男生子大肚play做到生| 日本不卡专区| 国产成人亚洲毛片| 天堂精品在线| 日韩一级影院| 国产在线高清精品二区色五郎| 亚洲 欧美 校园| 欧美aaaaa性bbbbb小妇| 好大好硬好爽免费视频|