This will be my first topic on this community, but I have been working on my spark cores for a few months. This community has helped me quiet a few times, so I figured it is time to start contributing.
I have been wondering wether it would be possible to update the core firmware without the use of dfu-util, and found out it is actually not that difficult. The only change required in the core-firmware was creating 3 public functions with the same functionality as Spark_Prepare_For_Firmware_Update, Spark_Finish_Firmware_Update and Spark_Save_Firmware_Chunk.
After that I could call these functions from my own application firmware, which holds the code to communicate over the usb serial connection. From the connected computer I used some nodejs code that chunks the core-firmware.bin file and sends it.
I can imagine this could be very useful for the spark-cli, because it wouldn’t require dfu-util to flash the core. For this to be possible, some small changes to the bootloader firmware would be required.
My c++ skills are very basic, and as a new-comer, I feel out-of-place to be proposing changes to the core bootloader, but I would love to contribute to this wonderful product if anyone is interested. I haven’t looked at any of the code of the spark-cli, but I am positive I could made the changes required once the boot loader has been updated.
Ymodem protocol has been ported to the core and available in the feature/hal branch. This should work via USB as well so there’s no need to rewrite except for getting into the mode
Hi Kenneth, thanks for your fast reply. I haven’t yet taken the time to compile and flash the new hal branch, but I am very interested to see what you guys have achieved so far. I will give it a go in the near future. Good to hear there are some new features to be expected once it is released.
To be honest, I hadn’t heard of the Ymodem protocol, and I also can’t find much in combination with nodejs, but do I understand correctly that it will allow updating the firmware without the use of external tools like dfu-util?
(In my case, I want to be able to update my core from the config utility (using node-webkit) I am writing, without the requirement of installing anything. The solution I created now works fine, but naturally I’d rather not change to much in the core-firmware.
Thanks again, also for all your posts regarding the udp issues, it helped me a lot!)