Благодарю всех за содействие.
Воспользовался советом
Сергей Борщ, и слепил bat-файл сценарий для сериализации.
Привожу его код (файл "Serial.bat"):
Код
@echo off
set SETTINGSFILE=%~dp0\Serial.ini || exit /b 1
set HEXFILE=%1
rem Проверка существования файлов
if not exist %SETTINGSFILE% (
echo FAIL: Файл с серийными номерами отсутствует
exit /b 1
)
if not exist %HEXFILE% (
echo FAIL: Файл с прошивкой отсутствует
exit /b 1
)
for /f "eol=# delims== tokens=1,2" %%a in (%SETTINGSFILE%) do (
rem В переменной a - ключ
rem В переменной b - значение
rem Мы транслируем это в переменные окружения
set "%%a=%%b"
)
rem Вычисляем конечный адрес
set /a END_ADDRESS = %2 + %3
rem Модифицируем s/n в прошивке с помощью утилиты srec_cat.exe
srec_cat -generate %2 %END_ADDRESS% -l-e-constant %Serial% %3 ^
%HEXFILE% -Intel -exclude %2 %END_ADDRESS% ^
-o %HEXFILE% -Intel
rem Создаем временный файл для модификации s/n в файле "Serial.ini"
type NUL>"%TEMP%\Serial.ini"
rem Инкремент переменной окружения "Serial" - текущего s/n
set /a Serial = %Serial% + 1
rem Сохранение нового значения s/n во временном файле
echo:Serial=%Serial% >>"%TEMP%\Serial.ini"
rem Перезапись исходного файла временным файлом с новым s/n
move/y "%TEMP%\Serial.ini" "%SETTINGSFILE%"
exit /b 0
В том каталоге, из которого запускается "Serial.bat" должны также присутствовать "srec_cat.exe" из пакета утилит "SRecord", а также текстовый файл "Serial.ini", в котором содержится текущий s/n в виде строчки:
Код
Serial=1
К данному s/n прибавляется единица всякий раз, когда запускается "Serial.bat" и сохраняется.
Вызывать этот сценарий, например из другого bat сценария содержащего команды программатора, нужно следующим образом:
Код
call Serial.bat [Путь и имя модифицируемого hex файла] [Начальный адрес в модифицируемом файле, куда будет помещен s/n] [Размер s/n в байтах]
Пример вызова "Serial.bat":
Код
call Serial.bat %~dp0\1.hex 0x1FFB 4
В результате этого вызова по адресу 0x1FFB файла "1.hex", находящегося в том же каталоге, откуда производится вызов сценария, запишется s/n размером 4 байта из файла "Serial.ini".
В архиве "Serial.bat", "Serial.ini", "srec_cat.exe"