Esta documentação explica a utilização da ferramenta srec_cat para processar imagens de memória, demonstrando parâmetros essenciais para operações comuns.
Especificação do Tipo de Arquivo
Ao informar arquivos de entrada e saída, é necessário indicar seu formato. Exemplos frequentes incluem:
projeto.hex -intel
dado.bin -binary
Conversão de Formato
Utilize a ferramneta para converter entre formatos.
Conversão de HEX para BIN:
srec_cat.exe firmware.hex -intel -offset 0x08000000 -o firmware.bin -binary
Este comando lê
firmware.hexa partir do endereço base0x08000000e gera o arquivo bináriofirmware.bin.
Conversão de BIN para HEX:
srec_cat.exe firmware.bin -binary -offset 0x08000000 -o firmware.hex -intel
<blockquote><p>Este comando lê <code>firmware.bin</code>, aplica o deslocamento de <code>0x08000000</code> e produz o arquivo <code>firmware.hex</code>.</p></blockquote>
<h3>Recorte de Região de Memória</h3>
<p>Para extrair um intervalo específico do arquivo, utilize o parâmetro <code>-crop</code>.</p>
<code>srec_cat.exe firmware.hex -intel -crop 0x08000000 0x08003FFF -o app.hex -intel</code>
<blockquote><p>Gera um novo arquivo <code>app.hex</code> contendo apenas os dados válidos do intervalo <code>0x08000000</code> a <code>0x08003FFF</code> do arquivo original. Se o código terminar antes, por exemplo em <code>0x08001FFF</code>, o arquivo resultante refletirá esse limite inferior.</p></blockquote>
<h3>Preenchimento de Dados</h3>
<h4>Com Strings</h4>
<p>Para inserir uma sequência de caracteres em uma região específica:</p>
<code>srec_cat.exe -generate 0x08000000 0x08000005 -repeat-string VER1.0 firmware.hex -intel -exclude 0x08000000 0x08000005 -o firmware_modificado.hex -intel</code>
<blockquote><p>Este comando preenche o intervalo <code>0x08000000-0x08000005</code> com a string repetida "VER1.0" e mescla com os dados de <code>firmware.hex</code> (excluindo o mesmo intervalo), gerando <code>firmware_modificado.hex</code>.</p></blockquote>
-generate: Define o intervalo e a fonte de dados.-repeat-string: Especifica a string a ser inserida.-exclude: Remove o intervalo especificado do arquivo de entrada antes da mesclagem.
Se a string for menor que o intervalo, ela será repetida. Por exemplo, alterando o limite final para 0x08000006, os endereços 0x08000005 e 0x08000006 conteriam 'V' e 'E', respectivamente.
Com Valores Numéricos
Para inserir valores numéricos em uma região, como um tamanho de arquivo:
srec_cat.exe -geenrate 0x00000008 0x0000000C -constant-l-e 0xA5B6C7D8 4 dado.bin -binary -exclude 0x00000008 0x0000000C -o dado_modificado.bin -binary
Preenche o intervalo
0x08-0x0Ccom o valor hexadecimal0xA5B6C7D8em formato little-endian de 4 bytes, mesclado comdado.bin(excluindo o intervalo) para criardado_modificado.bin.
-constant-l-e: Especifica o valor numérico e seu tamanho em bytes.
Se o intervalo for maior que o tamanho do dado, o valor será repetido. Alterando o limite final para 0x0D, o endereço 0x0C conteria o byte 0xD8 (o menos significativo do valor, devido à ordenação little-endian).