Embedded 为什么';MPC5554板是否需要RTOS?它有内置的操作系统吗?
我在看MPC5554板的参考手册,没有提到使用的任何操作系统(内核)。应用程序可以在不使用该板上任何外部操作系统的情况下运行 我知道RTOS具有内存管理、任务调度功能,那么这些功能是由MPC5554内置固件完成的吗 这些板有RTO供应商,所以我想知道在什么应用程序中需要它们 RTOS仅仅是董事会级实现之上的另一种抽象吗Embedded 为什么';MPC5554板是否需要RTOS?它有内置的操作系统吗?,embedded,real-time,rtos,Embedded,Real Time,Rtos,我在看MPC5554板的参考手册,没有提到使用的任何操作系统(内核)。应用程序可以在不使用该板上任何外部操作系统的情况下运行 我知道RTOS具有内存管理、任务调度功能,那么这些功能是由MPC5554内置固件完成的吗 这些板有RTO供应商,所以我想知道在什么应用程序中需要它们 RTOS仅仅是董事会级实现之上的另一种抽象吗 如果我们将RTOS放在上面,这会不会与内置操作系统发生冲突?没有内置操作系统-你为什么会这样认为 许多嵌入式应用程序在没有操作系统(RTO或其他)的情况下运行裸机,但无论如何,R
如果我们将RTOS放在上面,这会不会与内置操作系统发生冲突?没有内置操作系统-你为什么会这样认为 许多嵌入式应用程序在没有操作系统(RTO或其他)的情况下运行裸机,但无论如何,RTO的选择是开发人员的决定,而不是电路板制造商的决定 RTOS从根本上提供调度、同步、进程间通信和定时服务。可以为具有MMU的设备提供内存管理,但这不是给定的。裸机应用程序可以建立一个C运行时环境并引导到
main()
,而无需调度或IPC等。在大多数简单的RTO中,系统引导到main()
,在那里RTO被初始化和启动,而不是像GPO中那样由操作系统启动`main()
电路板制造商可为一个或多个特定RTO提供电路板支持包,但同样,BSP(或HAL或驱动程序库)可仅由裸机或独立于RTO的设备驱动程序组成。通常由开发人员集成RTOS、设备驱动程序和中间件(如文件系统和网络)等,这些可能来自单个或多个供应商。您必须了解,许多(或可能大多数)开发人员将围绕sich a微控制器设计自己的主板,而不是使用COTS硬件,因此不可能有一刀切的解决方案,相反,嵌入式开发往往是一种更具组件性的方法。没有内置操作系统-您为什么会这样认为 许多嵌入式应用程序在没有操作系统(RTO或其他)的情况下运行裸机,但无论如何,RTO的选择是开发人员的决定,而不是电路板制造商的决定 RTOS从根本上提供调度、同步、进程间通信和定时服务。可以为具有MMU的设备提供内存管理,但这不是给定的。裸机应用程序可以建立一个C运行时环境并引导到
main()
,而无需调度或IPC等。在大多数简单的RTO中,系统引导到main()
,在那里RTO被初始化和启动,而不是像GPO中那样由操作系统启动`main()
电路板制造商可为一个或多个特定RTO提供电路板支持包,但同样,BSP(或HAL或驱动程序库)可仅由裸机或独立于RTO的设备驱动程序组成。通常由开发人员集成RTOS、设备驱动程序和中间件(如文件系统和网络)等,这些可能来自单个或多个供应商。您必须了解,许多(或者可能大多数)开发人员将围绕sich a微控制器设计自己的主板,而不是使用COTS硬件,因此不可能有一刀切的解决方案,相反,嵌入式开发往往是一种更具组件性的方法。Clifford已经一针见血了。根据您希望完成的任务的复杂性,您可能需要重新考虑您到底需要什么。如果您对RTOS的唯一兴趣是基于“实时”部分,那么创建自己的中断驱动裸机应用程序可能会更容易(也更便宜)。一般来说,我发现如果性能约束是您主要关心的问题,那么抽象越少越好 根据您提出问题的方式,我假设您正在查看一个评估板或开发工具包,其微处理器为MPC5554,在这种情况下,您可能已经有了一些基本的启动代码,用于设置内存控制器和一些外围设备(大多数开发工具包或IDE都附带了一些可以重用的示例代码) 一个简单的应用程序可能会执行以下操作:
- 初始化运行时环境(MMU、INTC、FMPLL)
- 初始化您希望使用的外围设备,例如ADC、GPIO、SPI等(如果您有任何需要EBI的外部外围设备,这可能会变得非常复杂)
- 初始化EMIO以生成高优先级的定时中断(即主处理任务循环)
void fastTaskISR()
{
static uint8 frameCount = 1;
...
switch(frameCount)
{
case 1:
//Task 1
break;
case 2:
//Task 2
break;
case 3:
//Task 3
break;
case 4:
//Task 4
break;
case 5:
//Task 5
break;
default:
//Default case for robustness. Error.
break;
}
frameCount++;
if(frameCount > 5)
{
frameCount = 1;
}
...
}
或者,您可以使用其中一个计划任务生成软件中断,然后该软件中断可用于运行一些较慢的任务或更复杂的控制逻辑。在我的工作中,这是一个经过验证的公式:eMIOS驱动的“快速任务”(通常在100us和1ms周期之间)+软件中断驱动的“正常任务”它运行高级控制逻辑,通常由Simulink模型生成。不用说,我们对BSP和驱动程序级代码进行了大量重用。Clifford已经一针见血了。根据您希望完成的任务的复杂性,您可能需要重新考虑您到底需要什么。如果您只对RTOS基于“实时”部分,那么它很可能是b