Creating Intel Hex files from scratch¶
Some facilities are provided for synthesizing Intel Hex files from scratch. These can also be used to modify a hex file in place. Just as you can use indexed reads to retrieve data, you can use indexed writes to modify the file, e.g.:
>>> ih = 0x55 # modify data at address 1
A common usage would be to read a hex file with IntelHex, use the above syntax to modify it, and then write out the modified file. The above command can be used on an empty IntelHex object to synthesize a hex file from scratch.
Another important feature helps work with C strings via
>>> ih.putsz(0x100,"A string")
This places “A string” followed by a terminating NULL character in address 0x100.
getsz method similarly retrieves a null terminated string from a specified address like so:
This should retrieve the “A string” we stored earlier.
gets can be used to retrieve strings of specific length
from the hex file like so:
>>> ih.puts(0x100,"data") >>> ih.gets(0x100,4)
The second command should retrieve the characters ‘d’,’a’,’t’,’a’.
These methods do not use terminating NULLs, so the data need not be interpreted as a string.
One usage of these commands comes from the Python
This module allows the programmer to specify a C struct, and it will allow conversion
between the variables and a packed string representation for use with
For example, suppose we need to deal with a struct containing a char, a short, and a float:
>>> import struct >>> formatstring = 'chf' # see Python docs for full list of valid struct formats >>> ih.puts(0x10, struct.pack(formatstring,'a',24,18.6)) # put data in hex file >>> (mychar,myshort,myfloat) = struct.unpack(formatstring, ih.gets(0x10,7)
myfloat should contain the original data
sizeof(float) = 4 on this platform, otherwise the size may be