NOTE: I'll be focussing this project on the chips I have at-hand: The PIC32MX1xx/2xx series DIP28's. Further, this project aims to run "bare-metal" code, rather than, say, running [applications atop] an operating-system.
For the past decade+ I've been developing code for AVRs... much of that has become common "libraries" that I use from project-to-project. Many of those "libraries" (and the system that makes them possible) are completely "architecture-agnostic."
Those libraries and the system, I call "_commonCode", are slowly being released to the public-domain via: #commonCode (not exclusively for AVRs)
Many of those libraries can be run on a desktop-PC, mostly for testing/debugging-purposes. But many such libraries would be quite difficult to simulate in that environment (e.g. motor-driver code). These sorts of libraries would be best-made more "architecture-agnostic" by having a new architecture to run them on... causing me to revisit the code to see where/if architecture-specific code still exists and abstract that code as necessary.
In the process, I'll be messing with MIPS/PIC32... Attempting to get the system running in an entirely open-source manner (no device-specific programming-dongles to purchase, no crippled Windows-Only IDE). (NOTE: I have resorted to using the Microchip-supplied free 'xc32-gcc' package, as it comes pre-configured with header-files and linker-scripts... This package is *free* and available precompiled for Windows, OSX, and Linux. Maybe an entirely-open-source path can come in the future. Check out @jaromir.sukuba's page: https://hackaday.io/page/2437-myths-and-legends-of-pic-microcontrollers, which has some good info on the matter!).
I plan to use the same tools I used to blink the LEDs on my old [TV] Cable Box: an FTDI-based JTAGger, openOCD, gdb, gcc, etc.
Further, these tools could then be added to the options in _commonCode, allowing for seamless programming/flashing and configuring of these devices in using same "architecture-agnostic" methods currently implemented (e.g. 'make run' flashes the device or executes the executable, depending on the architecture).
BEWARE OF int8_t math bug!!!! https://hackaday.io/project/6450-operation-learn-the-mips-pic32mx1xx2xx/log/23899-optimizer-bug