I've written a lot of firmwares for embedded dev boards like Arduinos and Teensys, but am still new to PCB design. Right now I'm attempting to bring a multi-MCU design into limited production, and I'm looking for a way to flash the processors on the board through a single interface, and hopefully with a single file. I'm hoping to make this as easy as possible for the user to update in the future.
Last time I did this for a large-scale factory environment, it made sense to just drop a whole Teensy onto my board. But this time I need to miniaturize down to a square board less than an inch and a half on a side. I still like the idea of dropping an open-source board design onto my PCB, and would like to clone three board schematics onto my single board, along with various items for power, an IMU, LED drivers, etc. I can understand if that sounds like a noob thing to do, but from my perspective, it gets the thing up and running faster with very little downside, and my code already relies on open-source, so it makes sense to me.
So I would like to drop in three instances of a dev board design, most likely the Seeeduino Xiao, or possibly the Adafruit Feather. Both use the same Cortex M0 processor, but the feather breaks out more pins. Both of the boards are programmable through USB, as well as something called UF2. But they also both break out SWD pads, which are for serial flashing and debugging. I'm wondering if I can use these to program remotely from an ISP on the board.
I've learned several ways these boards can be programmed, but so far I've been unable to decipher the best way to do it in my end product. Here's some reading I've done so far:
https://learn.adafruit.com/adafruit-feather-m0-basic-proto/adapting-sketches-to-m0
https://learn.sparkfun.com/tutorials/arm-programming/all
https://www.sigmdel.ca/michel/ha/xiao/seeeduino_xiao_01_en.html
https://www.sigmdel.ca/michel/ha/xiao/seeeduino_xiao_sercom_en.html#warning
https://wiki.seeedstudio.com/Arduino-DAPLink/
https://learn.adafruit.com/programming-an-m0-using-an-arduino
https://www.pemicro.com/downloads/flash_algorithm/ARM_SPI_external_flash_alg_download.cfm
Any advice you might offer would go a long way. At this point I'm assuming by cloning in these board layouts, I'll be able to compile for that board as I normally do (VisualMicro for Visual Studio), and somehow produce a binary file that would flash all three processors. But I'm totally green when it comes to this kind of thing. So things that are obvious to you guys, I likely am totally unaware of.
Thanks for your time!