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