Keil+Simulink生成Xcp标定协议A2L文件

本文详细介绍了如何使用Keil MDK与Simulink配合,针对NXPS32K144 MCU移植XCP协议,并通过S32K144_64_flash_user.sct脚本实现内存分区,以便标定与测量变量管理。重点讲解了如何创建A2L文件,以及如何关联编译器的.map文件。

Keil+Simulink生成Xcp标定协议A2L文件

由于最近要为ECU移植XCP协议,所以记录一下,我使用的MCU为NXP S32K144,IDE选用MDK(官方IDE S32DS无代码联想功能,所以放弃,本来用vscode+ld+make来开发,但是发现还是用keil比较方便,具体方法,可以在S32DS生成外设配置,然后将Generated Code 拷贝到Keil中去,Keil中已自带S32K144官方驱动,但是版本较老,编译出错的地方需要及时修改),Xcp协议可以参考Vector 官方提供的Xcp_Basic SDK
  • 定义一个Keil 链接脚本.sct文件(S32K144_64_flash_user.sct),至于怎么使用,请参阅其他文章,对S32K内存进行分区,该文件决定了链接后的可烧写、调试文件axf或hex中内存分布,以及运行时MCU flash+ram分布,同时还在编译过后的.map文件中提供分区变量具体的内存地址信息,供生成A2L文件使用。
  • 此处目的在于将测量变量(Measurement)和标定变量(Characteristic)分配到单独的内存分区里,便于管理,便于上位机Xcp_Master寻址。这里在S32K P_Flash 两个扇区上分别为 标定 和测量变量分了两个区(对应加载地址LR_Adrr,对应Xcp参考页),以及Ram上分了对应的两个区(对应运行地址ER_Adrr,对应Xcp工作页)
  • m_flash_upload_start 0x00001000 Measurement Flash分区起始地址,0x1000=4096/1024=4KB,S32K一个扇区为4KB,所以为第二个扇区
  • m_flash_upload_size 0x00000800 长度2K
  • m_flash_cali_start 0x00001800 CharacteristicFlash分区,第三扇区
  • m_flash_cali_size 0x00000400
#define m_interrupts_start             0x00000000
#define m_interrupts_size              0x00000400
#define m_flash_config_start           0x00000400
#define m_flash_config_size            0x00000010
#define m_flash_upload_start           0x00001000 //如果使能加解密功能,第一扇区不能保存数据(会被擦除)
#define m_flash_upload_size            0x00000800
<
评论 8
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值