首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >外设驱动程序与实时操作系统的接口

外设驱动程序与实时操作系统的接口
EN

Stack Overflow用户
提问于 2015-03-27 04:49:59
回答 3查看 712关注 0票数 0

对于我的一个项目,控制器的选择是STM32L1系列。ST为USB、I2C、SPI等提供驱动程序,所以在对实时操作系统进行决策时,需要考虑的是驱动程序。或者,在决定了RTOS之后,是否有任何标准的方式将微控制器的外围驱动程序与RTOS接口?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2015-03-27 12:33:52

不,微控制器外围驱动程序和RTOS通常是独立的,所以不需要考虑兼容性。微控制器外围驱动程序是不依赖于任何RTOS服务的基本驱动程序。事实上,外设库无需任何RTOS即可使用。而RTOS通常不依赖除定时器以外的任何微控制器外围设备。甚至定时器的设置也没有内置到RTOS中。在启动RTOS之前,定时器通常由用户代码设置。

如果我还没有说服您,而且您仍然需要一些兼容性保证,那么就探索CMSIS

票数 1
EN

Stack Overflow用户

发布于 2015-03-27 20:50:36

虽然ST的低级驱动程序没有RTOS依赖关系或需求,但您可以围绕这些驱动程序构建一个更高级别的驱动程序体系结构,例如使用RTOS机制来支持互斥、缓冲和管理处理程序优先级。

例如,您可以通过设备管理器线程或通过互斥来管理对设备的多线程访问。

票数 1
EN

Stack Overflow用户

发布于 2019-04-29 19:15:12

没有标准定义的方法来将外围驱动程序与RTOS接口,因为它依赖于RTOS。然而,一种常见的方法是利用RTOS提供的阻塞互斥或信号量。阻塞互斥意味着如果互斥不可用,任务将等到空闲时再使用任何CPU时间。

通常在运行RTOS时,您希望外围驱动程序使用中断尽可能快地获取输入数据,然后将数据传递给RTOS任务,RTOS任务需要花费时间处理数据。这是管理外围中断和RTOS多任务处理的一种很好的干净方法。

一般情况下,您有一个等待互斥的任务。大多数情况下,它不需要任何CPU时间。当外围驱动程序被中断调用时,驱动程序从硬件上获取数据,并释放互斥对象,这样等待的任务就会苏醒。实际数据可以使用全局变量或其他RTOS定义机制在外围驱动程序和任务之间传递。使用信号量也可以实现类似的机制。

ST提供的外围驱动程序(无论是StdPeripheralLib、HAL还是LL)可以在此模型中运行。因此,在决定使用哪种RTOS时,应该考虑使用支持此模型的API的RTOS。

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

https://stackoverflow.com/questions/29293518

复制
相关文章

相似问题

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