当前位置: 首页 > news >正文

做网站的人怎么联系微信网站设计制作

做网站的人怎么联系,微信网站设计制作,网站图片等比缩小,旅游宣传推广方案在MCU on Eclipse网站上看到Erich Styger在8月2日发的博文#xff0c;一篇关于在Amazon FreeRTOS V10中使用运行时统计信息的文章#xff0c;本人觉得很有启发#xff0c;特将其翻译过来以备参考。原文网址#xff1a;https://mcuoneclipse.com/2018/08/02/tutorial-using-…在MCU on Eclipse网站上看到Erich Styger在8月2日发的博文一篇关于在Amazon FreeRTOS V10中使用运行时统计信息的文章本人觉得很有启发特将其翻译过来以备参考。原文网址https://mcuoneclipse.com/2018/08/02/tutorial-using-runtime-statistics-with-amazon-freertos-v10/ FreeRTOS包含一个很好的功能可以向我提供有关每个任务在系统上运行的时间的信息 FreeRTOS运行时信息 本教程解释了FreeRTOS运行时统计功能以及如何打开和使用它。 ♣软件和工具 在本文中我使用以下内容  MCUXpresso IDE 10.2.1  FRDM-K64F板  来自MCUXpresso SDK 2.4.0的Amazon FreeRTOS V10.0.1 但是当然可以使用任何其他工具/ IDE或FreeRTOS版本FreeRTOS至少应该是9.0.0或更高版本。 使用以下步骤还可以使用FreeRTOS任务运行时信息收集来更新现有项目。 ♣怎么运行的 FreeRTOS使用用户/应用程序特定的计时器来测量任务执行时间。为此RTOS中的每个任务描述符都有一个累积计数器用于添加为该任务花费的计时器滴答。当任务获得CPU时间时当前计时器滴答计数被记忆当RTOS切换出该任务时则记忆当前计时器滴答计数。然后将对应于任务执行时间的增量时间添加到任务执行时间计数器。 我需要配置FreeRTOS并将以下宏设置为1以执行运行时分析 #define configGENERATE_RUN_TIME_STATS 1 另外需要提供以下两个宏 portCONFIGURE_TIMER_FOR_RUN_TIME_STATS portGET_RUN_TIME_COUNTER_VALUE RTOS使用它来配置运行时计数器计时器并获取计时器值。 运行时计数器在每个任务描述符中存储为32位值这意味着对于每个任务我对系统的RAM要求将增加4个字节 FreeRTOS TCB中的ulRunTimeCounter 假设计数器周期为10 kHz0.1 ms这意味着变量将在大约5天后溢出。 此外RTOS在task.c中维护额外的全局变量 #if ( configGENERATE_RUN_TIME_STATS 1 )PRIVILEGED_DATA static uint32_t ulTaskSwitchedInTime 0UL; /* Holds the value of a timer/counter the last time a task was switched in. */PRIVILEGED_DATA static uint32_t ulTotalRunTime 0UL; /* Holds the total amount of execution time as defined by the run time counter clock. */ #endif 第一个变量用于记住任务切换的时间第二个变量是系统的总运行时间。这是在任务切换时发生的事情内核函数vTaskSwitchContext /* Add the amount of time the task has been running to theaccumulated time so far. The time the task started running wasstored in ulTaskSwitchedInTime. Note that there is no overflowprotection here so count values are only valid until the timeroverflows. The guard against negative values is to protectagainst suspect run time stat counter implementations - whichare provided by the application, not the kernel. */ if( ulTotalRunTime ulTaskSwitchedInTime ) {pxCurrentTCB-ulRunTimeCounter ( ulTotalRunTime - ulTaskSwitchedInTime ); } else {mtCOVERAGE_TEST_MARKER(); } ulTaskSwitchedInTime ulTotalRunTime; 通常周期性定时器中断用于计算执行时间并且定时器频率应该是嘀嗒中断频率的大约10倍比如说“Hello”到“奈奎斯特 - 香农”采样定理。这意味着如果我的滴答中断是1 kHz我的运行时分析定时器频率应该是10 kHz。 运行时统计信息通常带有两个数字  绝对时间数字  百分比 下面是一个文本任务列表其中包含右侧的运行时信息 TCB Static Handle Name State Prio Stack Beg Stack End Size Stack Top Unused Runtime 1 no (0) 0x20000450 Shell Running (1,1) 0x20000440 0x20000060 1000 B 0x200001EC ( 600 B) 392 B 0x00000000 ( 1%) 7 no (0) 0x20001E68 IDLE Ready (0,0) 0x20001E58 0x20001CD0 400 B 0x20001DFC ( 96 B) 312 B 0x00007C35 ( 91%) 2 no (0) 0x20000740 Refl Blocked (4,4) 0x20000730 0x20000510 552 B 0x200006BC ( 120 B) 384 B 0x00000C6E ( 9%) 6 no (0) 0x20001C68 Main Blocked (1,1) 0x20001C58 0x20001A08 600 B 0x20001BDC ( 128 B) 356 B 0x00000000 ( 1%) 3 no (0) 0x20001378 Radio Blocked (3,3) 0x20001368 0x20000F88 1000 B 0x200012F4 ( 120 B) 680 B 0x00000001 ( 1%) 4 no (0) 0x20001658 Sumo Blocked (2,2) 0x20001648 0x20001458 504 B 0x200015C4 ( 136 B) 360 B 0x00000000 ( 1%) 5 no (0) 0x20001948 Drive Blocked (3,3) 0x20001938 0x20001748 504 B 0x200018B4 ( 136 B) 264 B 0x00000000 ( 1%) 绝对数字是运行时间计时器滴答数TCB中的ulRunTimeCounter以及此计数器相对于总运行时间的百分比task.c中的ulTotalRunTime。 对于IDLE任务它显示了这一点 TCB Static Handle Name State Prio Stack Beg Stack End Size Stack Top Unused Runtime 7 no (0) 0x20001E68 IDLE Ready (0,0) 0x20001E58 0x20001CD0 400 B 0x20001DFC ( 96 B) 312 B 0x00007C35 ( 91%) 0x7C35是定时器计数器在本例中使用0.1 ms定时器因此它意味着IDLE任务运行约3秒0x7C35 / 10 3179 ms并使用91的运行时间。 问题可能是中断花费的时间是多少答案是RTOS不知道中断它只知道任务使用了多少运行时间计时器。或者换句话说FreeRTOS运行时计数器显示的运行时* includes*中断的时间。 ♣教程使用FreeRTOS进行运行时分析 在下一节中我将展示如何使用FreeRTOS启用运行时分析。基本步骤是  创建一个新项目如果尚未存在  更新FreeRTOSConfig.h  初始化和配置计时器  添加钩子/回调到应用程序 1、创建项目 创建一个基于你的目标板的项目 项目创建的目标板 确保包含FreeRTOS 项目的FreeRTOS选项 2、添加FreeRTOS任务 接下来添加一个任务例如 #include FreeRTOS.h #include task.hstatic void MyTask(void *pvParameters) {for(;;) {vTaskDelay(pdMS_TO_TICKS(100));} } 在main内部创建一个任务并启动调度程序 /* create task */if (xTaskCreate(MyTask, MyTask, 500/sizeof(StackType_t), NULL, tskIDLE_PRIORITY1, NULL) ! pdPASS) {for(;;){} /* error */}vTaskStartScheduler(); /* start RTOS */for(;;) {/* should not get here */} 添加FreeRTOS任务 构建和调试该项目只是为了确保一切正常。 调试FreeRTOS任务 要在Debug视图中显示FreeRTOS线程请参阅https://mcuoneclipse.com/2018/06/29/show-freertos-threads-in-eclipse-debug-view-with-segger-j-link-and-nxp-s32-design-studio/ 但是FreeRTOS任务列表使用Menu FreeRTOS任务列表来显示该视图不显示任何运行时信息 FreeRTOS任务列表没有运行时信息 这是我们将在接下来的步骤中添加的内容。 3、跟踪和运行时统计信息 在FreeRTOSConfig.h中确保将以下定义设置为1打开 #define configGENERATE_RUN_TIME_STATS 1 /* 1: generate runtime statistics; 0: no runtime statistics */ #define configUSE_TRACE_FACILITY 1 /* 1: include additional structure members and functions to assist with execution visualization and tracing, 0: no runtime stats/trace */ 启用运行时统计信息和跟踪功能 该configUSE_TRACE_FACILITY需要使用RTOS有在任务描述当前存储的运行时间计数器的附加数据元素在configGENERATE_RUN_TIME_STATS自动关上以创纪录的任务执行时间的功能。 4、配置定时器 接下来我们必须设置一个计时器来测量任务执行时间。该计时器的运行速度至少比RTOS Tick计时器快10倍。 在我们的示例中滴答率为1 kHz #define configTICK_RATE_HZ ((TickType_t)1000) 这意味着我们的运行时间应至少以10 kHz运行。 要配置这样的计时器我可以使用MCUXpresso配置外设工具 外围设备工具 在外设工具中我们选择了FTM0定时器我们也可以使用任何其他定时器。 添加FTM0 定时器配置为10 kHz 定时器输出频率 我们将使用定时器中断来增加一个计数器所以不要忘记打开中断 定时器溢出中断使能 然后单击按钮以更新项目源 更新项目 切换回开发人员视角。 5、定时器ISR 接下来我们将定时器中断代码添加到应用程序 #include fsl_ftm.h static uint32_t RTOS_RunTimeCounter; /* runtime counter, used for configGENERATE_RUNTIME_STATS */void FTM0_IRQHandler(void) {/* Clear interrupt flag.*/FTM_ClearStatusFlags(FTM0, kFTM_TimeOverflowFlag);RTOS_RunTimeCounter; /* increment runtime counter */ } 6、添加定时器驱动 该项目尚未编译因为必要的驱动程序尚未成为项目的一部分。要添加它们请使用“管理SDK组件”按钮 管理SDK组件按钮 然后检查ftm驱动程序并按OK将额外的驱动程序源添加到项目中。 FTM驱动程序 7、向FreeRTOS添加定时器用于运行时统计的FreeRTOS定时器宏 将以下行添加到FreeRTOSConfig.h extern void RTOS_AppConfigureTimerForRuntimeStats(void); #define portCONFIGURE_TIMER_FOR_RUN_TIME_STATS() RTOS_AppConfigureTimerForRuntimeStats() extern uint32_t RTOS_AppGetRuntimeCounterValueFromISR(void); #define portGET_RUN_TIME_COUNTER_VALUE() RTOS_AppGetRuntimeCounterValueFromISR() 这告诉FreeRTOS它将用于初始化定时器的功能以及获取定时器值的功能。 向FreeRTOSConfig.h添加了运行时计数器设置 8、FreeRTOS Callback for Timer 现在我们需要添加我们配置FreeRTOS使用的两个回调。 void RTOS_AppConfigureTimerForRuntimeStats(void) {RTOS_RunTimeCounter 0;EnableIRQ(FTM0_IRQn); }uint32_t RTOS_AppGetRuntimeCounterValueFromISR(void) {return RTOS_RunTimeCounter; } 9、正在运行…。 构建和调试您的应用程序。如果您现在停止应用程序并检查任务列表它现在显示运行时信息 显示运行时信息 10、没有Eclipse没问题 上面我使用了FreeRTOS的Eclipse Task List视图这是NXP为他们的基于Eclipse的IDEMCUXpresso IDES32DS for ARM和Kinetis Design Studio所做的事情。但是可以直接从应用程序显示该信息例如在终端LCD显示器上。McuOnEclipse上的FreeRTOS 包含一个使用它的shell /终端接口。 控制台上的任务运行时信息 下面的代码片段显示了如何为每个任务打印信息 #if configGENERATE_RUN_TIME_STATSulTotalTime portGET_RUN_TIME_COUNTER_VALUE(); /* get total time passed in system */ulTotalTime / 100UL; /* For percentage calculations. */ #endif ... #if configGENERATE_RUN_TIME_STATS configUSE_TRACE_FACILITY/* runtime */UTIL1_strcpy(tmpBuf, sizeof(tmpBuf), (unsigned char*)0x);UTIL1_strcatNum32Hex(tmpBuf, sizeof(tmpBuf), taskStatus.ulRunTimeCounter);if (ulTotalTime0) { /* to avoid division by zero *//* What percentage of the total run time has the task used?This will always be rounded down to the nearest integer.ulTotalRunTime has already been divided by 100. */ulStatsAsPercentage taskStatus.ulRunTimeCounter/ulTotalTime;if (ulStatsAsPercentage0) {UTIL1_strcat(tmpBuf, sizeof(tmpBuf), (unsigned char*) ();UTIL1_strcatNum16uFormatted(tmpBuf, sizeof(tmpBuf), ulStatsAsPercentage, , 3);UTIL1_strcat(tmpBuf, sizeof(tmpBuf), (unsigned char*)%));} else {/* If the percentage is zero here then the task has consumed less than 1% of the total run time. */UTIL1_strcat(tmpBuf, sizeof(tmpBuf), (unsigned char*) ( 1%));}}buf[0] \0;UTIL1_strcatPad(buf, sizeof(buf), tmpBuf, , PAD_STAT_TASK_RUNTIME);CLS1_SendStr(buf, io-stdOut); #endifCLS1_SendStr((unsigned char*)\r\n, io-stdOut); ♣概要 FreeRTOS运行时统计是一个非常有用的功能它显示每个任务使用了多少时间包括其中断时间。我需要的只是设置一些FreeRTOS配置宏并设置周期性定时器中断。当然这并不是免费提供额外的定时器中断以及该功能所需的RAM和FLASH但如果需要它可以很容易地关闭以供最终版本使用。 ♣链接  GitHub上的示例项目https//github.com/ErichStyger/mcuoneclipse/tree/master/Examples/MCUXpresso/FRDM-K64F/FRDM-K64F_SDK_FreeRTOS  使用FreeRTOS进行性能和运行时分析  MCUXpresso IDE网页http//www.nxp.com/mcuxpresso/ide  MCUXpresso IDE社区http//www.nxp.com/mcuxpresso/ide/forum  在Eclipse中更好的FreeRTOS调试  McuOnEclipse库项目https//github.com/ErichStyger/McuOnEclipseLibrary/tree/master/lib/FreeRTOS/Source  ARM Cortex-M循环计数器https//mcuoneclipse.com/2017/01/30/cycle-counting-on-arm-cortex-m-with-dwt/  更好的FreeRTOS调试https//mcuoneclipse.com/2017/03/18/better-freertos-debugging-in-eclipse/  FreeRTOS RuntimeStatshttps//www.freertos.org/rtos-run-time-stats.html 欢迎关注
http://wiki.neutronadmin.com/news/12935/

相关文章:

  • 凤台做网站网站悬浮
  • 玻璃行业做的非常有设计感的网站wordpress主题切换不了
  • 关于网站建设的题目那种系统做网站比较好
  • 怎么做电影网站的app开发需要多少费用
  • 上海私人网站建设企业专属空间登录
  • 建设网站实施条件清远 网站建设
  • 给网站做引流多少钱手机网站营销页
  • 怎么做跳转不影响原网站排名莆田关键词优化报价
  • asp手机网站wap网站自动
  • 个人网站源代码抖音代运营美发
  • 泉州网站seo外包公司规划设计公司毛利
  • 苏州高端网站开发网站在线制作系统
  • 北京建站哪家好app store怎么切换地区
  • 做网站策划计划书泰安肥城建设局网站
  • 做化学式的网站电子商务网站的定义
  • 快速搭建网站前端wordpress菜单文件夹
  • 中国做的网站国外能打开吗海外推广方法有哪些
  • 大连建网站需要多少钱有了源码该怎么建立app
  • 潍坊网站建设联系方式网站为什么被挂马
  • 最新免费下载ppt模板网站网站添加地图导航
  • 如何建立自己的微网站哪里有做网站平台
  • 國家建设协会官方网站哪一个网站可以做任务拿佣金
  • 口碑好的聊城网站建设上海网站建设公司服务怎么做
  • 哪些网站教你做美食的网络科技公司骗术
  • 养生网站源码下载做好的网站如何上线
  • 康体设备网站建设昆明市建设局网站
  • 广东专业做网站排名公司哪家好重庆招生院校网站
  • 黄山网站设计太原搭建网站的公司
  • 关于推广网站的标题安徽网络公司排名
  • 牡丹江0453免费信息网站网站备案后可以修改吗