首页
学习
活动
专区
圈层
工具
发布

与rtos
EN

Stack Overflow用户
提问于 2016-04-10 17:22:05
回答 2查看 211关注 0票数 0

在研究嵌入式系统时,我发现了用于Linux的libmraa库。但我不能确定这是适合我的工具。

我想要做的是实现一个包含步进电机、加热器和风扇等的嵌入式系统。如果我能用Linux来实现它会很好,但我认为这是不切实际和不可能的。

libmraa是否提供调度保证以确保确定性行为和及时响应事件和中断?因为我总是确保步行者不受干扰地工作。

libmraa只是一个爱好者的工具,还是一个真正的嵌入式系统的好工具?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2016-04-11 07:36:12

警告:我对mraa__没有经验。我所做的,除了看它是什么,是克隆回购和grep的来源'sched',‘很好’等。

我发现的唯一一件事是这个mraa_set_priority() API:

https://github.com/intel-iot-devkit/mraa/blob/master/api/mraa/common.h#L153

请注意,它是针对SCHED_RR的,但对于更具侵略性和确定性的SCHED_FIFO,以及现代精化SCHED_DEADLINE,都没有API。

所以:

libmraa是否提供调度保证,以确保确定的行为和及时的响应事件和中断?

No (相对较小的SCHED_RR API除外)。

和它这样做是正确的,因为"Libmraa是一个C/C++库.在伽利略、爱迪生和其他平台上与IO接口“,而调度策略与此无关:调度策略是一种应用程序特定和/或系统集成的设计决策和设置(考虑到其他进程)。在大多数情况下(存在一些例外)不是明智的选择--在不考虑其他运行过程的情况下,将一个特定的方案编码到一个应用程序中,也不考虑内核内内置的或不包含的策略机制(内核配置选择)。

它的工作是:

  • 测试系统(内核+应用程序+其他进程),
  • 利用标准工具(或他们通过构建或运行时配置选项在应用程序中使用的API )和/或配置内核,使新的sched选项可用,
  • 再次基准,冲洗,重复。

这方面的标准工具是:

  • 好的
  • chrt
  • 任务集

...and是他们使用的标准API,例如sched_set/getaffinity、sched_set/get调度器等(查看套餐中的shchedutils/源dir )。

至于内核调度选项,请查看scheduler/子for中的scheduler/。您还可以查看CPU cgroup控制器、cgroup-v2.txtcgroup-v1/子your,这取决于您的内核版本。

我为使用这些替代方案的嵌入式产品做了一些基准测试,最后决定使用CPU cgroup控制器的CPU共享,因为对于我的情况而言,它们是“最聪明的、自适应的”和灵活的负载平衡机制(实时和非实时的混合,但对于产品功能和低prio任务(如日志记录)很重要)。我没有考虑/测试cgroups,对双核嵌入式系统没有多大意义,也没有考虑到期限/配额设置。

当然,我们可以使用上述技术的组合。

libmraa只是一个爱好者的工具,还是一个真正的嵌入式系统的好工具?

再说一次,没有经验。不过,英特尔的一些开源经验(来自他们的e10000以太网驱动程序),对我来说,英特尔是认真的,不会抛弃一些资源,然后忘记它。即使对于一个非常“原型”项目的人来说。对于mraa,查看github,有最小的wiki,一个问题跟踪显示一些问题确实是固定的。

因此,我倾向于相信它是“一个真正的嵌入式系统”。然而,社区规模可能很小,这是一个不容忽视的因素。

PS:

最重要的是:benchmark,benchmark,benchmark……

编辑:

至于“真正的RTOS”和Linux:

我对此也有一些经验,虽然是的,从技术上讲,这将是你所描述的应用程序的合理选择,但只有当你有时间(=金钱)和/或错过最后期限时,才可能导致灾难性事件,例如伤害/杀害某人或摧毁某些东西(包括你自己的硬件,比如无人机坠落),或者完全没有完成它的任务--至关重要的任务。想想国防,航空航天,卫生/医疗设备。

Linux的开发周期(代码-> build -> flash/install ->调试、重复)与Linux的实时操作系统相比将会更快(你可以在你的PC上建立很多东西,而不需要任何硬件),libs/应用程序的生态系统将更加丰富,社区将更加广泛,所需的专门技术培训也会更少,每件事所需的文档数量会更多,这意味着更快的上市时间和丰富的功能。

如果考虑到“没有灾难性事件”的情况,那么使用真正的嵌入式RT更多的是BOM (物料清单:较少的flash/RAM/CPU能力),或者是有关产品可靠性的法律责任。

正如@LPs的回答所指出的那样,Linux的硬实时是可能的(不一定是在用户的土地上)。

票数 2
EN

Stack Overflow用户

发布于 2016-04-11 06:07:00

lib不能授予实时行为。这是一个核心问题。

您应该使用实时Linux内核:例如RTI抢占RT贴片

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/36532990

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档