Kernel 内核启动后main()的线程上下文
考虑一个有main()的代码库。在调用内核启动函数之后,我们让操作系统运行 现在,在内核启动函数调用运行后,代码段在哪个线程的上下文中运行Kernel 内核启动后main()的线程上下文,kernel,main,scheduler,rtos,Kernel,Main,Scheduler,Rtos,考虑一个有main()的代码库。在调用内核启动函数之后,我们让操作系统运行 现在,在内核启动函数调用运行后,代码段在哪个线程的上下文中运行 int main() { /* DO SOMETHING */ /* Start scheduler */ osKernelStart(); /* Infinite loop */ while (1) { /* USER CODE */ } } 在给定的代码片段中,“用户代码”的上下文是什么 提前感谢RTOS,
int main()
{
/* DO SOMETHING */
/* Start scheduler */
osKernelStart();
/* Infinite loop */
while (1)
{
/* USER CODE */
}
}
在给定的代码片段中,“用户代码”的上下文是什么
提前感谢RTOS,除非发生错误,否则启动内核或调度程序的函数通常不会返回到main。对于FreeRTOS,除非RAM不足,否则不会返回。对于uC/OS-III,不返回。这只是两个例子 启动内核/调度器将使调度器处于控制状态。然后,调度程序将确定准备运行的最高优先级任务,并允许该任务的上下文运行,直到下一次上下文切换机会。对于嵌入式系统,调度器通常会永远重复此过程(即,直到断电)。因此,RTOS启动函数永远不会返回
main()函数不是任务,它只在RTOS启动之前运行。通常,main()应该在调用RTOS start函数之前创建一个或多个任务。调用RTOS启动函数后,main中的任何代码通常都不会执行,除非启动RTOS时出现错误。对于RTOS,除非发生错误,否则启动内核或调度程序的函数通常不会返回main。对于FreeRTOS,除非RAM不足,否则不会返回。对于uC/OS-III,不返回。这只是两个例子 启动内核/调度器将使调度器处于控制状态。然后,调度程序将确定准备运行的最高优先级任务,并允许该任务的上下文运行,直到下一次上下文切换机会。对于嵌入式系统,调度器通常会永远重复此过程(即,直到断电)。因此,RTOS启动函数永远不会返回
main()函数不是任务,它只在RTOS启动之前运行。通常,main()应该在调用RTOS start函数之前创建一个或多个任务。调用RTOS start函数后,main中的任何代码通常都不会执行,除非启动RTOS时出现错误。根据我对各种RTO的经验,osKernelStart()通常不会返回main()。之后main()中的代码只用于捕获某种错误条件。你问的是某个特定的RTOS吗?我会使用freeRTOS。。在我使用各种RTO的经验中,看到一个演示代码后产生了疑问,osKernelStart()通常不会返回main()。之后main()中的代码只用于捕获某种错误条件。你问的是某个特定的RTOS吗?我会使用freeRTOS。。看到一个演示代码就有疑问了