About

The Intel HEX file format is widely used in microprocessors and microcontrollers area as the de facto standard for code representation for microelectronic devices programming.

This work implements an intelhex Python library to read, write, create from scratch and manipulate data from HEX (also known as Intel HEX) file format. These operations are provided by IntelHex class.

The distribution package also includes several convenience Python scripts to do basic tasks that utilize this library. The bin2hex.py script converts binary data to HEX, and the hex2bin.py works the other direction. hex2dump.py converts data from HEX to a hexdump which is useful for inspecting data, and hexmerge.py merges multiple HEX files into one. In addition you can try inspecting differences between two HEX files with hexdiff.py utility which uses dump output similar to hex2dump.py.

You can find IntelHex library on PyPI:

https://pypi.python.org/pypi/IntelHex

on Launchpad:

https://launchpad.net/intelhex

on GitHub:

https://github.com/bialix/intelhex

Motivation

This work was partially inspired by SRecord software at the moment when I stuck with its limitations and unintuitive behavior.

So I’ve made this library and related tools which give me full control over data and HEX file creation. Not the best reason to start yet another project. But, as you probably know, nothing is better than scratch our own itches, especially if you want to re-implement something in your favorite programming language.

Over the years it turned out that my small python library was very useful to many people, and allowed them not only to create utilities to manipulate with HEX files, but also to create custom bootloaders for their devices.

I started writing this library in 2005, and now 10 years later it’s still alive and useful to other developers. That keeps me working on improving the code, even though I don’t work on embedding systems for some time.

If you find IntelHex library useful, please send me email and tell a bit about how you’re using it and in which projects/areas. That will not only satisfy my curiosity but also will help me to keep working on this project.