一区二区三区三上|欧美在线视频五区|国产午夜无码在线观看视频|亚洲国产裸体网站|无码成年人影视|亚洲AV亚洲AV|成人开心激情五月|欧美性爱内射视频|超碰人人干人人上|一区二区无码三区亚洲人区久久精品

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

英創(chuàng)信息技術(shù)應(yīng)用程序助手AppHelper使用介紹

英創(chuàng)信息技術(shù) ? 來源:英創(chuàng)信息技術(shù) ? 作者:英創(chuàng)信息技術(shù) ? 2020-02-04 10:14 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

為保證系統(tǒng)穩(wěn)定運(yùn)行,系統(tǒng)CPU應(yīng)避免長時(shí)間滿負(fù)荷運(yùn)作,應(yīng)用程序CPU占用不宜過高。客戶需要在調(diào)試階段監(jiān)測應(yīng)用程序各個(gè)進(jìn)程線程占用情況,對(duì)占用過高的進(jìn)程線程進(jìn)行優(yōu)化。因CE自身不帶進(jìn)程線程系統(tǒng)占用查看工具,我們?cè)黾恿薃ppHelper助手工具方便客戶使用。

在之前的技術(shù)文章《CE應(yīng)用程序助手簡介》中簡單介紹過英創(chuàng)AppHelper應(yīng)用程序助手,本文將詳細(xì)介紹AppHelper的使用方法。

AppHelper查看方法

客戶在自制底板上只要引出了網(wǎng)絡(luò),USBOTG,DEBUG調(diào)試串口,或板子其它串口任意之一便可以查看AppHelper信息。

網(wǎng)絡(luò)方式

通過telnet登錄上板子,運(yùn)行命令sysinfo,即可獲得AppHelper打印的進(jìn)程線程信息。

telnet模式打印示例圖

USBOTG方式

使用AHC工具(使用方法見本文下一節(jié))配置AppHelper輸出為COM1。連接上板子USBOTG口,板子將以虛擬串口形式被PC識(shí)別。使用任意串口工具向該串口輸出任意三個(gè)字符(任意波特率),即可獲得AppHelper打印的進(jìn)程線程信息。

USBOTG,DEBUG及其它串口打印示例圖

DEBUG調(diào)試串口方式

使用AHC工具(使用方法見本文下一節(jié))配置AppHelper輸出為DEBUG。連接板子的DEBUG串口,PC端使用任意串口工具,設(shè)置波特率115200,向DEBUG口輸出任意三個(gè)字符,即可獲得AppHelper打印的進(jìn)程線程信息。

串口方式

將底板上引出,且客戶應(yīng)用程序未使用的串口連接上PC。使用AHC工具(使用方法見本文下一節(jié))配置好串口號(hào)及波特率。PC端使用任意串口工具,用設(shè)定的波特率向該串口輸出任意三個(gè)字符,即可獲得AppHelper打印的進(jìn)程線程信息。

AHC工具使用介紹

AHC工具即AppHelper Config工具,用于設(shè)置AppHelper打印信息的輸出位置。有兩種辦法進(jìn)行設(shè)置。

控制面板方式

在板子控制面板中運(yùn)行AHC工具。

選擇好輸出信息的串口及波特率(其中COM1為USBOTG),點(diǎn)擊OK鍵保存配置,板子重啟后配置生效。

telnet方式

通過telnet登錄上板子,執(zhí)行命令A(yù)HC port [baud]

參數(shù)port:串口號(hào),值為0-6,0表示DEBUG串口,1表示USBOTG轉(zhuǎn)虛擬串口,2-6分別表示板子的COM2-COM6。

參數(shù)baud:波特率,可選參數(shù),如果不填表示保持原波特率,支持1200,2400,4800,9600,19200,38400,57600,115200。當(dāng)port為0時(shí),baud固定為115200,當(dāng)port為1時(shí),baud值不生效。

命令執(zhí)行后,DEBUG口可以看到打印提示信息。

打印格式說明

打印結(jié)果為數(shù)行,其中每行的格式均為:類型 ID號(hào) 占用情況 名稱

以下圖一次打印的部分截圖為例:

類型

PID表示為process進(jìn)程。TID表示為上面進(jìn)程下的thread線程。

ID號(hào)

即進(jìn)程ID值或線程ID值。

占用情況

顯示格式為 K n% U m% total%

n值為該進(jìn)程或線程在Kernel系統(tǒng)層的占用

m值為該進(jìn)程或線程在User用戶層的占用

total值為總占用,它應(yīng)當(dāng)?shù)扔趎+m的和

進(jìn)程下各個(gè)線程total占用和應(yīng)當(dāng)?shù)扔谶M(jìn)程的total占用

名稱

進(jìn)程名即EXE的名稱,線程默認(rèn)沒有名稱,下一節(jié)會(huì)介紹如何給線程命名,從而能在AppHelper中顯示出來。

進(jìn)程及線程監(jiān)視說明

AppHelper會(huì)打印系統(tǒng)下所有的進(jìn)程的CPU占用信息。

只有在\NandFlash目錄下的exe生成的進(jìn)程會(huì)額外打印出它下面所有線程的CPU占用信息。

默認(rèn)情況下,生成的線程只有ID號(hào),沒有名稱,如果線程較多會(huì)不便于查看。我們可以通過簡單代碼給線程命名。

以光盤里的串口例程SPT_HEX為例:

添加一個(gè)結(jié)構(gòu)體的定義

typedef struct _THREAD_INDEX

{

DWORDdwSize;

DWORDdwThreadID;

TCHARszThreadName[32];

_THREAD_INDEX*pNext;

}THREAD_INDEX;

在創(chuàng)建線程后給線程命名

這里把串口接收線程命名為"CommRecvTread"

hRecvThread = CreateThread(0, 0, CommRecvTread, this, 0, &m_dwTID);

HANDLE hHLP;

DWORD dwLen;

hHLP = CreateFile(L"HLP1:", GENERIC_READ | GENERIC_WRITE, 0, 0, OPEN_EXISTING, 0, 0);

THREAD_INDEXthreadIndex;

wsprintf(threadIndex.szThreadName, L"CommRecvTread");

threadIndex.dwThreadID = m_dwTID;

threadIndex.dwSize = sizeof(THREAD_INDEX);

WriteFile(hHLP, &threadIndex, sizeof(THREAD_INDEX), &dwLen, NULL);

CloseHandle(hHLP);

在結(jié)束線程后取消命名

線程結(jié)束后應(yīng)當(dāng)手動(dòng)將命名取消掉,避免不必要的顯示錯(cuò)誤,設(shè)置線程名為空,即可取消原命名。

HANDLE hHLP;

DWORD dwLen;

hHLP = CreateFile(L"HLP1:", GENERIC_READ | GENERIC_WRITE, 0, 0, OPEN_EXISTING, 0, 0);

THREAD_INDEXthreadIndex;

wsprintf(threadIndex.szThreadName, L"");

threadIndex.dwThreadID = m_dwTID;

threadIndex.dwSize = sizeof(THREAD_INDEX);

WriteFile(hHLP, &threadIndex, sizeof(THREAD_INDEX), &dwLen, NULL);

CloseHandle(hHLP);

命名線程后再使用AppHelper查看,啟動(dòng)接收線程后,就可以看到CommRecvTread這個(gè)線程,另外個(gè)沒有命名的線程為SerialPort程序的主線程。

計(jì)算原理及誤差說明

CPU占用時(shí)間是通過計(jì)算一段時(shí)間內(nèi)(AppHelper設(shè)置為2000毫秒)CPU空閑tick值與這段時(shí)間里CPU運(yùn)算周期tick值得出。

CPU空閑tick值 = CPU空閑tick計(jì)數(shù)t2 – CPU空閑tick計(jì)數(shù)t1

CPU總周期tick值 = CPU總周期tick計(jì)數(shù)t2 – CPU總周期tick計(jì)數(shù)t1

CPU占用 = 1 – (CPU空閑tick值/CPU總周期tick值)× 100%

進(jìn)程或線程的CPU占用,是通過計(jì)算一段時(shí)間CPU運(yùn)算周期tick值,和這段周期里Kernel或User運(yùn)行線程或進(jìn)程的tick值,通過相除得到。

進(jìn)程/線程Kernel占用 = (進(jìn)程/線程Kernel運(yùn)行tick值/CPU總周期tick值)× 100%

進(jìn)程/線程User占用 = (進(jìn)程/線程User運(yùn)行tick值/CPU總周期tick值)× 100%

進(jìn)程/線程CPU占用 = 進(jìn)程/線程Kernel占用 + 進(jìn)程/線程User占用

打印結(jié)果可能會(huì)有少量誤差,可能由于以下原因:

1、實(shí)驗(yàn)值計(jì)算到個(gè)位,小數(shù)部分四舍五入,所以可能產(chǎn)生細(xì)微的誤差。

2、理想中的測量情況如下圖

但是實(shí)際情況由于AppHelper本身也會(huì)產(chǎn)生系統(tǒng)消耗,所以測量情況為下圖

在Δt值不為0的情況下,如果在Δt期間各個(gè)tick值產(chǎn)生較大跳動(dòng)時(shí),測試結(jié)果可能產(chǎn)生誤差。

3、各個(gè)進(jìn)程或線程的運(yùn)行tick值并非完全實(shí)時(shí)變化,而是在進(jìn)程或線程完成一個(gè)時(shí)間片掛起后才加上,所以查詢函數(shù)獲得值不一定非常精確。

測試程序及說明

test_prc_thd是一個(gè)簡單的程序,用來測試AppHelper的進(jìn)程線程監(jiān)視功能。

“添加線程”按鈕按下會(huì)創(chuàng)建一個(gè)新的線程。參數(shù)中傳入線程編號(hào),線程ID等信息。

void Ctest_prc_thdDlg::OnBnClickedButton1()

{

DWORD dwTID;

HANDLE hTestThread;

m_threadParam[m_dwCnt].dwCnt = m_dwCnt;

m_threadParam[m_dwCnt].dwLv = m_dwCnt;

m_threadParam[m_dwCnt].bThreadStop = FALSE;

hTestThread = CreateThread(0, 0, TestTread, &m_threadParam[m_dwCnt], CREATE_SUSPENDED, &dwTID);

m_threadParam[m_dwCnt].dwThreadID = dwTID;

ResumeThread(hTestThread);

CloseHandle(hTestThread);

}

線程主函數(shù)里根據(jù)編號(hào)給線程自身命名,并且根據(jù)各自傳入的參數(shù)執(zhí)行負(fù)載率不等的計(jì)算。這里計(jì)算采用簡單的循環(huán)計(jì)數(shù),循環(huán)計(jì)算次數(shù)越多,線程CPU占用越多。

線程結(jié)束后,取消自身的命名。

DWORD Ctest_prc_thdDlg::TestTread(LPVOID lparam)

{

THREAD_PARAM *pThreadParam = (THREAD_PARAM*)lparam;

DWORDdwLen;

THREAD_INDEXthreadIndex;

HANDLE hHLP;

volatile int n;

hHLP = CreateFile(L"HLP1:", GENERIC_READ | GENERIC_WRITE, 0, 0, OPEN_EXISTING, 0, 0);

wsprintf(threadIndex.szThreadName, L"thread%d", pThreadParam->dwCnt);

threadIndex.dwThreadID = pThreadParam->dwThreadID;

threadIndex.dwSize = sizeof(THREAD_INDEX);

WriteFile(hHLP, &threadIndex, sizeof(THREAD_INDEX), &dwLen, NULL);

CloseHandle(hHLP);

HANDLEhFile;

WCHARwsFileName[64];

inti;

while(!pThreadParam->bThreadStop)

{

for (i=0; i<=pThreadParam->dwCnt; i++ )

{

intj;

for (j=0;j<0xfffff;j++)

{

n++;

}

}

Sleep(100);

}

hHLP = CreateFile(L"HLP1:", GENERIC_READ | GENERIC_WRITE, 0, 0, OPEN_EXISTING, 0, 0);

sprintf(threadIndex.szThreadName, L"");

threadIndex.dwThreadID = pThreadParam->dwThreadID;

threadIndex.dwSize = sizeof(THREAD_INDEX);

WriteFile(hHLP, &threadIndex, sizeof(THREAD_INDEX), &dwLen, NULL);

CloseHandle(hHLP);

return 0;

}

“結(jié)束所有線程”按鈕按下,通知所有線程結(jié)束運(yùn)行。

void Ctest_prc_thdDlg::OnBnClickedButton2()

{

inti;

for (i=0; i

{

m_threadParam[i].bThreadStop = TRUE;

Sleep(100);

}

m_dwCnt = 0;

}

測試?yán)?,下圖為該程序創(chuàng)建多個(gè)線程后的打印情況

該程序源碼可以聯(lián)系英創(chuàng)工程師獲得,客戶有疑問也可以向英創(chuàng)工程師咨詢。

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • 嵌入式主板
    +關(guān)注

    關(guān)注

    7

    文章

    6100

    瀏覽量

    36300
收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評(píng)論

    相關(guān)推薦
    熱點(diǎn)推薦

    DEKRA德凱成為沙特通信和信息技術(shù)設(shè)備技術(shù)法規(guī)認(rèn)證機(jī)構(gòu)

    近日,DEKRA德凱成功獲得沙特標(biāo)準(zhǔn)、計(jì)量和質(zhì)量組織(SASO)認(rèn)可,正式成為沙特通信和信息技術(shù)設(shè)備技術(shù)法規(guī)(Technical Regulation for Communications
    的頭像 發(fā)表于 07-15 14:27 ?146次閱讀

    科普|信創(chuàng)是什么?一文讀懂“信息技術(shù)應(yīng)用創(chuàng)新”戰(zhàn)略

    什么是信創(chuàng)?信創(chuàng),即“信息技術(shù)應(yīng)用創(chuàng)新”,是國家推動(dòng)IT系統(tǒng)自主可控、安全可控的重要戰(zhàn)略工程。它不僅是技術(shù)層面的創(chuàng)新,更承載著保障國家網(wǎng)絡(luò)安全、推動(dòng)產(chǎn)業(yè)升級(jí)和實(shí)現(xiàn)數(shù)字主權(quán)的重任。簡單來
    的頭像 發(fā)表于 06-13 10:06 ?1938次閱讀
    科普|信<b class='flag-5'>創(chuàng)</b>是什么?一文讀懂“<b class='flag-5'>信息技術(shù)</b>應(yīng)用創(chuàng)新”戰(zhàn)略

    2025第二屆教育信息技術(shù)應(yīng)用創(chuàng)新大賽正式開賽

    為進(jìn)一步落實(shí)建設(shè)網(wǎng)絡(luò)強(qiáng)國和教育強(qiáng)國的戰(zhàn)略部署,推動(dòng)各級(jí)教育行政部門及高校信息技術(shù)應(yīng)用創(chuàng)新能力提升,培養(yǎng)實(shí)戰(zhàn)型創(chuàng)新人才。龍芯中科聯(lián)合太初元碁、誠邁科技在2025第二屆教育信息技術(shù)應(yīng)用創(chuàng)新大賽共同發(fā)布信息技術(shù)應(yīng)用創(chuàng)新人工智能方向(賽
    的頭像 發(fā)表于 05-13 16:21 ?520次閱讀

    創(chuàng)浪潮下,國產(chǎn)主板有什么新的發(fā)展機(jī)遇?

    信息技術(shù)應(yīng)用創(chuàng)新浪潮的推動(dòng)下,國產(chǎn)主板迎來了諸多新的發(fā)展機(jī)遇。信創(chuàng)產(chǎn)業(yè)旨在實(shí)現(xiàn)信息技術(shù)領(lǐng)域的自主可控,這一戰(zhàn)略目標(biāo)為國產(chǎn)主板的發(fā)展提供了廣闊的空間。信創(chuàng)浪潮下國產(chǎn)主板的發(fā)展機(jī)遇多元且
    的頭像 發(fā)表于 05-09 09:24 ?214次閱讀
    信<b class='flag-5'>創(chuàng)</b>浪潮下,國產(chǎn)主板有什么新的發(fā)展機(jī)遇?

    龍芯中科榮獲2024年度信息技術(shù)應(yīng)用創(chuàng)新工作委員會(huì)卓越貢獻(xiàn)成員單位

    近日,中國電子工業(yè)標(biāo)準(zhǔn)化技術(shù)協(xié)會(huì)信息技術(shù)應(yīng)用創(chuàng)新工作委員會(huì)(以下簡稱“信創(chuàng)工委會(huì)”)在北京召開2024年度工作總結(jié)座談會(huì)暨信創(chuàng)“大比武”總結(jié)大會(huì)。中國工程院院士、信
    的頭像 發(fā)表于 01-23 10:50 ?696次閱讀

    芯盛智能榮獲2024年信息技術(shù)應(yīng)用創(chuàng)新工作委員會(huì)卓越貢獻(xiàn)成員單位

    日前,中國電子工業(yè)標(biāo)準(zhǔn)化技術(shù)協(xié)會(huì)信息技術(shù)應(yīng)用創(chuàng)新工作委員會(huì)(以下簡稱 “信創(chuàng)工委會(huì)”)2024 年度總結(jié)座談會(huì)于北京隆重舉行。此次會(huì)議對(duì)在信創(chuàng)工作中作出突出貢獻(xiàn)的成員單位予以表彰。江蘇
    的頭像 發(fā)表于 01-20 09:56 ?634次閱讀

    飛騰助力首屆教育信息技術(shù)應(yīng)用創(chuàng)新大賽圓滿落幕

    近日,由中國教育技術(shù)協(xié)會(huì)主辦,教育部教育管理信息中心教育信創(chuàng)實(shí)驗(yàn)室、公安部第三研究所、中國電子工業(yè)標(biāo)準(zhǔn)化技術(shù)協(xié)會(huì)信創(chuàng)工委會(huì)支持,北京航空航天
    的頭像 發(fā)表于 12-24 09:57 ?512次閱讀

    有方科技參編的信息技術(shù)團(tuán)體標(biāo)準(zhǔn)發(fā)布

    近日,有方科技參編的《信息技術(shù)產(chǎn)品供應(yīng)鏈成熟度 共性指標(biāo) 第1部分:企業(yè)背景評(píng)價(jià)》《信息技術(shù)產(chǎn)品供應(yīng)鏈成熟度 共性指標(biāo) 第2部分:技術(shù)掌控評(píng)價(jià)》《信息技術(shù)產(chǎn)品供應(yīng)鏈成熟度 共性指標(biāo) 第
    的頭像 發(fā)表于 12-23 10:44 ?601次閱讀

    龍芯中科助力2024首屆教育信息技術(shù)應(yīng)用創(chuàng)新大賽成功舉辦

    近日,2024首屆教育信息技術(shù)應(yīng)用創(chuàng)新大賽在北京航空航天大學(xué)成功舉辦。本次大賽由中國教育技術(shù)協(xié)會(huì)主辦,教育信創(chuàng)實(shí)驗(yàn)室、公安部第三研究所、中國電子工業(yè)標(biāo)準(zhǔn)化技術(shù)協(xié)會(huì)信
    的頭像 發(fā)表于 12-19 17:02 ?570次閱讀

    拓維信息參與牽頭組建!長沙新一代信息技術(shù)產(chǎn)教聯(lián)合體正式獲批

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

    AWTK-WEB 快速入門(2) - JS 應(yīng)用程序

    導(dǎo)讀AWTK可以使用相同的技術(shù)棧開發(fā)各種平臺(tái)的應(yīng)用程序。有時(shí)我們需要使用Web界面與設(shè)備進(jìn)行交互,本文介紹一下如何使用JS語言開發(fā)AWTK-WEB應(yīng)用程序。用AWTKDesigner新
    的頭像 發(fā)表于 12-05 01:04 ?494次閱讀
    AWTK-WEB 快速入門(2) - JS <b class='flag-5'>應(yīng)用程序</b>

    AWTK-WEB 快速入門(1) - C 語言應(yīng)用程序

    導(dǎo)讀AWTK可以使用相同的技術(shù)棧開發(fā)各種平臺(tái)的應(yīng)用程序。有時(shí)我們需要使用Web界面與設(shè)備進(jìn)行交互,本文介紹一下如何使用C語言開發(fā)AWTK-WEB應(yīng)用程序。用AWTKDesigner新建
    的頭像 發(fā)表于 11-27 11:46 ?712次閱讀
    AWTK-WEB 快速入門(1) - C 語言<b class='flag-5'>應(yīng)用程序</b>

    中科創(chuàng)達(dá)榮獲2024年軟件和信息技術(shù)服務(wù)優(yōu)秀企業(yè)

    及前百家企業(yè)”名單。中科創(chuàng)達(dá)憑借非凡的技術(shù)實(shí)力與持續(xù)的創(chuàng)新能力,成功入選“2024年度軟件和信息技術(shù)服務(wù)競爭力百強(qiáng)企業(yè)”以及“2024年軟件和信息技術(shù)服務(wù)優(yōu)秀企業(yè)”。
    的頭像 發(fā)表于 10-30 11:44 ?959次閱讀

    創(chuàng)國產(chǎn)化背景下的工控主板發(fā)展現(xiàn)狀

    創(chuàng),是信息技術(shù)應(yīng)用創(chuàng)新產(chǎn)業(yè)的簡稱,于2016年“信創(chuàng)工委會(huì)”(信息技術(shù)應(yīng)用創(chuàng)新工作委員會(huì))提出,目的就是要推動(dòng)我們國內(nèi)軟硬件關(guān)鍵技術(shù)的研發(fā)
    的頭像 發(fā)表于 09-21 16:15 ?877次閱讀

    梯度科技入選2023年信息技術(shù)應(yīng)用創(chuàng)新解決方案名單

    日前,工業(yè)和信息化部網(wǎng)絡(luò)安全產(chǎn)業(yè)發(fā)展中心(工業(yè)和信息化部信息中心)在天津舉辦2024信息技術(shù)應(yīng)用創(chuàng)新發(fā)展大會(huì)暨解決方案應(yīng)用推廣大會(huì)。會(huì)上正式公布了2023年
    的頭像 發(fā)表于 09-09 16:29 ?759次閱讀