Board portability is implemented in boards.h, libmaple.h, and stm32.h. At compile time, we currently expect one of STM32_MEDIUM_DENSITY or STM32_HIGH_DENSITY to be defined. There's no support for low-density chips. XL-density isn't in the near horizon; patches welcome. You'll also need to define some BOARD_foo if you expect to use Wirish; this comes along with some additional assumptions about your board's layout. The code in usb/ is not very portable at all right now; expect this to change in the future, but for now, we're focusing on rolling out a more complete backend. A file should be added to ./notes describing the pin numbering of any new board you add. NVIC Notes: Only CANBUS and USB OTG use interrupts above #63, but I updated the nvic code anyways RCC Notes: Added some clock stuff to all boards even though they aren't usable... blah. SPI Notes: SPI3 is only in XL chips, so we don't handle that. TIMER Notes: The wirish timer implementation should be refactored to use pin numbers. USART Notes: The USART/UART nomeclature is a little mixed up. TODO: portability of HardwareSerial, HardwareSPI