如何使用srec_cat插入两个常量?

时间:2018-09-19 21:50:33

标签: srec-cat

我为srec_cat使用以下脚本。我的目标是将两个常量插入.srec文件中的已知位置:

srcfile.srec
# carve a hole for and insert crc byte count
-exclude 0x43c8 0x43cc
-generate 0x43c8 0x43cc -constant-l-e 0x8e2c 4
# carve a hole for and insert crc expected value
-exclude 0x43cc 0x43d0
-generate 0x43cc 0x43d0 -constant-l-e 0x194fa71a 4
# output into new file
-o dstfile.srec

如果我注释掉一半,该脚本将正常工作。但是,在两个人都出席的情况下,我得到了消息:

srec_cat: generate repeat data: multiple 0x000043CC values (previous = 0x00, this one = 0x1A)

我可以写出一个中间文件并对其进行处理以插入第二个常量,但这似乎相当繁琐。从这样的黑客救我! :)

1 个答案:

答案 0 :(得分:1)

我认为您需要man srec_examples中提到的方括号:

  

加入后进行过滤
         有时您希望将两组数据连接在一起,然后对连接的结果应用过滤器。去做这个   您使用括号。

srec_cat                                                  \
    '('                                                   \
        infile -exclude 0xFFF0 0x10000                      \
        -generate 0xFFF0 0xFFF8 -repeat‐string 'Bananas ' \
    ')'                                                   \
    -b‐e‐length 0xFFF8 4                                  \
    -b‐e‐checksum‐neg 0xFFFC 4 4                          \
    -o outfile
     

上面的示例命令用恒定的字符串填充输入文件(不包括生成的数据区域)。这联系   然后对输入进行过滤,以添加4字节的长度和4字节的校验和。

在您的情况下:

srec_cat '(' srcfile.srec -exclude 0x43c8 0x43cc -generate 0x43c8 0x43cc -l-e-constant 0x8e2c 4 ')' -exclude 0x43cc 0x43d0 -generate 0x43cc 0x43d0 -l-e-constant 0x194fa71a 4 -o dstfile.srec