将Autosar OS端口连接到MCU

时间:2015-04-09 01:44:05

标签: embedded freertos texas-instruments launchpad autosar

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

  1. 我曾经将FreeRTOS移植到一个微控制器上,它非常简单,我只包含一些FreeRTOS的* .h和* .c文件,然后使用FreeRTOS函数在芯片上构建我的应用程序。我可以和Autosar一样吗?如果可能,我应该将哪些文件包含在我的main.c
  2. 第二个问题,在FreeRTOS中,我只需要使用xcreatetask()函数(这是一个FreeRTOS函数)来设置任务优先级,然后我应用vstarttaskschedule()函数在队列中运行任务但是我看不到这些类型Autosar OS中的功能。有人能告诉我在autosar中哪个功能具有与我所说的功能相同的功能。
  3. 当我编程德州仪器芯片时,总有一个主要功能,包括我们将为芯片构建的主程序。但是,我没有看到北极Core示例中的任何主要功能。芯片如何在没有主要功能的情况下运行程序? 请帮我回答这些问题!

3 个答案:

答案 0 :(得分:2)

  1. 您的启动代码将针对具体目标。
  2. ECUM为ECU内的所有SW模块执行初始化部分。
  3. 请记得从Main.c中调用ECUM
  4. ECUM对BSWM,驱动程序和SW模块进行了初始化。
  5. RTE初始化后 - RTE中有一个部分SchM,用于安排每个模块的主要功能。
  6. BSWMD和SWCD文件通过RTE了解每个SW模块的主要功能。
  7. 阅读RTE SWS,ECUM SWS,SYSTEMTemplate SWS了解更多信息

答案 1 :(得分:1)

3,您无法在ARTIC核心中看到主要功能: AUTOSAR不定义启动代码。你应该自己编写main函数。 AUTOSAR OS中的内核从ECUM模块初始化。如果要引导操作系统,则必须具有ECUM模块。您还应该有BSWM模块来启动计划表。您必须在BSWM中为RTE启动创建规则,它将启动您的计划表。 你必须手动编码启动代码(RAM / Register / etc初始化),从你必须调用main函数,main函数将被手动编码。从main函数调用EcuM_init。这样你的操作系统就会启动。 2,您无法找到设置任务优先级和激活的功能: AUTOSAR不支持动态任务优先级。您必须在cofiguration中设置所有优先级。要运行任务,您可以使用ActivateTask()。在启动时启动任务的一个快速技巧是,为一个任务设置参数OsTaskAutostart。初始化内核后,将调用已设置参数OsTaskAutostart的任务。

答案 2 :(得分:0)

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

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

我自己没有移植过AUTOSAR操作系统,但我建议看看移植版本,架构和文件结构,系统,然后是启动例程,向量表,外围代码等。复杂性可能会降低移植到同一个MCU架构中,比如瑞萨机器或ARM。

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

extern void EcuM_Init(void);


int main( void )
{
    EcuM_Init();
}

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