openMMC
openMMC copied to clipboard
openMMC 2.0 roadmap
As the openMMC project has grown, it accumulated some cruft that made it difficult to port to new boards and hard to debug. I propose bellow some enhancements that I think would greatly benefit the overall user and programmer experience. This list is not set in stone and may it change according to our priorities.
Short-term (can be implemented now):
- [x] Merge all afcv3.x ports into a common code base #49 #96 #123
- [ ] Merge common code between afcv3.x and afcv4.x #132
- [ ] Better separate application specific code from board support code
- [ ] Consistent error passing and error checking across functions
- [ ] Move debug / flash logic to microcontroller specific port
- [ ] Proper header include discipline, eliminate 'include all' headers to make it easy to track code dependencies
- [ ] Firmware update integrity check
- [ ] Better GPIO abstraction, user code shouldn't be concerned if the GPIO is behind an I/O expander or not
- [ ] Include a command line interface to ease debugging #81
- [ ] Better documentation: Document all functions using doxygen that are not documented yet. When implementing a functionality defined by some standard, cite the standard, page number, chapter, etc.
- [x] Remove AFCv3 / AFCv4 specific code from RTM-8SFP and RTM-LAMP #181 #204
- [x] Move from Travis CI to Github Actions
- [x] Separate I2C mapping tables for RTM and AFC boards #179
- [x] Separate clock switch configuration from board port #123
- [x] Use OpenOCD + cmsis-dap / jlink / ftdi probes, deprecate LPCLink1 (move to a separate script) #79
- [x] Move bootloader source to uncontroller port as it is microcontroller specific
Medium-term (requires careful planning):
- [ ] Avoid creating a new task for each sdr
- [ ] Check every memory allocation and do proper handling of out-of-memory and memory fragmentation situations
- [ ] Detect and report stack overflow cases (FreeRTOS already has support for detecting stack overflows, what is left to do is printing the task backtrace to de serial console and resseting the firmware)
- [ ] Avoid macro functions, use static inline where adequate
- [ ] Replace the lpcopen hardware abstraction layer library with the CMSIS driver to avoid licensing problems (https://github.com/ARM-software/NXP_LPC/tree/master/LPC1700/CMSIS/Driver https://github.com/ARM-software/CMSIS_5/tree/develop/CMSIS/Driver/Include) or rewrite the necessary parts from scratch
- [ ] Bufferred interrupt based UART to avoid blocking #108
- [ ] Proper I2C master driver (interrupt based, block tasks using semaphores not loops, transparent I2C mux configuration)
- [ ] Use a thread-safe printf implementation #90
- [ ] Refactor cmake build scripts, avoid build flags all over the place
- [x] Run bootloader from RAM to allow self update
Long-term (low priority, requires more complex changes):
- [ ] Better use of Continuous Integration #97
- [ ] Enable MPU for cortex-m3/4 microcontrollers, use the FreeRTOS MPU port