0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看威廉希尔官方网站 视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

英创信息威廉希尔官方网站 CE应用程序助手简介

英创信息威廉希尔官方网站 来源:英创信息威廉希尔官方网站 作者:英创信息威廉希尔官方网站 2020-02-03 10:09 次阅读

背景

在基于英创工控主板的智能整机设备的开发过程中,客户应用程序的开发通常都是最为关键性的工作,其工作量往往也是最大的。一个高质量的应用程序,首先表现在较少的现场维护,不仅大幅度降低了设备开发费用,同时也为客户赢得后续的市场声誉。因此如何在设备出厂之前就能确定应用程序的基本质量,就变得至关重要了。

基于我们十多年长期不断地对客户应用程序的威廉希尔官方网站 支持的经验,一般来说,如果一个应用程序在完成基本的应用功能的基础上,整个应用进程(包括进程的所有活动线程)的CPU负载率保持在一个合理的水平,比如低于70%,那么我们就可以认为运行于英创工控主板上的这个应用程序其质量是有基本保证的。为了方便客户随时了解应用程序的运行状况,我们计划在主板中嵌入一款称为应用程序助手(AppHelper)的监测程序。AppHelper仅使用很少的CPU资源,就可为客户提供系统各个进程的CPU开销情况,对客户的应用进程,还将提供进程中各个活动线程的运行状况。客户根据这些信息及可方便及时的了解程序运行的总体情况,快速确定程序代码需要优化的地方。

本文的后续部分主要介绍AppHelper的使用方法及信息输出的格式。

AppHelper的输出接口

CE应用程序助手AppHelper的主要功能是提供系统运行状况的基本信息。这些基本信息可支持多种通讯接口输出,这些接口包括调试串口、USB OTG接口、应用串口COM2 – COM9、以太网接口。客户可根据自身设备的特点,方便地选择输出接口。调试串口是AppHelper的缺省输出接口。

AppHelper输出信息的基本格式都是标准的ASCII码字符串,客户通过PC上的一款串口终端窗口程序(推荐使用开源的Tara Term),就可看到输出的信息。

若客户希望使用USB或应用串口来观察AppHelper的输出信息,需要通过执行主板上的AppHelperConfig进行端口配置:

\> AppHelperConfig p1 [p2]

上式中p1 = 1, 2, .. 9;其中 = 1表示使用COM1端口,在英创主板中COM1端口是基于USB OTG的虚拟串口,英创公司的EM335x产品线和EM928x产品线的所有产品均支持USB OTG虚拟串口功能,虚拟串口的使用方法与实际物理串口完全一致。参数p1 = 2 – 9分别对应物理串口COM2 – COM9。注意在选择物理串口时,应避免使用低速串口。参数p2为串口的波特率,缺省配置为115200bps。除非特别的需求,一般不设置该参数,即推荐使用115200波特率。

用户只需在输出串口上输入3个以上的字符(键盘连按3次以上),就会激活AppHelper。AppHelper将按2秒间隔输出系统运行状态信息。

若用户希望通过以太网口来观察AppHelper的输出信息,则可通过telnet登录系统后,直接运行SysInfo.exe,就可在CMD窗口看到系统的运行信息。SysInfo可带一个输入参数,来确定输出信息的时间,缺省的时间为10s。AppHelper每2秒输出一次系统运行参数。

AppHelper信息输出格式

AppHelper的输出格式如下:

AppHelper v0.1 Oct 18 2015 17:36:33 Emtronix(c)

CPU:2% FreeMemory=148.59MiB FreeNand=123.99MiB

….

第一行是AppHelper的版本信息,第二行是系统总的CPU负载、程序内存的剩余空间,以及NandFlash的剩余空间。之后的每一行是一个进程或线程的CPU占用率。其中每个进程的名称就是对应的exe文件名,而对线程来说,系统只提供有线程ID。客户一般说来很难根据线程ID来辨识具体是应用程序中哪个线程,例如串口接收线程。

应用线程命名

为了客户更容易识别应用线程,AppHelper为应用程序提供了2个API函数。应用程序在创建线程后,通过API函数来为该线程注册一个希望字符串名;当线程退出时,则通过API函数注销该字符串。AppHelper提供的这两个API函数为:

BOOL RegisterThreadName(DWORD dwThreadID, TCHAR* sThreadName);

BOOL UnRegisterThreadName(DWORD dwThreadID);

注册操作一般直接跟在线程创建之后,其代码如下:

DWORD dwThreadID = 0;

TCHAR sThreadName[] = L” ReceiveThread”;//注意32个字符!

// create rx thread

m_hRxThread = CreateThread((LPSECURITY_ATTRIBUTES)NULL,

0,

(LPTHREAD_START_ROUTINE)ReceiveThread,

(LPVOID)pPara,

0,

&dwThreadID);

RegisterThreadName(dwThreadID, sThreadName);

线程名注销操作则更简单,直接放在线程退出之前即可。

以下是AppHelper提供的这两个API函数的具体实现,该代码应包含在应用程序之中。

struct _THREAD_INDEX

{

DWORD dwSize; // struct size in byte

DWORD dwThreadID; // a thread id

TCHAR szThreadName[32]; // user-defined name associated with the

// thread id above

struct _THREAD_INDEX *pNext; // = NULL

};

typedef struct _THREAD_INDEX THREAD_INDEX, *PTHREAD_INDEX;

BOOL RegisterThreadName(DWORD dwThreadID, TCHAR* sThreadName)

{

BOOL bRet = TRUE;

THREAD_INDEX ThreadNode;

PTHREAD_INDEX pNode = &ThreadNode;

DWORD dwLen;

HANDLE hDevFile = NULL;

memset(&ThreadNode, 0, sizeof(THREAD_INDEX));

pNode->dwSize = sizeof(THREAD_INDEX);

dwLen = wcslen(sThreadName);

if(!dwThreadID || (dwLen >= 32))

{

bRet = FALSE;

goto cleanup;

}

pNode->dwThreadID = dwThreadID;

wcscpy(pNode->szThreadName, sThreadName);

hDevFile = CreateFile(L"HLP1:", // name of device

GENERIC_READ|GENERIC_WRITE, // desired access

0, // sharing mode

NULL, // security attributes

OPEN_EXISTING, // creation disposition

0, // flags/attributes

NULL); // template file

if(hDevFile == INVALID_HANDLE_VALUE)

{

hDevFile = NULL;

bRet = FALSE;

goto cleanup;

}

dwLen = 0;

if(!WriteFile(hDevFile, pNode, sizeof(THREAD_INDEX), &dwLen, NULL))

{

bRet = FALSE;

}

CloseHandle(hDevFile);

cleanup:

return bRet;

}

BOOL UnRegisterThreadName(DWORD dwThreadID)

{

BOOL bRet = TRUE;

THREAD_INDEX ThreadNode;

PTHREAD_INDEX pNode = &ThreadNode;

DWORD dwLen;

HANDLE hDevFile = NULL;

memset(&ThreadNode, 0, sizeof(THREAD_INDEX));

pNode->dwSize = sizeof(THREAD_INDEX);

if(!dwThreadID)

{

bRet = FALSE;

goto cleanup;

}

pNode->dwThreadID = dwThreadID;

hDevFile = CreateFile(L"HLP1:", // name of device

GENERIC_READ|GENERIC_WRITE, // desired access

0, // sharing mode

NULL, // security attributes

OPEN_EXISTING, // creation disposition

0, // flags/attributes

NULL); // template file

if(hDevFile == INVALID_HANDLE_VALUE)

{

hDevFile = NULL;

bRet = FALSE;

goto cleanup;

}

dwLen = 0;

if(!WriteFile(hDevFile, pNode, sizeof(THREAD_INDEX), &dwLen, NULL))

{

bRet = FALSE;

}

CloseHandle(hDevFile);

cleanup:

return bRet;

}

预计在2015年10月底前,AppHelper将首先安装到EM335x产品线的所有主板,并在11月份部署到EM928x产品线。欢迎新老客户评估测试CE应用程序助手。

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 嵌入式主板
    +关注

    关注

    7

    文章

    6085

    浏览量

    35435
收藏 人收藏

    评论

    相关推荐

    飞腾助力首届教育信息威廉希尔官方网站 应用创新大赛圆满落幕

    近日,由中国教育威廉希尔官方网站 协会主办,教育部教育管理信息中心教育信实验室、公安部第三研究所、中国电子工业标准化威廉希尔官方网站 协会信工委会支持,北京航空航天
    的头像 发表于 12-24 09:57 154次阅读

    有方科技参编的信息威廉希尔官方网站 团体标准发布

    近日,有方科技参编的《信息威廉希尔官方网站 产品供应链成熟度 共性指标 第1部分:企业背景评价》《信息威廉希尔官方网站 产品供应链成熟度 共性指标 第2部分:威廉希尔官方网站 掌控评价》《信息威廉希尔官方网站 产品供应链成熟度 共性指标 第
    的头像 发表于 12-23 10:44 165次阅读

    龙芯中科助力2024首届教育信息威廉希尔官方网站 应用创新大赛成功举办

    近日,2024首届教育信息威廉希尔官方网站 应用创新大赛在北京航空航天大学成功举办。本次大赛由中国教育威廉希尔官方网站 协会主办,教育信实验室、公安部第三研究所、中国电子工业标准化威廉希尔官方网站 协会信
    的头像 发表于 12-19 17:02 251次阅读

    拓维信息参与牵头组建!长沙新一代信息威廉希尔官方网站 产教联合体正式获批

    的长沙新一代信息威廉希尔官方网站 产教联合体成功获批,为长沙市信息威廉希尔官方网站 产业发展注入了新的活力。图/《2024年长沙市市级市域产教联合体名单》长沙新一代信息威廉希尔官方网站 产教联合体将依托龙头企
    的头像 发表于 12-07 01:06 405次阅读
    拓维<b class='flag-5'>信息</b>参与牵头组建!长沙新一代<b class='flag-5'>信息威廉希尔官方网站
</b>产教联合体正式获批

    AWTK-WEB 快速入门(1) - C 语言应用程序

    导读AWTK可以使用相同的威廉希尔官方网站 栈开发各种平台的应用程序。有时我们需要使用Web界面与设备进行交互,本文介绍一下如何使用C语言开发AWTK-WEB应用程序。用AWTKDesigner新建一个应用
    的头像 发表于 11-27 11:46 230次阅读
    AWTK-WEB 快速入门(1) - C 语言<b class='flag-5'>应用程序</b>

    中科达荣获2024年软件和信息威廉希尔官方网站 服务优秀企业

    及前百家企业”名单。中科达凭借非凡的威廉希尔官方网站 实力与持续的创新能力,成功入选“2024年度软件和信息威廉希尔官方网站 服务竞争力百强企业”以及“2024年软件和信息威廉希尔官方网站 服务优秀企业”。
    的头像 发表于 10-30 11:44 505次阅读

    国产化背景下的工控主板发展现状

    ,是信息威廉希尔官方网站 应用创新产业的简称,于2016年“信工委会”(信息威廉希尔官方网站 应用创新工作委员会)提出,目的就是要推动我们国内软硬件关键威廉希尔官方网站 的研发
    的头像 发表于 09-21 16:15 432次阅读

    加速鲲鹏落地!拓维信息迁移工具荣获鲲鹏原生开发威廉希尔官方网站 认证

    认证。图/拓维·数据库适配中间件取得鲲鹏原生开发N认证在数字化时代的大潮中,信战略作为国家推动信息威廉希尔官方网站 应用创新、保障信息安全与自主可控的关键举措,其重要性日益凸显
    的头像 发表于 09-10 08:03 462次阅读
    加速鲲鹏落地!拓维<b class='flag-5'>信息</b>信<b class='flag-5'>创</b>迁移工具荣获鲲鹏原生开发<b class='flag-5'>威廉希尔官方网站
</b>认证

    梯度科技入选2023年信息威廉希尔官方网站 应用创新解决方案名单

    日前,工业和信息化部网络安全产业发展中心(工业和信息化部信息中心)在天津举办2024信息威廉希尔官方网站 应用创新发展大会暨解决方案应用推广大会。会上正式公布了2023年
    的头像 发表于 09-09 16:29 447次阅读

    中软国际信服务助力大连信产业发展

    为进一步激发大连本地信产业生态的活力与潜力,搭建一个高效、开放的交流平台。由大连软件行业协会携手大连市信息威廉希尔官方网站 应用创新综合服务中心主办,中软国际协办的,2024年大连市信息威廉希尔官方网站 应用创新产业发展大会
    的头像 发表于 08-27 16:49 903次阅读

    翼辉信息入选2023年信息威廉希尔官方网站 应用创新解决方案名单

    近日,2023 年(第五届)信息威廉希尔官方网站 应用创新解决方案公布遴选名单,历经资格初审、威廉希尔官方网站 中评、区域评议、终评预审,翼辉以“面向工业领域嵌入式操作系统 SylixOS 解决方案”,成功在全国优秀方案中脱颖而出,入选典型解决方案名单。
    的头像 发表于 04-28 11:37 582次阅读
    翼辉<b class='flag-5'>信息</b>入选2023年<b class='flag-5'>信息威廉希尔官方网站
</b>应用创新解决方案名单

    龙芯中科三项信方案入围工信部2023年信息威廉希尔官方网站 应用创新应用示范案例名单

    近日,工业和信息化部通报了2023年信息威廉希尔官方网站 应用创新解决方案征集遴选结果,本次共评选出典型解决方案173个、应用示范案例83个、单项创新案例64个。
    的头像 发表于 03-07 16:45 961次阅读
    龙芯中科三项信<b class='flag-5'>创</b>方案入围工信部2023年<b class='flag-5'>信息威廉希尔官方网站
</b>应用创新应用示范案例名单

    扁平线共模电感对CE噪声的高效抑制?|深圳比达电子EMC(中)

    扁平线共模电感对CE噪声的高效抑制?|深圳比达电子EMC(中)扁平线共模电感对CE噪声的高效抑制(中)?相信不少人是有疑问的,今天深圳市比达电子科技有限公司就跟大家解答一下! 比
    发表于 02-28 10:26

    RX78M组 EtherCAT ETG.5003示例程序固件信息威廉希尔官方网站

    电子发烧友网站提供《RX78M组 EtherCAT ETG.5003示例程序固件信息威廉希尔官方网站 .pdf》资料免费下载
    发表于 02-21 14:22 1次下载
    RX78M组  EtherCAT ETG.5003示例<b class='flag-5'>程序</b>固件<b class='flag-5'>信息威廉希尔官方网站
</b>

    软通动力与捷威廉希尔官方网站 签订战略合作协议

    近日,软通动力信息威廉希尔官方网站 (集团)股份有限公司(以下简称“软通动力”)与宁波捷威廉希尔官方网站 股份有限公司(以下简称“捷威廉希尔官方网站 ”)正式签订战略合作协议,并
    的头像 发表于 02-03 16:35 1128次阅读