Принимаешь, что программа которую надо зашить будет лежать с фиксированного адреса (скажем - 400h). Пишешь "прошивальщик" который по объему меньше 1кБ и располагаешь его в начале памяти. Прошивальщик компилируешь в Intel-hex. Программу которую надо прошить компилируешь в Intel-hex. Ну а далее воспользуйся парой программ hex2bin и bin2hex и обычным копированием с добавлением. У меня в частности .BAT-файл для записи двух программ (тестовой и основной) выглядит так:
--------summ_hex.bat--------------------- rem берет три hex-файла (загрузчик, программа и тест) и совмещает в одном hex-е rem размер загрузчика - до 1кБ, программа пишется со смещением 1024 байт (1кБ), тест пишется со смещением 5120 байт (5кБ) rem Служебные файлы - end.* (end.bin end.hex)
rem Создание пустого end.hex del end.* HEX2BIN.EXE end.hex BIN2HEX.EXE END.BIN
rem Собственно совмещение HEX2BIN.EXE /p255 /L8192 end.hex HEX2BIN.EXE /M %1 end.bin HEX2BIN.EXE /M /O1024 %2 end.bin HEX2BIN.EXE /M /O5120 %3 end.bin BIN2HEX.EXE END.BIN --------summ_hex.bat---------------------
Набор комманд может отличаться для разных конвертеров... В крайнем случае можно конвертировать два бинарника (прошивальщик размером 1кБ) и тупо сложить коммандой COPY load.bin /B +prg.bin /B end.BIN /B
Сообщение отредактировал ArtemKAD - Feb 15 2008, 10:21
|