
SPSET01/SPTKM01
价格:999.00
厦门莫格电气自动化有限公司销售ABBSPSET01/SPTKM01欢迎来电咨询!SPSET01/SPTKM01SPSET01/SPTKM01您迈开询价的一小步,我还您成功的一大步。WindowsEmbeddedCompact7(WEC7)一个***重要的特性就是对多核处理器的支持(SymmetricMulti-Processing(***P)),E***6802是英创公司推出的基于Freescalei.MX6DL双核处理器的高性能工控主板,预装正版WEC7嵌入式操作系统,并且内核启用了对***P的支持。在多个程序同时执行的情况下,支持***P的多核系统具有比单处理器更好的性能,因为不同的程序可以在不同的处理器上同时运行,支持***P还可以实现在一个核心上执行硬实时应用程序,而用户界面(UI)或其它应用程序可在另一个核心上运行,以提高系统的效率。WEC7提供了一组处理多核系统上线程和处理器调度的***PAPI接口函数:https://msdn./en-us/library/gg154433(v=winembedded.70).aspx其中应用程序常用的***PAPI如下所示:GetCurrentProcessorNumber获取在调用此函数期间当前线程正在运行的处理器CeGetIdleTimeEx获取指定处理器的空闲时间CeGetProcessAffinity获取指定进程的进程关联CeGetThreadAffinity获取指定线程的线程关联CeGetTotalProcessors获取系统中的处理器核心总数CeSetProcessAffinity为指定的进程设置处理器关联CeSetThreadAffinity为指定的线程设置处理器关联默认情况下,WEC7系统会自动的将系统负载分配到CPU的所有核心上运行,应用程序不需要做任何设置。但根据不同的应用场景,应用程序也可以利用***PAPI手动的设置每个进程、每个线程在指定的CPU核心上运行,这里以计算E***6802i.MX6DLCPU每个核心的负载为例,介绍WEC7***PAPI的使用方法。应用程序首先通过CeGetTotalProcessors函数获取当前系统总的处理器(核心)个数,然后根据CPU核心个数创建相同数量的CPUIdleMonitorThread应用线程用于计算CPU负载,在创建线程后通过CeSetThreadAffinity函数将所创建的线程固定在指定的CPU核心上运行。CPUIdleMonitorThread线程函数在执行时先调用GetCurrentProcessorNumber函数取得执行当前线程的CPU核,而后再利用CeGetIdleTimeEx函数***终计算出每个CPU核心的负载率。完整的例子代码如下:#include"stdafx.h"//timeinsecondstorunthemonitorthread#defineIDLE_MONITOR_TIME100HANDLEg_hMonitorThreads[4];UINT32CPUIdleMonitorThread(PVOIDpContext){UINT32nCPUId=((UINT32*)pContext)[0];UINT32nRunTime=((UINT32*)pContext)[1];UINT32nIdleBefore,nIdleAfter,nIdleDiff,nIdlePercent;UINT32nReturn=ERROR_SUCCESS;LARGE_INTEGERpcBefore={0,0};LARGE_INTEGERpcAfter={0,0};LARGE_INTEGERdiff;LARGE_INTEGERfreq;RETAILMSG(1,(L"[CPU%d]Runmonitorthreadfor%dseconds\r\n",nCPUId,nRunTime));//Theprocessornumberisa1-basedindex.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:2000ms(actual:%dms)Idle:%03dms(CPU%d=%d%%)\r\n",nCPUId,diff.LowPart,nIdleDiff,nCPUId,100-nIdlePercent));nRunTime--;}SetEvent(g_hMonitorThreads[nCPUId-1]);returnnReturn;}intWINAPIWinMain(HINSTANCEhInstance,HINSTANCEhPrevInstance,LPTSTRlpCmdLine,intnCmdShow){UINT32nCPUCount;UINT32nTemp=0;UINT32i;UINT32nParam[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++){HANDLEhThread=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]);IC660EBA101DIC660EBD101F150-A240NBDBDG810BL***ARTSU50005KVA800T-FXMQH32RA7IC200ALG264IC200ALG326IC200CBL600IC200CHS022IC200CPUE05IC200ERM001IC200MDL650IC200MDL940IC200PWB001IC200PWR102FBM202FBM206FBM241CCLM01.3-X-0-4-BKDS1.1-150-300-W1TDM1.2-100-300-W1/220TVM2.2-050-220/300-W1FU-77TZPS261P3503E3604E3700A3805E83129563-8109662-810BPHM64HCU3700HCU3805E1771-P4S800H-HK31BSERVOSTAR600S610001756-OB16I1756-PA75PXI-8330LSP2080MDV60A0110-5A3-4-00A06B-0147-B077NT620C-ST141WSSR4.5K1029D-V-240V-50A-IL50-R4-I41769-L32EMR-J2S-20BA06B-6117-H209A06B-0116-B203150-A97NBDBUTSAH-B17BBFH008PA3DDS-PF51401052-10051401583-100A06B-6114-H206DBG11B-08EASYGEA-3200-51756-ENBT1756-L631786-RG6F1786-TPST1786-XTDB-2620A1771-IBN1771-OBN6SC6108-0SG026SC6120-0FE01BZM01.3-01-07DSQC6043HAC12928-1SA629.188/3A16B-1300-02006ES7647-5BG10-0JX0140NOE77101140NOE77111CP40BP0400ZGM3158T1746-A101746-C91746-NO4I1746-P41747-L553B975750000140ACI03000140ACI04000140ARI03010140ATI03000140***O02000140CPS11420140CPU43412A140CRA93100140CRP93100140DAI75300140DAO85300140DDI35300140DDO35300140NOE77101140XBE10000HD22005-3AMC07A005-5A3-4-00MC07A008-5A3-4-00MCO7B0011-5A3-4-006ES7332-5HF00-0AB0QUINT-PS-100-240AC/12DC/10QUINT-PS-100-240AC/24DC/20140CPS11420140CPU65150140DDI35300140DRA84000LC1D12BDPBM862FXK20-M1747-L542M***-11-10-400140ACI03000140CPS11420140CPU67160140CRA93200140CRP93200140DDI35300140DDO35300140NOE77101140XBP01000ACS800-04-0170-3+P901140DDI84100CKK-20-1456ES7216-2BD23-OXB8C500-RM201A20B-2902-0411ROD426100002S12-03RF-GENERATOR-P-N-0190-700991756-CNBR/E1756-ENBT/A1756-L63/B1757-SRM6SE7021-8EB61FECQ-T22711P-RP12711-T10C152711-T10C8VM06-1600-N4132KW50HZPC-E984-258OGS-72-DN-1024-R811405063HF-0405-232-011784-PCIC7400166-390SR469-P5-HIA20SR750-P5-G5-D5-HI-A20-RE5861756-L55M136RA7085-6DS22-06RA7025-6DV62-0C98043-A7001-L1A06B-6115-H003A06B-6117-H205A06B-6117-H304A06B-6140-H011LK-G301746-NT81746-NT82500MA132500MA14SP316SP363T2500/A12140NOM21100XVME-674140CPS11420140CPU65150140DDI35300140DRA840006RA8222-8PA06RA7075-6DV62-0)