Replies: 3 comments 5 replies
-
The modular firmware build was discussed sometimes on Discord. |
Beta Was this translation helpful? Give feedback.
-
Hi guys! Thanks for chiming in on this topic. First, I want to allow other users to add custom output devices to the firmware. For this i think three things are required:
My assumption is that we can provide a skeleton device as blueprint for easy start, and that people at first will be tech savvy enough to get the firmware compiled etc. - they basically create a custom firmware and they can obviously even turn off stuff and what not. When we think of the boards settings, there are two options:
i think both options might make sense in different circumstances and i think we could even start with option 2 only. Custom firmware - ok this requires also a bit of best practices in the beginning, but we have everything in place already: simply report a special board type and tell mobiflight it's not flashable. Upload of a custom firmware is now actually possible with the new feature that allows you to choose which firmware you'd like to upload. Later, when there have been interesting custom devices created by the community, we will have to figure out how we want to share them easily and maybe also combine them in custom firmwares. Until then i think there is a lot to learn and to experiment and i simply would start with the first step. |
Beta Was this translation helpful? Give feedback.
-
As a retired electronics engineer/ software engineer with CAD/CAM experience back to 1981, my view is that most users struggle with software, they just want simple solutions that work. FLASH/SRAM/EEPROM levels: 3 Mega - all devices in 4k of firmware, Big cockpits need lots of Megas and lots of pins. Medium . Nano, Micro, Tiny: Raspberry Pico - just switches/buttons/LEDS, encoders, 4 analog. No displays, shift registers or mux devices The hardware design mandates small firmware,; the Pico is designed for low power, fixed 3.3V I/O, low pin count and surface mounting. The fixed 3.3V I/O eliminates MAX7219 displays which need 4V to 5V PI-Pico has a maximum of 16mA per pin with the total current from all pins not exceeding 51mA. So maybe just 3 direct LEDs. Throw in support for one DM13A for 16 LEDs. Maybe one LCD, for a cheap encoder/3.3V LCD module.. Cheers |
Beta Was this translation helpful? Give feedback.
-
Now and then, there have been talks about making the firmware more modular.
As a quick recap, these are the two main topics:
(discussed originally in Configs with preconditions do not load #154, more recently in Increase max button limit to 50 on Mega Board #174 and Left Padding Function in LCD Configs #207)
(recently mentioned in Different export Logic for 7Segment and LCD Values #206, and surely in other occasions too)
Regarding the second point, since #206 has just been closed and discussion directed elsewhere, I was thinking about a possible idea (maybe something like this has already been proposed? I could find no reference).
The problem with configuring the firmware to exclude certain unused devices and make space for others is that, while that's trivial to achieve during compilation, the end user only receives the finalized version of the firmware.
In order to change it, he should (be able to) get the sources - and the toolchain - and recompile them himself, which is obviously not convenient.
One solution could be following:
board.json
files for the Connector* and a batch file to copy everything in the correct locations (this could more easily be a function in the Connector though).Of course this would require hosting, but it should not be so demanding; the whole implementation should amount to a simple Docker+Javascript exercise.
Additionally, there should be no further impact on either Connector or firmware.
* Regarding the update to the
board.json
files for the Connector, see the comment below by @elral on how they could get rid of.(This should be more of a firmware-related topic, but as @DocMoebiuz required in #206 I'm posting it here.)
Beta Was this translation helpful? Give feedback.
All reactions