目录
- 关键词
- 平台说明
- 一、C/S port interface 定义
- 1.1在Davinci developer中的创建
- 二、同步调用和异步调用
- 2.1 同步
- 2.1.1同步code
- 2.1.2同步处理时序图
- 2.2 异步
- 2.2.1异步code
- 2.2.2异步处理时序图
- 2.2.2.1 poling
- 2.2.2.2 waiting
- 2.2.2.3none
- 三、server端的mapping到task详解
关键词
嵌入式、C语言、autosar、Rte
平台说明
项目 | Value |
---|---|
OS | autosar OS |
autosar厂商 | vector |
芯片厂商 | TI |
编程语言 | C,C++ |
编译器 | HighTec (GCC) |
一、C/S port interface 定义
C = client,S = server,通俗可以这样理解
client:这是一个客户,客户需要其他人(component)提供一个服务。
server:这就是一个服务员,客户吼一声(触发调用)需要什么服务(输入参数)服务员就得立马跑过来进行服务(处理任务)并在服务后询问客户是否满意(返回值)。
1.1在Davinci developer中的创建
在这里CtAp_Demo_Core1作为client,CpApSWC1作为server。该interface中创建一个option为OpenDoor()带一个输入参数和一个输出参数。
二、同步调用和异步调用
如图所示我们可以在client调用的时候选择同步还是异步。区别如下:
通俗来讲举个例,客人让服务员帮忙烤肉
**同步:**客人让服务员过来帮忙烤肉(client调用server),客人什么也不干(client wait),等着服务员把肉烤好了(返回状态或者值)再吃烤肉。
**异步:**客人让服务员过来帮忙烤肉(client调用server),客人可以先吃其他菜,预估着服务员应该把肉烤已经好了问一下服务员是否能吃了?(client 调用 server获取结果)再吃烤肉。
2.1 同步
可以理解为:
①去调用了另一个函数,等待这个函数运行完后返回。
②在超时前返回状态(值)。
③返回状态错误或者超时则丢弃该结果。
2.1.1同步code
2.1.2同步处理时序图
2.2 异步
①异步调用有两个步骤,第一个是调用Rte_Call_AcsSWC1_OpenDoor()执行代码,第二个是调用
Rte_Result_AcsSWC1_OpenDoor()获取结果。
②获取结果方式有三种:
1.poling:轮询直到服务执行完获取结果,和同步调用差不多。
2.waiting:超时后获取结果。
3.none:服务执行完成后触发获取结果。
2.2.1异步code
2.2.2异步处理时序图
2.2.2.1 poling
2.2.2.2 waiting
2.2.2.3none
三、server端的mapping到task详解
见链接: CS interface server runnable mapping第二节。