Я использовавл jlinkarm.dll и сделал свою софтину для работы с SWO, работаю только с JLink.
Раскуривал сам давно, вот функции.
CODE
U32 JLINKARM_SWO_Control(U32 arg0,U32 *arg4);
U32 JLINKARM_SWO_Read(U8 *dst,U32 offset,U32 *arg8); // arg8 - number of bytes to read
U32 JLINKARM_HasError(void);
U32 JLINKARM_TIF_Select(U32 iface);
void JLINKARM_Close(void);
U32 JLINKARM_SetSpeed(U32 khz);
void JLINKARM_Halt(void);
U32 JLINKARM_IsHalted(void);
U32 JLINKARM_IsConnected(void);
void JLINKARM_Go(void);
void JLINKARM_Reset(void);
void JLINKARM_ClrError(void);
Jlink::Jlink(){
JLINKARM_TIF_Select(1); // select SWD
JLINKARM_SetSpeed(500);
}
Jlink::~Jlink(){
JLINKARM_SWO_Control(1,0);
JLINKARM_Close();
}
int Jlink::SwoRead(){
n=sizeof(rxbuf);
JLINKARM_SWO_Read(rxbuf,0,&n);
if(!n)return 0;
JLINKARM_SWO_Control(2,&n);
if(JLINKARM_HasError()){
JLINKARM_ClrError();
return -1;
}
//n- number of bytes read