Thanks for that. Currently on MQX3.7, purely because of the USB drivers and SDIO card File access.
Been writing bare-metal systems for years, and even did a USB CDC slave and Kbd /Printer Host on the last project. But not enough man-months available to do it over again on a new project.
Quite unhappy with the way MQX low-level drivers seem to be "shoe-horned" into some pseudo posix format - but more so with the documentation (which looks like something doxygen could have generated from source-code comments).
I have had to come to the forum on a few occasions to figure out simple stuff like configuring a task to handle a UART,
add a mutex to the i2c API so that MQX doesn't trash the transactions, etc.
Stuff that could (should) have been part of an embedded RTOS for a microcontroller, or at least a real-life example or training material.
MarkP has been a great help. But in the end, the only way to figure out what MQX is doing to your hardware is to track the device-driver pointers in a debug-session, find the appropriate bit of source code, and reverse engineer it. 
Also - beware if you want to program any part of your application in C++ . MQX does its own memory management, the templated linker files have no heap allocation, and C++ static constructors may link but crash on startup, or throw linker warnings and then appear to run (for a while). To fix that, you have to patch the MQX startup files.
Stdio between C and C++ is also a minefield. I haven't yet found a fix for that.
In short, if I were doing this again, I would NOT use C++ and MQX. Too hard.
And like I said, If I had the money, I would have bought an RTOS with a broader processor base and better support.