外围驱动程序与RTOS连接

问题描述 投票:0回答:3

对于我的一个项目,控制器选择是STM32L1系列。 ST提供USB,I2C,SPI等驱动程序。因此,在对RTOS做出决定时,需要考虑驱动程序。或者在决定RTOS之后的另一种方式,是否有任何标准方法将微控制器的外围驱动器与RTOS连接?

driver stm32 rtos
3个回答
1
投票

不,微控制器外设驱动程序和RTOS通常是独立的,因此不需要考虑兼容性。微控制器外设驱动程序是不依赖于任何RTOS服务的基本驱动程序。实际上,可以在没有任何RTOS的情况下使用外设库。 RTOS通常不依赖于定时器之外的任何微控制器外设。即使是定时器的设置也不是RTOS内置的。在启动RTOS之前,通常由用户代码设置定时器。

如果我没有说服你,你仍然想要一些兼容性的保证,那么探索CMSIS


1
投票

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

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


1
投票

外设驱动程序与RTOS的接口没有标准的定义方式,因为它取决于RTOS。但是,常见的方法是利用RTOS提供的阻塞互斥锁或信号量。阻塞互斥锁意味着如果互斥锁不可用,任务将等待它空闲并且在此之前不使用任何CPU时间。

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

一般情况是,您有一个等待互斥锁的任务。大多数情况下它不占用任何CPU时间。当外围驱动程序被中断调用时,驱动程序会从硬件中获取数据,并释放互斥锁,以便等待任务将被唤醒。可以使用全局变量或其他RTOS定义的机制在外围驱动程序和任务之间传递实际数据。可以使用信号量来完成类似的机制。

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

© www.soinside.com 2019 - 2024. All rights reserved.