If you are developing an application to run in a semihosted environment for debugging, you must have an execution environment that supports A32 or T32 semihosting, and has sufficient memory.
The execution environment can be provided by either:
Using the standard semihosting functionality that is present by default in, for example, DSTREAM or RVI.
Implementing your own handler for the semihosting calls.
It is not necessary to write any new functions or include files if you are using the default semihosting functionality of the C and C++ libraries.
The ARM debug agents support semihosting, but the memory map assumed by the C library might require tailoring to match the hardware being debugged.