1

我正在做一个关于将 Autosar OS 移植到微控制器的学院项目。在阅读了关于 Autosar、Arctic Core 和 Arctic Studio 的论文和资料后,我有一些问题:

  1. 我曾经将 FreeRTOS 移植到微控制器上,这很容易,我只包含了一些 FreeRTOS 的 *.h 和 *.c 文件,然后使用 FreeRTOS 功能在芯片上构建我的应用程序。我可以像 Autosar 一样做吗?如果可能的话,我应该将哪些文件包含到我的 main.c 中
  2. 第二个问题,在 FreeRTOS 中,我只需要使用 xcreatetask() 函数(这是一个 FreeRTOS 函数)来设置任务优先级,然后我应用 vstarttaskschedule() 函数来运行队列中的任务但是我看不到这些函数Autosar 操作系统。有人能告诉我 autosar 中的哪个函数与我说的函数具有相同的功能吗?
  3. 当我对德州仪器芯片进行编程时,总是有 main 函数,其中包括我们将为芯片构建的主程序。但是,我在 arctic Core 示例中看不到任何主要功能。没有main函数,芯片如何运行程序?请帮我回答这些问题!
4

3 回答 3

3

3、在ARTIC核心看不到main函数:AUTOSAR没有定义启动代码。您应该自己编写 main 函数。AUTOSAR OS 中的内核从 ECUM 模块初始化。如果你想启动你的操作系统,你必须有 ECUM 模块。你也应该有 BSWM 模块来启动时间表。您必须在 BSWM 中为 RTE 启动创建规则,它将启动您的日程表。您必须手动编码启动代码(RAM/寄存器/等初始化),然后您必须调用主函数,主函数将被手动编码。从主函数调用 EcuM_init。这样你的操作系统就会启动。2、无法定位设置任务优先级和激活的功能:AUTOSAR不支持动态任务优先级。您必须在配置中设置所有优先级。要运行任务,您可以使用 ActivateTask()。在启动时启动任务的一个快速技巧是,为一项任务设置参数 OsTaskAutostart。一旦内核初始化,您为其设置参数 OsTaskAutostart 的任务将被调用。

于 2015-04-23T14:29:06.357 回答
2
  1. 您的启动代码将是特定于目标的。
  2. ECUM 为 ECU 内的所有软件模块执行初始化部分。
  3. 记得从你的 Main.c 调用 ECUM
  4. ECUM 对 BSWM、驱动程序和软件模块进行初始化。
  5. 一旦 RTE 被初始化 - RTE 中有一个部分 SchM,它调度每个模块的 Mainfunctions。
  6. RTE 通过 BSWMD 和 SWCD 文件知道每个 SW 模块的主要功能。

阅读 RTE SWS、ECUM SWS、SYSTEMTemplate SWS 了解更多信息

于 2015-07-24T06:40:57.587 回答
0

我猜您的学术项目已经结束,但是将 AUTOSAR 操作系统移植到特定的微控制器并不适合学术项目。

首先,根据您的问题,我无法判断操作系统是 ARCCORE 还是其他。其次,根据我使用 FreeRTOS 的经验,只有有限的知识适用于 AUTOSAR OS,并且创建任务 (2.) 是应用程序级别的,而不是移植。第三,大多数 AUTOSAR OS 依赖于专门的嵌入式编译器,例如 GHS 或 DIAB,它们不是学术界的家。

我自己没有移植过 AUTOSAR OS,但我建议看一下移植版本、架构和文件结构、系统,然后是启动例程、向量表、外围代码等。在移植时可能会降低复杂性相同的 MCU 架构,比如 Renesas 机器或 ARM。

要回答您的问题 3,您不会在 ARCCORE 示例中找到 main() 。main() 位于 os_init.c 中,如下所示:

extern void EcuM_Init(void);


int main( void )
{
    EcuM_Init();
}

然后,EcuM_Init() [EcuM.c] 调用 InitOS();

于 2017-07-13T08:10:00.807 回答