0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

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

嵌入式程序员 来源:嵌入式程序员 2023-10-21 09:50 次阅读

摘要

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

Srecord简介

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

脚本制作

登录官网下载最新版本1.65的srecord工具,解压到电脑的任意目录

所有要调用的工具都在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:softwaresrecord-1.65.0-win64srecord-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目录下,双击脚本即可完成生成填充好的文件。

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

009c3612-6d8b-11ee-939d-92fbcf53809c.png

审核编辑:汤梓红

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 微控制器
    +关注

    关注

    48

    文章

    6811

    浏览量

    147646
  • 恩智浦
    +关注

    关注

    14

    文章

    5715

    浏览量

    100779
  • crc
    crc
    +关注

    关注

    0

    文章

    191

    浏览量

    29195
  • 脚本
    +关注

    关注

    1

    文章

    372

    浏览量

    14636

原文标题:如何使用脚本完成CRC和填充值的自动完成

文章出处:【微信号:InterruptISR,微信公众号:嵌入式程序员】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    Linux中执行shell脚本的两种方式

    一条的执行很是不大方便,这种太多命令的才能完成的,一般都是编写一个shell脚本来进行操作,而不用一步一步的进行。有些时候在Linux中的很多对应的应用程序目录下有很多.sh结尾的脚本,这些
    发表于 11-18 16:49 1391次阅读
    Linux中执行shell<b class='flag-5'>脚本</b>的两种方式

    怎么使用hal accumulate函数完成crc分块校验与整体校验crc值相等?

    怎么使用hal accumulate函数完成crc分块校验与整体校验crc值相等
    发表于 03-27 07:46

    自动填充功能

    在AD9.0中有没有自动填充功能?小面积的填充,而且要属性是当下的网络属性,如果用FILL只能是矩形,而我要多边形的,怎么做?
    发表于 10-14 22:29

    在网页充值后自助设备如何给卡写入值

    特有网页上进行充值支付的操作,支付成功后服务器给自助设备发送充值金额的命令,同时自助设备将收到的值写入电卡中,完成电卡充值。求大神指导下,这个程序逻辑是否可行?如可行,都需要什么东西,
    发表于 06-11 11:48

    CAN通信控制的CRC校验

    序列。为完成此运算,可以使用一个 15 位的移位寄存器 CRC-RG(14:0)。被除多项式位数据流由帧起始到数据字段结束的无填充序列给定,如果以 NXTBIT 标记该位数据流的下一位,则
    发表于 12-24 10:28

    dsPIC33EP256MU806 CRC模块的累加何时完成

    ——“当计算完成时,模块将清除GO位并设置CRC中断标志(如果CRCISEL=0)。”到目前为止,我还没有使用中断,所以我只是在GO位上旋转,这与模块没有清除文档相反。有没有使用CRC模块的经验?如果能奏效的话,那就太好了。谢谢
    发表于 03-23 08:37

    如何停止评论的自动完成连字号?

    大家好,我不确定这是编译器还是IDE设置。对不起,如果这是一个错误的论坛。每次我键入/ *,我得到一个自动*/它旁边。我不想这样,事实上,我不想发生任何事情。我查看了工具、选项、编辑器、代码完成(对于C/C++)。但我不知道是什么使它起作用。我如何阻止它?谢谢
    发表于 04-10 09:50

    rex防止脚本还没执行完成就立刻发起怎么回事

    rex 防止脚本还没执行完成,就立刻发起
    发表于 04-28 11:38

    如何通过SR5500的RPI接口完成自动化测试?

    本文介绍了一种通过SR5500的RPI接口,非常方便的用脚本语言编写程序完成自动化测试的方法。
    发表于 05-10 06:01

    HarmonyOS自动签名完成出不来是为什么?

    自动签名完成,点击确认我没有出现
    发表于 04-29 10:29

    CRC校验代码自动生成工具

    CRC校验代码自动生成工具根据输入条件自动产生各种CRC的VHDL或verilog源程序
    发表于 05-20 11:16 293次下载
    <b class='flag-5'>CRC</b>校验代码<b class='flag-5'>自动</b>生成工具

    CNCnetIP电话远程自动充值系统

    为改进工作效率低的人工处理IP 电话远程充值和IP 帐号低余额续费拨号通知的问题,应提供IP 电话运营服务的代理商的需求,设计和开发了一个IP 电话远程自动充值管理系统,有效
    发表于 08-06 11:18 11次下载

    什么是脚本脚本程序学习

    脚本中编写VB脚本代码。可以象使用系统函数一样使用项目中完成脚本。创建脚本时,确定其型号并定义传送参数。“Function”类型的
    的头像 发表于 05-11 10:39 6088次阅读
    什么是<b class='flag-5'>脚本</b>?<b class='flag-5'>脚本</b>程序学习

    什么是脚本?---脚本程序学习

    脚本中编写VB脚本代码。可以象使用系统函数一样使用项目中完成脚本。创建脚本时,确定其型号并定义传送参数。“Function”类型的
    的头像 发表于 06-12 15:39 3743次阅读
    什么是<b class='flag-5'>脚本</b>?---<b class='flag-5'>脚本</b>程序学习

    如何创建自动脚本

    在前面的 bash 初学者系列文章中,我们介绍了关于 bash 的一些基础知识,在了解了这些基础知识之后,可以尝试创建一些自动脚本,来完成一些相对枯燥重复的管理任务。
    的头像 发表于 01-04 16:50 2759次阅读
    如何创建<b class='flag-5'>自动</b>化<b class='flag-5'>脚本</b>