I have been working on this project for the better part of 5 months and I am proud to share this with the community, in an effort to gain some feedback and hopefully contribute to the greater conversation around better firmware design principles.
I have written up a short intro in my blog. Please feel free to read and review the code linked there.
A very nice introduction to good coding practices. Especially appropriate for those starting out. Anyone who's been coding 20+ years probably does most of this already as you learn better practices iteratively. I just passed 40 years writing assembler projects so I recognize and agree with nearly all. Small design houses can probably drop the more generic and cross family aspects. Good job.
@CustomSarge Thank you so much for the kind words!!! You are the only person to have responded so far, across all the channels through which I distributed this code. Your validation is relief beyond what I can describe.
Hi there, monumental approach which I have never been ready to face. Many thanks for sharing your ideas. It was always tempting to generalize the SW approach. For me as an electonic engineer to whom a compiler is just a tool to construct am still focused on the hadrware. So far - even in quite complex projects - I have used 3 layers of SW code: 1. HW palpability (init, basic functionality) 2. Interfaces (buffers, muxes, spolers, wrappers of 1.) 3. application (that runs all the stuff in the way it should work including extra computing whatever needed).
Everything can be easily encapsulated in objecs (structs) with specific HW differentiation.