Intel Hex formaat. (en binaire & S-record formaten)

Hardware en software.
Plaats reactie
Bericht
Auteur
Gebruikersavatar
PE1PUP
Berichten: 261
Lid geworden op: 16 mei 2005, 18:10
Roepletters: PE1PUP
Locatie: Culemborg (Gelderland)

Intel Hex formaat. (en binaire & S-record formaten)

#1 Bericht door PE1PUP »

Wanneer je wat met computers, processoren, microcontrollers en het programmeren daarvan doet, werk je al snel met bestanden in het Intel Hex formaat. (Vaak herkenbaar aan de file extentie *.hex)

Erg handig is te waten hoe dit formaat nu eigenlijk precies in elkaar zit. Dan kun je het "gewoon" lezen, en eventueel ook doorgronden c.q. tweaken. Bij deze de beschrijving, wel in het Engels:...

+++++++++++++++++++++++++++++++++++++++

A brief explanation of the IntelHex file format.

IntelHex file records are a text representation of Hexadecimal coded binary data. All data uses only ASCII characters, so the format is portable across virtually all computer platforms. The most common format, described here, is for eight bit data stored within a 64Kbyte address space.

(The '$' will be used throughout to indicate a hexadecimal value.)

Each line in an IntelHex file is called 'record'. Records always begin with a colon ( : ), followed by the number of data bytes in each record. This value cannot exceed 255 bytes, since it must be a hexadecimal number between $00 and $FF.

The next pair of numbers represent the 16-bit starting address of the data in the record. This is the absolute location in the EPROM.

The starting address is followed by a byte representing the record type. If this is $00, the next bytes will be the actual data to be stored in EPROM. A $01 indicates that this is the end of the file. There are others, but they are rare, and honestly I don't know much about them. Only the $00 record type should contain EPROM data.

Following the record type are the hex representations of the data to be stored.

The last byte is a two's complement checksum of all of the bytes in the record, not including the colon. Note that this value is derived from the binary values of the bytes, not the ASCII representation.

A standard CR/LF pair (carriage return/linefeed, $0D $0A) terminates the record.


This a sample IntelHex record.

:10017000707172737475767778797A7B7C7D7E7F07 (CR/LF)

Broken down, it looks as follows:

: - Colon, indicates that this is IntelHex

10 - Number of data bytes to follow = $10, or 16 decimal

0170 - Starting address in the EPROM for this record.

00 - This is the record type -- $00 = Data

70 - These are the data bytes (in hex) - 16 of them as noted above
71 The first byte ($70) will be stored at $0170, with the
72 remaining bytes following in sequence.
73
74
75
76
77
78
79
7A
7B
7C
7D
7E
7F

07 - This is the checksum. If you add all of the successive bytes
(note that the address is treated as two individual bytes) the
result is $7F9. Truncating this to eight bits yields $F9. The
two's complement of $F9 is $07. (This may be derived by
subtracting $F9 from $100, or by inverting the bits and adding
one to the result.)

(CR/LF) - End of this record -- I think the linefeed may be optional.

The use of the starting address in each record makes it possible to store data in non-contiguous areas of the EPROM. Each line of data is therefore entirely self-contained. This is useful when areas of the EPROM are unused, as no space in the IntelHex file need be wasted by representation of blank data. It is perfectly possible, albeit not recommended, to scramble all of the record lines in an IntelHex file and still end up with a correct EPROM image.

The end record (end of file) is almost the same:

:00000001FF

: - Colon, indicates that this is IntelHex

00 - Number of data bytes - should be zero

0000 - Address, usually zero, but I have seen this referred to as the
transfer address. Again, I am not sure of the purpose here.

- Zero data bytes here (obviously)

01 - This is the record type -- $01 this time, indicates end record

FF - The checksum, calculated as above.



+++++++++++++++++++++++++++++++++++++++
Laatst gewijzigd door PE1PUP op 24 nov 2006, 18:38, 3 keer totaal gewijzigd.
________________________________________
Johan Evers (PE1PUP) QTH: Culemborg
Voorzitter/Webmaster VERON afdeling A29 Nieuwgein
Zie: http://a29.veron.nl/
________________________________________

Gebruikersavatar
PE1PUP
Berichten: 261
Lid geworden op: 16 mei 2005, 18:10
Roepletters: PE1PUP
Locatie: Culemborg (Gelderland)

Van binair naar Intel hex formaat omzetten.

#2 Bericht door PE1PUP »

Hallo knutselaars,

Wanneer je een binair bestand (bijvoorbeeld een memory dump, vaak herkenbaar aan de file-extentie *.bin) om wilt zetten in een Intel hex file (*.hex), dan helpen bijgevoegde utilities je verder. Allemaal DOS programmatuur, dus werkt ook nog op hele ouwe PC's.

Groetjes, Johan.
Bijlagen
BIN2HEX V1.06.zip
Binair naar Intel hex omzetter.
(11.43 KiB) 399 keer gedownload
Bin2Hex V2.1.zip
Binair naar Intel hex omzetter. (Iets andere versie)
(14.88 KiB) 421 keer gedownload
Laatst gewijzigd door PE1PUP op 24 nov 2006, 18:41, 3 keer totaal gewijzigd.
________________________________________
Johan Evers (PE1PUP) QTH: Culemborg
Voorzitter/Webmaster VERON afdeling A29 Nieuwgein
Zie: http://a29.veron.nl/
________________________________________

Gebruikersavatar
PE1PUP
Berichten: 261
Lid geworden op: 16 mei 2005, 18:10
Roepletters: PE1PUP
Locatie: Culemborg (Gelderland)

Van binair naar Motorola S-record formaat omzetten.

#3 Bericht door PE1PUP »

Hallo knutselaars,

Wanneer je een binair bestand (bijvoorbeeld een memory dump, *.bin) om wilt zetten in een Motorola S-record file (SREC, vaak herkenbaar aan de file-extentie *.s19), dan helpt bijgevoegde utility je verder. Wederom DOS programmatuur, dus werkt ook nog op hele ouwe PC's.

Groetjes, Johan.
Bijlagen
BIN2MOTV1.06.zip
Van binair naar Motorola S-record converter.
(11.74 KiB) 393 keer gedownload
Laatst gewijzigd door PE1PUP op 24 nov 2006, 18:42, 1 keer totaal gewijzigd.
________________________________________
Johan Evers (PE1PUP) QTH: Culemborg
Voorzitter/Webmaster VERON afdeling A29 Nieuwgein
Zie: http://a29.veron.nl/
________________________________________

Gebruikersavatar
PE1PUP
Berichten: 261
Lid geworden op: 16 mei 2005, 18:10
Roepletters: PE1PUP
Locatie: Culemborg (Gelderland)

Van Motorola S-record naar binair formaat omzetten.

#4 Bericht door PE1PUP »

Hallo knutselaars,

Wanneer je een Motorola S-record file (SREC) om wilt zetten in een binair bestand dan helpt bijgevoegde utility je verder. Wederom DOS programmatuur, dus werkt ook nog op hele ouwe PC's.

Groetjes, Johan.
Bijlagen
MOT2BINV1.03.zip
Van Motorola S-record naar binair omzetter.
(11.61 KiB) 411 keer gedownload
________________________________________
Johan Evers (PE1PUP) QTH: Culemborg
Voorzitter/Webmaster VERON afdeling A29 Nieuwgein
Zie: http://a29.veron.nl/
________________________________________

Theo Postma
Berichten: 596
Lid geworden op: 26 aug 2005, 16:15
Locatie: Gasselternijveen
Contacteer:

#5 Bericht door Theo Postma »

Dank je wel voor je bijdrages Johan!
Kennis hebben waar op het net iets te vinden is waardevol.
En zeker deze bijdrages.
Ik stel het zeer op prijs dat deze nu veilig opgeborgen zijn bij dit forum.
Alles mooi bij elkaar.

Want je kent de situatie wel, ik heb nu behoefte om iets te doen, maar stond dat ook al weer?
Zoeken, zoeken, nu weet ik waar een smit kaart en dergelijke, overzichtelijk is te verkrijgen.

Groeten,
Theo
Heb niets meer te vertellen, hoor en wederhoor.
Da die da

Gebruikersavatar
PE1PUP
Berichten: 261
Lid geworden op: 16 mei 2005, 18:10
Roepletters: PE1PUP
Locatie: Culemborg (Gelderland)

Reactie.

#6 Bericht door PE1PUP »

Hi Theo,

Da's precies mijn insteek. Wanneer ik zo veel mogelijk mijn eigen gevonden spulletjes hier centraal opberg, en anderen doen dat ook, dan heb je voor dat je het weet een prachtige "kennis-database". Ik probeer al regelmatig de "zoeken" optie, en ben verrast door wat ik al kan vinden. Maar vind ik niets, dan kijk ik zelf of ik iets heb toe te voegen.

Het is geven en nemen, en in het begin vooral geven. Het nemen komt later wel... 8)

Groetjes, Johan.
________________________________________
Johan Evers (PE1PUP) QTH: Culemborg
Voorzitter/Webmaster VERON afdeling A29 Nieuwgein
Zie: http://a29.veron.nl/
________________________________________

Theo Postma
Berichten: 596
Lid geworden op: 26 aug 2005, 16:15
Locatie: Gasselternijveen
Contacteer:

Re: Reactie.

#7 Bericht door Theo Postma »

PE1PUP schreef:Hi Theo,


Het is geven en nemen, en in het begin vooral geven. Het nemen komt later wel... 8)

Groetjes, Johan.
Ja dat is waar :oops:
Denk dat ik ook maar zo iets ga doen met de kennis over TWT eindtrappen.
Wat me tegen houd, is het feit dat er maar weinig mensen QRV zijn op 3 cm.
Maar toch, hoe je hoogspanning moet maken, dat is weer iets wat op de kortegolf ook van toepassing is.
En 10 kilovolt is niet iets wat een ieder van ons dagelijks "doet" .
Toch is dit heel mooi op een standaard print te maken, zonder overslag.

Ik (we) broed(en) nog even verder, eerst er aan werken om de 750 watt op de meter te zien.

Fun, prachtige hobby hebben we, echt waar.

Groeten,
Theo
/
Heb niets meer te vertellen, hoor en wederhoor.
Da die da

Gebruikersavatar
PE1PUP
Berichten: 261
Lid geworden op: 16 mei 2005, 18:10
Roepletters: PE1PUP
Locatie: Culemborg (Gelderland)

Reactie.

#8 Bericht door PE1PUP »

Hi Theo,

TWT als in Travelling Wave Tubes???

Da's eigenlijk toch wel een heel interresant onderwerp. Daar zou ik graag meer van op dit forum willen lezen. Voel je niet geremd je kennis te delen. Ik weet zeker dat er meer interesse is... 8)

Hoge spaningen interreseren me zo wie zo al van kinds af aan. Als klein jochie heb ik ooit met zelfbouw bobines en zo zitten prutsen. Zo groot mogelijke vonkbogen produceren. Zenden in een oervorm eigenlijk. Geweldig "speelgoed". Totdat ik met een geisoleerde schroevendraaier ergens aan zat waar 40KV op stond, terwijl ik me niet realiseerde dat er in de kleine lettertjes op m'n handvat stond dat het ding tot 25 KV geisoleerd was. :evil:

Dat was effe schrikken. Een flinke klap gehad. De rest van de dag m'n rechter hand/arm niet echt meer lekker kunnen gebruiken. Beetje lam gevoel. Maar geen blijvende schade hoor. Alleen een permanente deuk in mijn zelfvertrouwen voor wat betreft hoge spanningen. Ik check nu alles nog steeds meer dan eens alvorens ergens aan te zitten.

Grappig genoeg kreeg ik jaren later een praktijkleraar op de MTS die de hele klas een totaal ongeisoleerde combinatietang liet zien, en er vervolgens bij vertelde dat dat zijn allerveiligste stuk gereedschap was. De hele klas dus vreemd kijken. Was de man nu echt gek geworden? Niet dus. Hij vertelde dat juist door het ontbreken van iedere vorm van (schijn-) veiligheid hij altijd dubbel en dwars controleerde of waar hij aan wilde werken wel spanningsvrij was. Een wijze les, helaas al wel jaren te laat voor mij.

Groetjes, Johan.
________________________________________
Johan Evers (PE1PUP) QTH: Culemborg
Voorzitter/Webmaster VERON afdeling A29 Nieuwgein
Zie: http://a29.veron.nl/
________________________________________

Plaats reactie