Recently, I came to know about ETM(Embedded Trace Macrocell). This is to trace instruction of program to know the bugs. The same can be achieved by ITM(Instrumentation Trace Macrocell) by using printf() statement.We can know the bugs by using ITM also. This is not using any controller ports.
Then what is the importance of ETM? Can anyone tell? I couldn't understand it. Debuggers with ETM are higher in cost. What's the purpose of that?
Without ETM your debugger will never see any instruction trace other than when using the simulator. And the simulator can't simulate a full chip and may not know to add additional clock cycles when the processor core stalls on some I/O or waiting for instructions from the flash.
With other options you may get some background reads of memory content but then you need breakpoints and single-stepping to see what the processor is doing.