如何使用脚本完成CRC和填充值的自动完成

文章讲述了如何在恩智浦MPC架构的S32DSIDE中使用Srecord工具制作脚本,以实现对编译结果的CRC校验和自动生成,以及MCUFlash的填充功能。作者提供了详细的步骤和脚本示例,包括手动和自动调用脚本的方法。
摘要由CSDN通过智能技术生成

摘要

      恩智浦的MPC架构的微控制器使用的开发环境IDE是S32DS ,该IDE使用的GNU GCC工具链没有提供对编译结果的CRC校验和自动生成工具,所以需要我们制作一个脚本自动生成和填充,脚本调用Srecord工具执行。

Srecord简介

为了实现对S32DS IDE应用工程编译结果生成的S19文件进行数据填充和CRC校验和自动生成,满足bootloader开发需求,我们借助功能强大的嵌入式MCU Flash编程文件编辑处理工具--Srecord, 制作一个bat的批处理脚本,脚本中调用的命令请参照srecord的文档说明,这里不在赘述。

脚本制作

登录官网http://srecord.sourceforge.net/下载最新版本1.65的srecord工具,解压到电脑的任意目录,解压完如图所示

88fa0d260dc61d8b03d366f6dd7d9c07.png

所有要调用的工具都在bin文件夹下。根据说明文档制作脚本 EPS_Fill_And_CRC_Gen_Command.bat   ,脚本中调用的解压目录如果不相同,请更改为相应目录,本文以我电脑的目录为准,脚本全文如下:

@echo off

REM enter current path

cd /d %~dp0

REM add the srecord utility tools folder to path

set path=  D:\software\srecord-1.65.0-win64\srecord-1.65.0-win64

REM set input file

SET SRC=*.srec

REM set the output file

SET APP=EPS_App_Flash_Fill_Add_CRC.srec

REM set the output file

SET FILL_VAL=0xAA

REM set the MCU app flash start address

SET START_ADDR=0x01000000

REM set the MCU app flash end address

SET END_ADDR=0x010FFFFC

REM set the MCU flash address to store the checksum/CRC result

REM it's usually the end of MCU app Flash end address/the end of APP Flash

SET CRC_ADDR=0x010FFFFC

REM set expected checksum/CRC method

SET CRC_method=CRC32_Big_Endian

REM delete the last copy result if it exit

if exist %APP% del %APP%

REM call srec_cat to execute memory fill and checksum auto-generate and store to specified address

srec_cat %SRC% -fill %FILL_VAL% %START_ADDR% %END_ADDR% -%CRC_method% %CRC_ADDR% -o %APP%

echo All commands have been executed successfuly!

pause

如果只想填充不想计算CRC,则删除掉脚本中的计算CRC行即可。

将制作完成的脚本放入工程的编译目录下,如debug目录下,双击脚本即可完成填充,

如果想自动让IDE调用脚本生成填充值,需要做一些配置,这部分功能还在测试中,目前只支持手动双击调用脚本。如果有的电脑因为权限问题不能正确执行脚本,请将制作的脚本放入srecord的解压bin目录下,将编译的.srec或者s19文件也放入bin目录下,双击脚本即可完成生成填充好的文件,如下图所示

35fc349aa5f23db18c4e7557a93c4fef.png

可以试用hexview或者支持hex文件查阅的软件查看生成填充的文件,可以看到未用的已经全部填充为0xAA,填充值可以自己在脚本中设置。

7d69278ba73d6b1d551cb871662c6170.png

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值