seriove cislo a intelhex
Jan Waclawek
wek@evona.sk
Čtvrtek Červen 8 11:05:14 CEST 2006
Dakujem vsetkym za pripomienky a namety a Petrovi za ponuku.
Mno tak som si to vyriesil k mojej vlastnej spokojnosti... :-)
Ukazalo sa, ze dotknuty "paliaci" program (FLINK pre uPSD od STM) je
necitlivy na checksumu v intelhexovom riadku a ze sa pokojne moze pridat
riadok aj mimo poradia, aj ked sa byty na jednom mieste duplikuju (t.j.
je ten "loader" napisany maximalne tolerantne). Ale to je jedno, ja to
chcem mat riesene aj tak co mozno najkorektnejsie.
Este dodam, ze subor obsahuje aj zaznamy typu 04 a 05 (t.j. zaciatok a
koniec bloku).
Pouzil som http://srecord.sf.net a napisal som si k tomu nejaky bat
(mladici a fyzici by urcite povedali script :-) )(pripajam; help je ked
sa spusti bez parametrov). Nie je to uplne to prave orechove ale na dany
ucel postaci, urcite to je o 100% lepsie ako rucne editovat hex (co bol
doterajsi stav). No a ked ide o stovky zariadeni vo vyrobe (kam zdrojaky
nemozem dat), je to aj celkom ergonomicke riesenie.
Inak ten balik srecord je celkom podnetny a stal by za upravy (napr.
prave pridat serializaciu), keby nebol napisany tym idiotskym
linuxoidnym stylom v quasiC++.
wek
--------- inc_ser.bat - inkrementuje seriove cislo
@echo off
if "%1"=="" goto errorxx
if not exist %1 goto errorxx
srec_cat %1 -i -crop 0x3ffe 0x4000 -fill 0x01 0x3ffc 0x3ffd -fill 0x00
0x3ffd 0x3ffe -l_e_c_p 0x3ffe 2 2 -crop 0x3ffe 0x4000 -multiple -o
tmp.hex -i
srec_cat %1 -i tmp.hex -i -multiple -o %1 -i
del tmp.hex
goto end
:errorxx
@echo increments (word) checksum in intelhex file at address 0x3ffe-0x3fff
@echo Usage: %0 filename
goto end
:end
--------- set_ser.bat - nastavi seriove cislo na pozadovanu hodnotu
@echo off
if "%1"=="" goto errorxx
if "%2"=="" goto errorxx
if "%3"=="" goto errorxx
if not exist %1 goto errorxx
srec_cat %1 -i -excl 0x3ffe 0x4000 -fill 0x%3 0x3ffe 0x3fff -fill 0x%2
0x3fff 0x4000 -multiple -o %1 -i
goto end
:errorxx
echo sets checksum in intelhex file at address 0x3ffe-0x3fff
echo Usage: %0 filename highhex lowhex
echo example: %0 gnsas.obj f2 4c
goto end
:end
Další informace o konferenci Hw-list