AutoSAR系列讲解(实践篇)11.7-实验:配置存储


备份工程
备份工程
备份工程

好,接下来开始我们的实验。本次实验主要就是将我们的里程数和开关门的次数保存到我们的NV里面,注意:如果你的界面显示不完整,需要把
windows显示缩放调整为100%

一、配置SWC

首先打开Dev,进入到CtApMySwc这个SWC里面
1. 配置EA,之前讲解数据一致性的时候讲过这个的作用,就是相当于关中断,防止数据在写入的时候出错。这里配置的话,就是防止数据的顺序出
错。比如里程数,我的一个Task正在写入2米,但是另一个更高优先级的Task写入了1米,那么就可能出现里程表上先出现2米,再出现1米的尴尬
情况。这里配置就是将一段RctApMySwcCode里的代码保护起来,Can Enter是指可以自由配置保护哪一段,会生成两个函数(类似开关中断的
两个函数)使得用户能自由使用。还会有No Access 和 Runs In两个选项,对应的是不提供保护和进入函数即开始保护的功能

  • Name:ExArLightOnOffCounter
    • Access Mode:Can Enter
  • Name:ExArOdometer
    • Access Mode:Can Enter

AutoSAR系列讲解(实践篇)11.7-实验:配置存储_第1张图片

 2. 配置IRV,这个相当于配置了SWC内部的全局变量,通过RTE管理。同样也可以生成函数来保护写入和读取该变量,这里用来保存上一次的车门
状态

  • Name:IrvDoorStateOld
    • Data Type:AdtDoorState
    • Init Value Reference:CDoorClosed
    • Access Mode:Read/Write

AutoSAR系列讲解(实践篇)11.7-实验:配置存储_第2张图片

3. 配置CAL,这里配置的是标定参数(这里需要添加一个Adt和参考值,还需要做Data Mapping,操作不再赘述)

AutoSAR系列讲解(实践篇)11.7-实验:配置存储_第3张图片
Name:CalOdometer\
Data Type:AdtOdometer\
Init Value Reference:COdometerDefault
4. 配置PIM,同样也需要新建Adt
Name:PimOdometer\
Data Type:AdtOdometer
Name:PimLightOnOffCounter\
Data Type:AdtLightOnOffCounter
二、创建Service Needs
1. 添加NvM Block Needs
SnNvMPimLightOnOffCounter\
RAM Block: PimLightOnOffCounter
SnNvMPimOdometer\
RAM Block: PimOdometer\
Default value: CalOdometer
其他配置按图中配置即可
2. 添加Port Assignments(这里的Port是指该SWC和NvM之间的Port)
Name:SnNvMPimLightOnOffCounter\
Port Interface:NvMService_AC3_SRBS\
Port Prototype: PpNvMLightOnOffCtApMySwc
Name: SnNvMPimPOdometer\
Port Interface:NvMService_AC3_SRBS_Defs
Port Prototype: PpNvMOdometerCtApMySwc\
Port Interface:NvMNotifyJobFinished
Port Prototype: PpNvMNotifyJobFinishedOdometerCtApMySwc
3. 配置Runnable CtApMySwc ,添加三个接口
添加Port Access(Invoke Operations...)
4. 添加一个Server Runnable,用来处理NotifyJobFinished
Name:PpNvMNotifyJobFinishedOdometerCtApMySwc_JobFinished
5. 然后Dev配置结束,检查后保存并在Cfg中同步
三、配置BSW
1. 同步后如果报了RTE50006、RTE50007和RTE50008错误,右键solving actions即可,然后再点击同步到Dev中。这里是由于创建SWC元素(EA
和IRV等)导致需要在ECUC文件中使用这些对象
2. 添加Memory Mapping,这里将创建一个新的NVRAM Block来承载我们在Dev中的那些Nv设计
可以看到这里将出现新的NVRAM Block,这样就将我们应用层的RAM Block与这里NVRAM Block联系在一起了
3. 如果产生了如下警告或者错误,选择右键Solve all Default Actions即可,主要是将Dev中配置的参数全部同步过来;如果有AR-ECUC02030错误
也是一样右键解决即可
4. 然后点击下面的按钮,系统会自动补全一些配置
5. 最后我们看看Service Mapping是否连接上了
6. 之后还要做一些Task Mapping之类的操作,由于前面有讲,大家按照自己的工程对应配置即可。不过很多的问题,博主还是放到综合实验中去讲
解,这里大家需要掌握的是存储的配置流程以及原理。还是那句话,由于大家的DaVinci版本不同,或者大家购买的组件的区别,我们的操作可
能存在着一些差异,大家尽量理解其原理才能随机应变

你可能感兴趣的:(autosar)