Project Update #91: VS-1 Polyphonic Analog Synthesizer by Abstrakt Instruments
Week 194 Update
Posted by Abstrakt Instruments
Mar 29, 2024
Hi everyone,
Nothing very exciting but another good week. This week was spent mostly getting the OLED & simple GUI working for the bootloader so we can get it installed on the microcontroller boards and get the SMD assemblies out to you guys with DIY kits. We're still waiting on the mainboards - so at this point that will be the determining factor as to when the SMD assemblies will ship.
For those of you that may not be aware of terminology such as bootloading etc.. I thought it may help some of you understand exactly what's been going on the last several weeks.
In-System Programming & Debugging
During development, different tools can be used to interface with an embedded system, in our case a SoM, or System-on-Module (Embedded Artists iMX RT1062 OEM). Generally, during debugging you want to be able to work on the firmware while the whole system is hooked up and be able to quickly flash new versions of code. This is generally referred to as ISP, in-system programming. This can be done via many interfaces but the most common is JTAG. This is the method we used for all development to this point (although we do now also use J-Trace, which is great for analyzing the multi-threaded RTOS we have).
Bootloader
Fast forward to mid-2023 and we're getting closer to finishing the VS-1 and need to start thinking about how the end-user is going to be able to easily update the operating system. This is done via the bootloader. This is a separate piece of code outside the main operating system that allows you to update the operating system. Although it is possible to have you guys upload the bootloader to the boot ROM this is not ideal, so we needed to finish the bootloader so we can install it on every module before we send them out to the DIY folks along with the other SMD assemblies. Fortunately, we have completed the core of the bootloader to be able to upload new OS versions by multiple methods...
- SDCard
- USB Drive
- USB MIDI
- DIN MIDI
- PC/Mac (mass storage device)
To implement these multiple methods, the bootloader needed additional code to be written to be able to use the same file with all update methods. This was completed over the last several weeks. In addition, we needed to access several peripherals inside the bootloader, including the buttons, LED's, encoder, OLED, etc... In the case of the OLED the operating system uses a graphics library called LVGL. However, to access the OLED for the bootloader we had to revert to a lower-level driver and graphics library. This is what we worked on this week, the software as well as the user interface to make it easy to select update method and perform the update.
Brian Castro | Abstrakt Instrumetns