WIP: Multi platform support (and various other stuff)
So in the beginning I only wanted to add multi-platform support to get the FR5969 board (wolverine
) running to start implenting an RTC (wolverine has an RTC crystal already soldered onboard).
Sadly I started to pull in other stuff that I needed to test and so this branch exploded more or less, sorry. I'm not yet sure if how we merge this in the end. If desired, I can try to split this into multiple MRs later.
I'm not yet 100% done, but diverging from master
more and more will certainly not help merging this. What do you think?
Things addressed here (unordered)
- Refactor common drivers to be used by all CPUs (that are supported right now)
- Basic UART driver (persistent via DMA, common)
- GPIO driver rewrite (persistent via DMA, more abstraction, common)
- Slight refactor of Comaparator driver to make it work with Comparator E in MSP430FR5969 (currently we use the 2.0V reference for convenience)
- Update MSP430 support files (header + linker scripts)
- Replace boot jumper by button (each board may have at least one hardware button)
- Generalize LED driver to work with boards that have a different amount of LEDs
- Add basic support for MSP430FR5969, initialize clock to 16 MHz, checkpointing works
- Boards are now responsible to configure power loss detection (e.g. configure Comparator), allows for different detection schemes
- Basic printf implementation to print numbers including test
- Tool to conveniently disassmble one function from binary
- Fix bug in tools/assert_var.py that only apprears with Python2
How to test
Now when running CMake you have to choose for which board/platform you are compiling.
$ mkdir src/build; cd src/build
$ cmake .. -DBOARD=launchpad-fr5739
$ make [...]
$ rm -r *
$ cmake .. -DBOARD=wolverine
$ make [...]