集成XCP 软件功能包对MCU flash与ram资源的需求

XCP包编译集成后主要包含3个部分:

1.  .c .h -->二进制汇编指令组成 code+read only 常量,比如 Xcp_DaqEvent.c等所有代码, 这块总共会占用Pflash大约10KB+;

2. .c .h 全局变量的空间声明 ,这块会占用IRAM,主要是daqram_u32这个全局变量 用于存放xcp 测量数据的目标指针,根据RAM大小,一般10KB;现在有些SOC 异构芯片,可使用外部DDR,可扩展的空间就比较大了,但访问性能可能会受影响。

3. 用于在线标定功能的资源,这块是XCP 核心功能,也是资源占用大头,它主要是会增加对RAM空间占用,不同芯片可分配资源是有差异的,虽然它不是XCP包的资源,但是它属于增加XCP功能的资源占用,故在芯片选型时需特别注意,根据项目需要提前考虑。

        标定的方案可能有很多种,针对不同的芯片,芯片有overlayram 重定向flash;有点有mmu 重映射;有得直接用内部空余ram映射,还有运用外部扩展ram 比如ETK;有的代码是加载到sram 或者ddr的,直接利用加载后的地址。

        但针对MCU 控制器,主要的还是利用芯片有overlayram 重定向flash;有的有mmu 重映射;有得直接芯片内部用空余ram映射。

       但是不论何种方式,本质上都要是要把一块flash空间映射到额外的等大ram上,所以根据自己一次期望能标定多少参数,提前估算额外ram资源,比如想workspace 一次变化100个Byte 大小的参数,最小就需要100byte的Ram,这个只是理想的情况,还有考虑pointer table 等。

        尤其使用直接用空余ram映射,需要合理运用标定方法论,来高效和动态分配RAM。

 下面扩展概括下,标定主流思想是:把需要标定参数放到固定flash地址上,因为flash无法在线实时修改,故需要提供一块ram空间,用来映射这些flash上标定参数;这样对于一个参数,物理上就有两个空间flash/ram地址上存放其值;而在线标定工具,可通过命令改变其RAM空间上的值;当运行在referencespace 时,就是让variable 地址指向flash地址,运行在workspace时,就让variable地址指向ram地址。

         下面首先介绍下如果要想把一个参数变成可以标定参数常规的流程方式:

        在项目link配置文件中,在Program flash 中选择一个段来定义,比如名字叫 CaliFlash_section ,地址范围 0x8200000~0x83FFFFF,后面专门用于放置想用来标定参数值;

        在代码中 把想标定的参数量用const or const volatile来声明限定,并通过memorymap 把它放到CaliFlash_segment;

        # pragma section CaliFlash_section

        const volatile uint32 parameter_x = 1111;  这里的const 是设定parameter_x 只读属性,在编译时如有对它修改就会报错;volatile 告诉编译器不要对parameter_x 进行优化,在编译时,要分配具体的地址空间,不要把直接缓存或者寄存器中,重复读写;每次读取它时,要从具体地址空间上读,因为这个变量可能时刻发生变化。

        这样做完后,编译出来的map文件中就会出现:

        0x8200000:parameter_x  4Bytes

        生成A2L:

//PARAMENTER begin        

paramter_x

        0x8200000

        dworld

//PARAMENTER end

ECU 端,在startup 阶段,根据配置,分配对应的RAM 比如0X0050000 空间映射paramter_x 。

后续有空再完善

   

  • 3
    点赞
  • 28
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值