我正在做一个关于将Autosar OS移植到微控制器的学院项目。在阅读有关Autosar,Arctic Core和Arctic Studio的论文和信息后,我有一些问题:
答案 0 :(得分:2)
阅读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();