[ABANDONED] ITM frame filtering for VisualGDB

This site uses cookies. By continuing to browse this site, you are agreeing to our Cookie Policy.

  • [ABANDONED] ITM frame filtering for VisualGDB

    Hi, using Visual Studio 2017 15.8.1 + VisualGDB 5.4.4.2400 + Jtrace Pro 6.34a

    Configured ITM/SWO output to print into the VisualGDB "raw terminal" through gdb localhost:2332.

    It works somehow but I get garbage in the output :

    sysprogs.com/w/forums/topic/an…equences-in-raw-terminal/

    According to sysprogs, ITM packets should be filtered. Obviously TrueStudio do that with SWV consoles :

    blog.atollic.com/cortex-m-debu…sole-using-swv/itm-part-1


    Now is there a way to filter the ITM output and redirect only port 0 on localhost:2332 instead than everything ?


    Should I use a second stage ITM decoder, something like sigrok or orbuculum ? How to configure them properly ?


    Thanks.
    Images
    • capture_20180822_001_101914.png

      78.72 kB, 952×936, viewed 1,043 times
    • capture_20180822_002_102134.png

      17.08 kB, 636×563, viewed 777 times
  • Hello,

    Thank you for your inquiry.
    Which target device are you debugging?
    To make a SWO printf stream visible we suggest using JLinkSWOViewer which is part of the J-Link software package.

    Best regards,
    Nino
    Please read the forum rules before posting.

    Keep in mind, this is *not* a support forum.
    Our engineers will try to answer your questions between their projects if possible but this can be delayed by longer periods of time.
    Should you be entitled to support you can contact us via our support system: segger.com/ticket/

    Or you can contact us via e-mail.
  • Using a STM32L476, but that's not the point, just as I stated in my OP, we already have a toolchain ready.

    The fact is that switching from an uart based output to an itm based output leads to corruption because there is no swo stream filtering from your side. We always get '\0x01' bytes interlaced with every byte sent into the itm port 0, which is done through 'ITM_SendChar' (see core_cm4.h) that is purposely made to replace the original sendchar(char c) function.


    Hence, all what I want is to get the byte sent through itm port 0, advertised as being the appropriate printf replacement, without the data stream being polluted by spurious '\0x01' bytes (see screen captures in the OP).