mathieugalle / mcbootflash-cpp

same as the mcbootflash repository, but in C++, to be able to flash some PIC24 bootloader applications from an embedded platform

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

mcbootflash-cpp 🚢

Why? 🤔

Flash (update) PIC24 bootloader applications from an embedded platform without Python. My company, Vitirover, needs to update the embedded code during the lifecycle of the robot 🤖.

Special thanks to mcbootflash by bessman for the inspiration.

This repository is a C++ rendition of the original mcbootflash. It has no dependencies except the standard library. bessman used the bincopy Python library for handling the hex Intel Microchip format. I've transcribed it in C++ (focusing only on the parts necessary for mcbootflash) in hexfile.h / hexfile.cpp.

Unit Tests 🧪

For unit testing, I employed doctest. I used the same test hex file as bessman (mcbootflash/tests/testcases/flash/test.hex) for consistent comparison. Additionally, I utilized Jupyter notebooks (/notebooks) to test and translate Python tests to C++.

I also added a hex file compiled with Microchip, VitiAppDelivery.X.production, to ensure the generated chunks match those in mcbootflash. This hex file includes some IHEX_EXTENDED_LINEAR_ADDRESS lines, not tested by the test.hex file.

Compilation should be straightforward; the makefile is quite simple.

Note: There is no main function as such. Instead, this code uses the following snippet to run all tests, making it an executable project rather than a compiled library.

#define DOCTEST_CONFIG_IMPLEMENT_WITH_MAIN
#include "doctest.h"

(in mcbootflash-cpp.cpp) As of now, all my tests are passing with flying colors ✅.

About

same as the mcbootflash repository, but in C++, to be able to flash some PIC24 bootloader applications from an embedded platform


Languages

Language:C++ 52.8%Language:Jupyter Notebook 41.2%Language:Python 5.9%Language:Makefile 0.0%