Standalone programmer for micro controllers.
LEMPA is a combination of software and hardware that brings modern CI/CD practices to firmware flasging. Key features:
LEMPA is composed of 3 parts:
A custom PCB that contains all the relevant connections required to program:
The board also includes:
The software reads the different profiles and orchestrates the process of downloading new BINs and programming
sudo apt-get install avrdude
sudo apt-get install libopenjp2-7
and sudo apt-get install libtiff5
pip3 install -r requirements.txt
python3 program.py
or python3 program.py <profile id>
The configuration file can contain as many profiles as required.
{
"id": "blinklocal",
"type": "bin",
"jumper" : 1,
"device": "m328p",
"programmer": "linuxspi",
"bins": [
{
"method": "local",
"name": "blinklocal"
}
],
"fuses": {
"lfuse": "0xF7",
"hfuse": "0xD6",
"efuse": "0xFD",
"lock": "0xFF"
},
"plugins": [
{
"name": "serialinjector",
"conf": {
"serialSpeed": 38400,
"fields": [
{
"id": "blinkrate",
"value": 5,
"title": "Blink rate in 100ms. For exampe value of 5 means 500ms off, 500ms on",
"type": "byte"
}
]
}
}
]
},
...
]
bin
or composite
. Composite allows for multiple profile programming, one after another.method | description | requred fields |
---|---|---|
cloud | Fetch BIN from any URL | url - source of the BIN |
cloud_gw | GW that will return info about the BIN. Usefull when a service is required in front of the BIN cloud storage | info_url - End point of the service that will retun information about the BIN. The response of this URL must be a valid JSON with url field that points to the actual BIN |
local | Don't fetch. Valid BIN must be under bins folder. System will not actively fetch anything |
(none) |
fs | File system copy | src - Path to source bin that needs to be copied |
Once LEMPA is up and running, It exposes web UI via port 8080 that allows:
Please contact me at [email protected] with any comments