uVision does not support semihosting. It has a feature called Event Recorder for printf functionality.
osThreadNew() is called before osKernelStart() to define the main thread, and then by the main thread to start other threads.
Event Recorder supports both FVPs and real hardware.