外围驱动程序与RTOS连接

时间:2015-03-27 04:49:59

标签: driver stm32 rtos

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

3 个答案:

答案 0 :(得分:1)

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

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

答案 1 :(得分:1)

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

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

答案 2 :(得分:1)

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

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

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

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