BSW:MemMap模块配置及使用

前言:

The Memory Mapping (MemMap) module is used to map code and data to specific memory sections via memory
mapping files. MemMap generates specific header files which contain memory mapping preprocessor defined
for MemorySection elements and compiler-specific instructions.

(内存映射(MemMap)模块用于通过内存映射文件将代码和数据映射到特定的内存部分。MemMap生成特定的头文件,其中包含为MemorySection元素和编译器特定指令定义的内存映射预处理器。)

上面是比较官方的回答,说人话就是把数据和代码放在ECU内指定的地址。

初级应用:软件中的bss,data,rodata,code,text段需要在memory layout中划分具体的物理地址,对于多核系统,要将执行的数据和代码放在目标核的RAM和ROM。

高阶应用:出于功能安全的考虑,通常需要对不同作用的模块(Cdd,BSW,MCAL,SWC)制定ASIL等级,不同等级他们对应的内存分区也不一样。QM级别模块是不能访问ASIL级别的模块内容的。更进阶的可以应用MPU,对不同等级的模块做内存保护,防止跨域访问。

配置过程中使用到的工具如下:

Compiler:Tasking

MCU:  Infinenon TCxxx

BSW configuration Tools: EB tresos 28.2.0

RTE configuration Tools: AUTOSAR builder

配置步骤:

1.ld链接文件的修改及定义

TCxxx系列的MCU主要可以使用内存资有Pflash,DSPR,PSPR,DLMU,GLMU,DataFlash,UCB DataFlash,官方推荐的使用如下:

 如果说追求效率,那么最好把对应核运行的数据和代码放在对应核的地址,下图展示不同地址的访问周期。

 对于需要跨核访问的数据,博主是建议放在GLMU,内存分配是个细致活儿,需要根据实际需求设计,下面是一个例子。

设计好memory layout后,下面就要去修改链接文件,我们用的是tasking,所以格式如下:

 

 其他内存的格式定义大致相同,这里不做过多描述。

这种格式是待会儿需要在memmap模块中使用的,目的就是将中间的内容(xxxx)放在固定的地址,具体如何定义可以参考tasking的手册。

#pragma section fardata core0_dspr

xxxx

#pragma section fardata restore

2.SWC中添加MemorySection

创建好的SWC通常需要port,Runable,interface,Implementation等,我们需要在Implementation下添加我们需要的Memory Sections.每一个Memory Sections都需要reference一个Sw Addr method,对于具有LOCAL特性还需要配置option.

3.Memmap模块的配置
3.1.导入Memmap模块

 3.2.导入生成的swc_xxx>arxml

3.3MemMap模块内的配置

这里主要的作用是将Memory Sections和ld中定义的块关联起来。

3.3.1 General

 3.3.2 MemMapAddressingModeSet

MemMapSupportedSectionType这里选择当前Section的类型。

MemMapAddressingMode 这里就是前面提到的需要填充的申明格式,特别要注意的是MemMapAlignmentSelector一定要和reference 的Sw Addr method一致。

 3.3.3 MemMapAllocation

 这里需要将定义好的Addressingmodef分配给不同的sections.可以根据AUTOSAR分层定义多个Allication.

 下图中将SWC中定义section和Addressingmode关联在一起,对于通用的分区,可以在GenericMapping中定义。

 以上配置好,检验配置,不报错就可生成代码,下面是实际生成的代码效果。

 4.在SWC代码添加MemMap宏

 其他section类似,这里要注意的是一定要将内容加载固定格式中间,定义好可以开始编译,编译后在map中检查是否在固定地址。

  • 4
    点赞
  • 24
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值