有关如何将旧式嵌入式应用程序限制为实时应用程序的建议

蛇桑德斯

我要接管的是一个“遗留”的嵌入式系统应用程序,不是很旧,而我所关心的第一件事是我发现在开发过程中,有时该应用程序的时间限制已失去了需求该项目。现在,我的任务是重构它并使之实时实现。

该项目针对C和C ++的ATMEL UC3完成。它在FreeRTOS上运行,有6个任务。5用于管理外部设备和另一个,以最低的优先级和最重的任务作为主程序。我要做的第一件事是测量主要任务所花费的时间,有时候它摆脱了最后期限,这并不奇怪,因此,完整的任务要经过几个周期才能执行。

有人可以建议我在这种情况下可能采取的主要观点吗?

你会怎么做?我知道我应该遵循所有执行路径的流程并计算指令,然后采用最差的执行路径,并且随着芯片频率的提高,我可以实时执行。从理论上讲,是否有任何工具,技巧或程序可以使它更容易一些?

更新:

出于机密原因,我无法共享源。另外,我一直在深入研究,发现主要的延迟显然是由队列大小引起的。大多数队列都是为容纳2或3条消息而创建的。我将需要做一些测试,以便在此处提供更多信息。从理论上讲,如果队列已满,则其余进程将无法再发送,直到再次有可用空间容纳更多消息为止。然后,进程被挂起,导致连续的重新调度。我的想法是将队列大小增加到10,以查看它是否可以改善性能和计时。

更新2从建议开始,我发现它们在黑暗中非常有帮助,我遇到了一个名为“理解”的工具,它不是免费的,但可以帮助我获得分析和字符。您还可以看到复杂函数的字符流,因此可以看到执行该流的最长路径。

波西

之所以在这里给出答案,是因为Rock'n Roll赛车是有史以来最好的游戏之一。话虽如此...

从这里的措辞看来,您正在衡量的任务是绝对必须确保其截止日期为最低优先级。那右边有倒退。您希望将需要确保其完成的任务作为最高优先级任务,这是第一步。如果我对我的问题的理解方式有误,而需要按时完成任务的主题是头等大事,那么还有其他事情要看。

确保中断不会被其他任何任务长时间禁用,因为这会影响线程调度。如果低优先级任务禁用了中断,然后在循环中旋转了一段时间,则RTOS调度程序无法收回控制权并将其交给您的高优先级线程。

检查优先级反转(http://en.wikipedia.org/wiki/Priority_inversion)。如果您的低优先级线程和此关键线程之间存在资源共享,那么您可能会遇到这样的情况,即使您的关键线程具有高优先级,它也可能阻止等待较低优先级的线程完成资源的使用。不确定FreeRTOS是否具有优先级互斥锁/信号灯,但是您也可以检查一下。

可能是最简单的解释的另一件事是分析线程。在嵌入式系统上很难做到这一点,但是您可以创建某种类型的光记录缓冲区或类似类型的缓冲区。找出有时错过最后期限的情况,该代码路径与确定时间的区别是什么。您可能必须找到一种加快某些途径的方法。例如,在慢速运行中,它可能会比正常写入更多的数据,因此可能会将这些数据写入更改为使用DMA而不是手动写入线程。

这不是一个详尽的清单,而是一些入门的好技巧。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

有关如何将旧式嵌入式应用程序限制为实时应用程序的建议

来自分类Dev

如何将应用程序限制为特定设备?

来自分类Dev

具有独立应用程序的嵌入式Linux

来自分类Dev

具有独立应用程序的嵌入式Linux

来自分类Dev

春季启动嵌入式Tomcat“应用程序/ json”发布请求限制为10KB

来自分类Dev

如何测试嵌入式Deezer应用程序?

来自分类Dev

如何测试嵌入式红宝石应用程序?

来自分类Dev

如何将node.js和节点应用程序部署到嵌入式目标?

来自分类Dev

如何从本机iOS应用程序控制嵌入式Unity应用程序

来自分类Dev

将Cookie读取到具有嵌入式javascript的Shiny应用程序

来自分类Dev

如何将应用程序限制为仅Android手机

来自分类Dev

如何将Android应用程序限制为仅平板电脑?

来自分类Dev

C ++应用程序中的嵌入式pdfium

来自分类Dev

Java Web应用程序中的嵌入式Derby

来自分类Dev

远程执行Qt嵌入式应用程序

来自分类Dev

“拆分”嵌入式系统上的应用程序

来自分类Dev

有关更改应用程序以支持多个数据库后端的建议

来自分类Dev

有关简单部署ASP.NET应用程序的建议

来自分类Dev

有关应用程序体系结构的提示或建议

来自分类Dev

有关为OpenSUSE / KDE重命名GUI应用程序的建议

来自分类Dev

在具有嵌入式JRE的Mac OS中创建Windows应用程序安装程序

来自分类Dev

具有单个应用程序的TomEE嵌入式/捆绑式

来自分类Dev

将android应用程序限制为特定区域

来自分类Dev

仅将API URL限制为Android应用程序

来自分类Dev

提交时将应用程序限制为仅iPhone

来自分类Dev

将android应用程序限制为特定区域

来自分类Dev

App Store上是否允许带有嵌入式Dylib的iOS 8应用程序?

来自分类Dev

具有单页应用程序的嵌入式码头

来自分类Dev

更改有关游戏内应用程序的内容

Related 相关文章

  1. 1

    有关如何将旧式嵌入式应用程序限制为实时应用程序的建议

  2. 2

    如何将应用程序限制为特定设备?

  3. 3

    具有独立应用程序的嵌入式Linux

  4. 4

    具有独立应用程序的嵌入式Linux

  5. 5

    春季启动嵌入式Tomcat“应用程序/ json”发布请求限制为10KB

  6. 6

    如何测试嵌入式Deezer应用程序?

  7. 7

    如何测试嵌入式红宝石应用程序?

  8. 8

    如何将node.js和节点应用程序部署到嵌入式目标?

  9. 9

    如何从本机iOS应用程序控制嵌入式Unity应用程序

  10. 10

    将Cookie读取到具有嵌入式javascript的Shiny应用程序

  11. 11

    如何将应用程序限制为仅Android手机

  12. 12

    如何将Android应用程序限制为仅平板电脑?

  13. 13

    C ++应用程序中的嵌入式pdfium

  14. 14

    Java Web应用程序中的嵌入式Derby

  15. 15

    远程执行Qt嵌入式应用程序

  16. 16

    “拆分”嵌入式系统上的应用程序

  17. 17

    有关更改应用程序以支持多个数据库后端的建议

  18. 18

    有关简单部署ASP.NET应用程序的建议

  19. 19

    有关应用程序体系结构的提示或建议

  20. 20

    有关为OpenSUSE / KDE重命名GUI应用程序的建议

  21. 21

    在具有嵌入式JRE的Mac OS中创建Windows应用程序安装程序

  22. 22

    具有单个应用程序的TomEE嵌入式/捆绑式

  23. 23

    将android应用程序限制为特定区域

  24. 24

    仅将API URL限制为Android应用程序

  25. 25

    提交时将应用程序限制为仅iPhone

  26. 26

    将android应用程序限制为特定区域

  27. 27

    App Store上是否允许带有嵌入式Dylib的iOS 8应用程序?

  28. 28

    具有单页应用程序的嵌入式码头

  29. 29

    更改有关游戏内应用程序的内容

热门标签

归档