【问题标题】:What is tasks in embedded system?嵌入式系统中的任务是什么?
【发布时间】:2022-01-15 17:45:33
【问题描述】:

我在汽车嵌入式 C 编程领域工作,有人问我项目的操作系统任务系统 (AUTOSAR) 是什么。我正在使用 Astree 工具链进行静态分析。我不必为我的项目创建操作系统配置,因为它是由其他团队生成的。那么我们的嵌入式系统中的任务是什么?它如何处理大型软件中的数千个 C 和 H 文件?是指我们如何构建项目吗? 例如:

void task_OS_10ms_Task(void) {
    Rte_task_Cont_BswStart_10ms();
    FiM_MainFunction();
    DDRC_Proc_ArDebMainFunction_10ms();
    DFES_Proc_Data();
    ComCIL_Adapt_Proc_10ms();
    ComCIL_Co_Proc();
}
void task_OS_1ms_Task(void) {
    Rte_task_Cont_BswStart_1ms();
    Rte_task_Cont_BswEnd_1ms();
} // End of OS_1ms_Task

以上面的例子来说,它的平均6个函数将在10毫秒内执行,还是每个10毫秒内执行(总共60毫秒)?

【问题讨论】:

  • 技术上,10ms 只是函数名的一部分。您必须搜索使用这些函数名称的代码库并检查任务的设置方式。 猜测是第一个函数每 10 毫秒调用一次,第二个函数每毫秒调用一次。
  • Tasks 可能只是进程的另一个名称。
  • 您的任务似乎是一次性的、运行到完成的激活,而不是大多数其他 RTOS(例如 FreeRTOS)中的无限循环。这是特定于汽车的。您可能想在 Google 上搜索“OSEK 基本任务”以了解更多信息。

标签: embedded task rtos autosar automotive


【解决方案1】:

任务是操作系统管理的最小可调度单元。相当于“线程”。

任务是执行(用户)代码并由 操作系统。例如。操作系统在不同的任务(“计划”)之间切换。有2个 任务类型;更多细节参见[15]。 基本任务:不能自行阻塞的任务。这意味着它不能 等待(OS)事件。 扩展任务:可以自行阻塞并等待(OS)事件的任务。 (来源:AUTOSAR_SWS_OS.pdf ver 4.2)

您在任务中拥有的是 BSW 模块的可运行实体或主要处理函数(调度函数)。

您在任务名称中的 10ms 并不意味着该任务将每 10ms 执行一次。周期 10ms 是调度表的一部分,必须在 OS 模块中定义。请记住,AUTOSAR OS 不提供时间保护的截止日期监控。 WD 堆栈可以处理此缺失的功能。

在您的示例中,所有函数必须每 10 毫秒执行一次。但有时我们可以将一个可运行对象(例如 100 毫秒)映射到 10 毫秒的任务,在这种情况下,RTE 将生成事件/计数器,以便能够每 100 毫秒执行一次您的可运行对象。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-10-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-07-10
    相关资源
    最近更新 更多