AutoSAR系列讲解(入门篇)3.5-RTE对数据一致性的管理

一、什么是数据一致性

引用百度百科:

数据一致性,就是当多个用户试图同时访问一个数据库,它们的事务同时使用相同的数据时,可能会发生以下四种情况:丢失更新、未确定的相 关性、不一致的分析和幻想读。

说的通俗一点:就是当多个操作同时读写同一个数据的时候,很有可能出bug(实际是由于优先级的问题,可能出现我们的数据被篡改的情况,造成 作者不想看到的数据结果)

二、数据一致性的实现机制

1、利用RTE管理

这部分类容之前说过了,就是利用RTE来管理这里的数据,防止bug出现。比如IRead,大家都操作的是数据的备份,不直接操作原数据

2、SWC内部变量

这个内部变量就比较神奇了,因为它可以直接在DaVinci中配置,runnable可以直接调用,就类似于一个c文件中定义的全局变量,没有被extern出 去。在c文件中定义的函数时可以直接使用的。那么这时就会出问题了,同一个c文件中的函数是可能被放在不同Task上运行的,就可能出现这些函数在同一时刻运行的状况,那么在调用这个全局变量的时候,就可能出bug。那么要如何解决呢?AutoSAR做了以下两种方式:

  • EAs(Exclusive Areas,专用区域):就是下面两句代码,相当于一个关中断,调用变量的语句放在里面,运行时不能有更高级的Task打断被保护的语句
Rte_Enter_name>();

//这里放置被保护的语句

Rte_Exit_name>();
  • IRVs(Inter-runnable variables,跨函数变量):还是两句代码,上面的EAs是整段代码段都被保护了,而这里的两句就相当于在改变变量的时候被保护,也就是这两句 话执行的时候被保护
Rte_IrvWrite_re>_name>()

Rte_IrvRead_re>_name>()

猜你喜欢

转载自blog.csdn.net/qq_42700289/article/details/131404802