Mentions légales du service

Skip to content

WIP: Multi platform support (and various other stuff)

Daniel Krebs requested to merge feature/multi-cpu into master

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 [...]

Merge request reports