RTA-OS Port Guide学习(二)-基于S32K324 OS

前言

上一篇OS Port中介绍了特殊配置,本文接着介绍OS Port中API的使用

Port-Specific API

下面介绍特殊的api,作为Reference Guide的补充,当Reference Guide与本文档定义相同的API时,以本文档为准

API Calls

Os_AwaitStartup

控制Core启动
函数原型:

FUNC(void , OS_CODE ) Os_AwaitStartup (void)

在多核AUTOSAR应用中,主核需要控制从核的启动行为。理想情况下,从核心应该保持reset,直到Os_Cbk_StartCore被调用释放它们。

有时这不能强制执行(例如,调试器可能不支持此操作)。

出于这个原因,OS提供了Os_AwaitStartup() API,它应该放在’ main '的开头

如果从核过早释放,这个API将导致它等待,直到它的Os_Cbk_StartCore被调用。

正常情况下,宏OS_MAIN隐藏了对Os_AwaitStartup的调用。如果你选择不使用OS_MAIN,那么你应该显式地调用Os_AwaitStartup,如果从核不能在reset中保持。

OS_MAIN的宏定义如下:

#define OS_MAIN() extern void inner_main(void); extern Os_ghs_int main(void); Os_ghs_int main(void) { Os_AwaitStartup( ); inner_main( ); for (;;) { } } void inner_main(void)

其中调用了Os_AwaitStartup,主要就是while等待Os_Cbk_StartCore函数调用,在Os_Cbk_StartCore会将Os_StartBlock[0]置为OS_START_CORE_KEY,此时Os_AwaitStartup会跳出循环

Os_InitializeVectorTable

初始化中断向量表
函数原型:

void Os_InitializeVectorTable (void)

Os_InitializeVectorTable()根据项目配置初始化NVIC、SCB和Core CONTROL Register。它将清除任何错误或活动异常,设置所需的堆栈对齐和异常条目,设置系统处理程序,并确保处理器处于线程模式,并且正在使用的堆栈是主堆栈。如果RTA-OS被配置为生成向量表,它还将VTOR寄存器设置为os生成的向量表的地址,该向量表包含所有适当的CPU异常和中断的条目。它启用第一类isr,但在调用StartOS()之后才禁用第二类isr。

Os_InitializeVectorTable()应该在StartOS()之前调用。即使“抑制向量表生成”设置为TRUE,也应该调用它。

该函数在EcuM_AL_DriverInitOne中调用,两个核都需要调用,对中断向量初始化

Callbacks

Os_Cbk_GetAbortStack

回调函数提供堆栈的起始地址,以用于某些异常条件。

函数原型:

FUNC(void *, OS_APPL_CODE ) Os_Cbk_GetAbortStack (void)

返回值是void *类型

不受信任的代码可能行为不当并导致保护异常。当发生这种情况时,AUTOSAR要求调用ProtectionHook,并且必须终止任务、ISR或OS应用程序。

发生故障时,栈指针可能是无效的。出于这个原因,如果配置了“Enable untrusted stack check(DistrustStacks)”,RTA-OS将调用Os_Cbk_GetAbortStack来获取在执行此处理时应该用于堆栈的内存安全区域的地址。

目前该函数未使用

Os_Cbk_GetSetProtection

回调函数用于控制内存保护系统的激活

函数原型:

FUNC(boolean , { memclass }) Os_Cbk_GetSetProtection (
boolean enable
)

函数返回值为bool类型
这个回调用在TrustedApplicationWithProtection为true的OS Application的配置中。它必须返回被调用时MPU硬件的状态(如果启用则为TRUE,否则为FALSE)。然后,它必须根据传入的“enable”值启用或禁用内存保护。用于在Trusted和TrustedApplicationWithProtection模式之间切换。它仅在系统处于Trusted或TrustedApplicationWithProtection模式时被调用。

目前Application未配置TrustedApplicationWithProtection,所以该函数未使用

Os_Cbk_SetMemoryAccess

回调函数,用于准备内存保护系统,以便从受信任代码切换到受访问限制的代码(不受信任或带保护的受信任代码)。
函数原型:

FUNC(void , { memclass }) Os_Cbk_SetMemoryAccess (
Os_UntrustedContextRefType ApplicationContext
)

目前未使用该函数

Os_Cbk_StartCore

用于在多核系统中启动非主核

函数原型:

FUNC(StatusType , { memclass }) Os_Cbk_StartCore (
uint16 CoreID
)

返回值类型为StatusType,E_OK说明没有error,E_OS_ID说明core不存在或无法启动。

Os_Cbk_StartCore不会被调用内核0,因为内核0必须先启动。Os_Cbk_StartCore被StartCore调用。

Macros

CAT1_ISR

为1类中断提供函数接口

Os_Clear_x

宏Os_Clear_x()可用于清除指定NVIC中断的中断挂起位。中断可以使用NVIC通道号或RTA-OS配置的矢量名来识别。该宏只有在包含文件Os_ConfigInterrupts.h时才可用。不受信任的代码不能使用该宏。您必须只在多核配置中拥有中断的核心上使用它

Os_DisableAllConfiguredInterrupts

Os_DisableAllConfiguredInterrupts()用于禁用所有已配置的NVIC中断。该宏只有在包含文件Os_ConfigInterrupts.h时才可用。不受信任的代码不能使用该宏。这个宏不是原子的。您应该在多核配置中使用Os_EnableAllConfiguredInterrupts_CPUx。

多核系统中不会生成该宏定义

Os_DisableAllConfiguredInterrupts_CPUx

用来禁用核的配置的中断。

Os_EnableAllConfiguredInterrupts

多核系统中不会生成该宏定义

Os_EnableAllConfiguredInterrupts_CPUx

用来启用核的配置的中断。

Os_Enable_x

宏Os_Enable_x()可用于启用指定的NVIC中断。中断可以使用NVIC通道号或RTAOS配置的矢量名来识别。该宏只有在包含文件Os_ConfigInterrupts.h时才可用。不受信任的代码不能使用该宏。您必须只在多核配置中拥有中断的核心上使用它。

生成的代码示例如下:
在这里插入图片描述

Os_IntChannel_x

宏Os_IntChannel_x可以用来获取一个命名的NVIC中断的中断通道号。通道号是进入NVIC硬件的索引,所以它比关联的IntID小16。Os_IntChannel_x宏只有在包含文件os_configinterrupted .h时才可用。

生成的代码示例如下:
在这里插入图片描述

Os_IntID_x

宏Os_IntID_x可用于获取指定中断的CPU INTID值。

它可用于CPU和NVIC中断。Os_IntID_x宏只有在包含文件os_configinterrupted .h时才可用。

生成的代码示例如下:
在这里插入图片描述

Type Definitions

Os_StackSizeType

一个无符号值uint32,表示以字节为单位的堆栈量

Os_StackValueType

uint32,表示堆栈指针(主堆栈)位置的无符号值。

Toolchain

编译器及支持的版本,需要对应的版本才能编译生成lib

编译选项

-cpu=cortexm7:为M7内核生成代码

-align8:8字节数据对齐,需要符合ARM过程调用标准

-Osize:编译优化,size可以尽可能小的内存占用

-fsingle:单精度使用硬件FPU,双精度使用软件FPU(数值由目标选项设置)

应用程序代码的必选选项

没有必须的,-Osize可以不选

应用程序代码的禁用选项

在使用lib的情况下,下列选项不能配置

-bigendian Generate big-endian code
-std=x Other C standard code apart from C99
--short_enum Store enumerations in smallest possible type
-align4 Align all data objects to an 4 byte boundary
-align16 Align the stack to an 16 byte boundary
-align32 Align the stack to an 32 byte boundary
- Any other options that conflict with kernel options

short_enum如果app代码和os不一致的话,可能导致访问的数据错位。

Assembler汇编选项

没有需要注意的

Librarian生成

使用ax.exe

Linker链接

使用elxr.exe

链接选项

-entry=Reset_Handler 指定程序入口
-delete Remove unused and unreferenced functions. 删除未使用和未引用的函数
-data_delete Remove unused and unreferenced data. 删除未使用和未引用的变量
-no_discard_zero_initializers 将初始化为0的变量放到data段
-map 生成map文件
-mapfile_type=2 显示详细map

总结

OS编译配置选项也很关键,在使用OS Lib进行软件集成时,需要特别关注。

### 回答1: ETAS-OS (RTA-OS)是一款实时操作系统,主要用于汽车和嵌入式系统的开发。下面是关于ETAS-OS (RTA-OS)用户手册的简要介绍。 ETAS-OS (RTA-OS)用户手册提供了详细的操作指南和技术说明,帮助开发人员使用和配置ETAS-OS (RTA-OS)操作系统。该手册包含了各种重要的信息和功能,让用户更好地理解和运用这款操作系统。 首先,用户手册介绍了ETAS-OS (RTA-OS)的基本概念和架构。它解释了操作系统的组织结构,包括任务、中断、调度器等核心概念。此外,手册还描述了操作系统的各种组件和模块如何协同工作,以提供实时性和可靠性。 接下来,用户手册详细说明了ETAS-OS (RTA-OS)操作系统的安装和配置方法。它指导用户如何将操作系统集成到开发环境中,并介绍了各种配置选项和设置。用户可以根据自己的需求和项目要求,进行灵活的配置和调整。 此外,用户手册还提供了完整的API参考,包括操作系统的各种函数和接口。用户可以通过阅读用户手册,了解每个函数和接口的功能和使用方法,以便在开发过程中正确地调用和应用它们。 最后,用户手册还包含了一些实际案例和示例代码,以帮助用户更好地理解和应用ETAS-OS (RTA-OS)。这些案例和示例代码涵盖了各种应用场景和功能,具有很高的实用性和参考价值。 总之,ETAS-OS (RTA-OS)用户手册是使用和配置ETAS-OS (RTA-OS)操作系统的重要参考资料。它提供了全面且详细的信息,帮助开发人员顺利地开发和调试嵌入式系统,并提高系统的实时性和可靠性。 ### 回答2: ETAS-OS (RTA-OS) 是一款嵌入式实时操作系统,被广泛应用于汽车电子系统的开发中。该操作系统具有高性能、高实时性和可扩展性的特点,能够有效地支持多任务处理和实时任务调度。 ETAS-OS (RTA-OS) 提供了丰富的功能模块和API,用于实现各种功能,如任务管理、中断处理、时钟管理、资源管理等。它采用优化的内核设计和高效的任务调度算法,能够满足复杂的实时需求。此外,ETAS-OS (RTA-OS) 还提供了丰富的驱动程序和硬件接口,方便开发者与外部设备进行通信和控制。 用户能够通过详细的用户手册来了解ETAS-OS (RTA-OS) 的使用方法和原理。用户手册中包含了操作系统的安装、配置和编程的详细步骤,以及各种功能模块和API的详细说明和示例代码。用户可以根据手册中的指导进行开发和调试工作,并能够深入了解操作系统的工作原理和内部机制。 除了用户手册之外,ETAS-OS (RTA-OS) 还提供了丰富的开发工具和支持,包括调试器、性能分析器和仿真环境等。这些工具能够帮助开发者进行调试和优化,并提高开发效率和系统可靠性。 总之,ETAS-OS (RTA-OS) 是一款功能强大的嵌入式实时操作系统,具有高性能和可扩展性的特点。用户可以通过详细的用户手册和丰富的开发工具来学习和使用该操作系统,实现复杂的实时系统开发。 ### 回答3: ETAS-OS(也称为RTA-OS)是一款用于汽车电子系统开发的实时操作系统。它被设计用于提供高效稳定的运行环境,以满足汽车行业对可靠性和性能的高要求。 ETAS-OS用户手册是一本详细说明和指导用户如何使用ETAS-OS操作系统的书籍。该手册的主要目的是帮助用户了解ETAS-OS的功能、特性和使用方法,以便在汽车电子系统开发中正确地使用该操作系统。 用户手册首先会介绍ETAS-OS的基本概念和架构,包括实时调度器、任务管理、中断处理和通信机制等。用户可以通过阅读手册来了解系统的工作原理和内部机制,从而更好地理解和使用ETAS-OS。 手册还提供了一系列操作指南和示例,以帮助用户进行系统配置、任务调度、中断处理和通信编程等操作。用户可以根据手册中的步骤和示例来正确地配置和编程ETAS-OS,以满足具体的应用需求。 此外,用户手册还涵盖了一些高级主题,如性能优化、调试和错误处理等。这些主题可以帮助用户进一步了解ETAS-OS的使用技巧和最佳实践,以提高系统的性能和稳定性。 总之,ETAS-OS用户手册是一本帮助用户正确使用ETAS-OS操作系统的重要参考书。通过阅读手册,用户可以深入了解该操作系统的功能和特性,掌握系统的配置和编程技巧,以提高汽车电子系统的开发效率和质量。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

赞哥哥s

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值