First impressions

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

  • First impressions

    First and foremost I want to congratulate Segger for the SystemView Tool, and the more so as it is offered for free. It seems to me that the potential of the tool is really great. An added bonus is that the tool is multiplatform.

    However, during the evaluation I stumbled upon a couple of issues. I am using the Mac version(V 2.30) with a J-Link Base; the target is a STM32F427 controller running a test application on FreeRTOS. I have encountered the following issues:

    - There are no interrupts shown in the GUI except the SysTick, although I successfully applied the patch on FreeRTOS (the test software uses the UART1 and both USB_OTG interrupts).

    - The CPU frequency is shown as 10 500 000 Hz, which is wrong (it should be 168 MHz); if I modify the lines below:

    #define SYSVIEW_TIMESTAMP_FREQ (configCPU_CLOCK_HZ /*>> 4*/) ==> in SEGGER_SYSVIEW_Config_FreeRTOS.c
    #define SEGGER_SYSVIEW_GET_TIMESTAMP() ((*(U32 *)(0xE0001004))/* >> 4*/) ==> in SEGGER_SYSVIEW_Conf.h

    then the clock is correctly shown, but I am not sure that this is the right way to solve this issue.

    - I am also a bit confused of why SystemView shows two Idle tasks.

    - Related to the GUI, the Preferences are not persistent: after closing and restarting the application, the preferences are lost (at least for the Mac version).

    - Also related to the GUI, the haptic of zooming using a track pad (instead of a mouse) is awful, uncontrollable. Trackpads nowadays offer much more flexibility than a mouse. Zooming could be implemented using a typical trackpad function (two fingers zoom). I believe Windows can do this too now. In any case, zooming using the scroll wheel is a very bad UI element (fortunately it can be switched off in preferences; unfortunately, this change is lost when leaving the program).

    Attached is a snapshot showing most of the issues I wrote about.

    As a long time user of Segger products I am confident that SystemView will be constantly improved. Keep up the good work!

    Lix
    Images
    • system_view.png

      257.11 kB, 1,293×819, viewed 592 times
  • to show more interrupts, you have to instrument them with some code so that SystemViewer gets the needed information:

    Source Code

    1. /** * @brief This function handles Ethernet interrupt request.* @param None * @retval None */
    2. void ETH_IRQHandler(void){
    3. traceISR_ENTER();
    4. ETHERNET_IRQHandler();
    5. traceISR_EXIT();
    6. }


    plus you have to add in your platform specific _cbSendSystemDesc function the corresponding ISR description

    Source Code

    1. static void _cbSendSystemDesc(void) {
    2. SEGGER_SYSVIEW_SendSysDesc("N="SYSVIEW_APP_NAME",D="SYSVIEW_DEVICE_NAME",O=FreeRTOS");
    3. SEGGER_SYSVIEW_SendSysDesc("I#15=SysTick");
    4. SEGGER_SYSVIEW_SendSysDesc("I#77=EthRX");
    5. }



    the time scale is also wrong for me.

    and one thing i'm facing are overflows. even if i don't instrument any interrupts but just do a iperf test with my tcpt/ip stack, the frequent thread swiches lead to a crash of the SystemViewer Software.

    PS.
    i'm not amused by your forum software. not possible for me to format source code with line breaks :(

    The post was edited 1 time, last by pruesch ().

  • Hi,


    i'm not amused by your forum software. not possible for me to format source code with line breaks

    I just edited your post, it works fine for me. Did you maybe copy & paste text with \n endings (not windows) ?

    Best regards,
    Niklas
    Would you like to be added to the J-Link software update notification list, so you get informed automatically when a new version becomes available?
    Just write me a PM or in case you want to subscribe to it yourself, please use this link: Link
    Notification for J-Link, J-Link Debugger, SystemView & J-Scope: Link
    Notification for Embedded Studio: Link
  • Hi,
    - The CPU frequency is shown as 10 500 000 Hz, which is wrong (it should be 168 MHz); if I modify the lines below:



    #define SYSVIEW_TIMESTAMP_FREQ (configCPU_CLOCK_HZ /*>> 4*/)
    ==> in SEGGER_SYSVIEW_Config_FreeRTOS.c

    #define SEGGER_SYSVIEW_GET_TIMESTAMP() ((*(U32 *)(0xE0001004))/* >> 4*/) ==> in SEGGER_SYSVIEW_Conf.h



    then the clock is correctly shown, but I am not sure that this is the right way to solve this issue.
    The Cycle Frequency is not the CPU frequency, but the frequency of the SystemView timestamp.
    The CPU frequency is not really required in SystemViewer.
    - I am also a bit confused of why SystemView shows two Idle tasks.
    This is because in FreeRTOS Idle is a "real" task.
    You can add following lines at the start of SYSVIEW_UpdateTask() and SYSVIEW_AddTask() in SEGGER_SYSVIEW_FreeRTOS.c

    C Source Code

    1. if (memcmp(pcTaskName, "IDLE", 5) == 0) {
    2. return;
    3. }

    We will add it to the official sources, too.

    - Related to the GUI, the Preferences are not persistent: after closing
    and restarting the application, the preferences are lost (at least for
    the Mac version).
    The preferences should be persistent, we will check if they might get lost on OS X.

    - Also related to the GUI, the haptic of zooming using a track pad
    (instead of a mouse) is awful, uncontrollable. Trackpads nowadays offer
    much more flexibility than a mouse. Zooming could be implemented using a
    typical trackpad function (two fingers zoom). I believe Windows can do
    this too now. In any case, zooming using the scroll wheel is a very bad
    UI element (fortunately it can be switched off in preferences;
    unfortunately, this change is lost when leaving the program).
    We will add two finger zoom to the wishlist.
    Zooming with the scroll wheel will stay in place for mouse users, but as you already figured out, it can be disabled.
    You can than also zoom with Ctrl/Cmd + +/-

    Best regards
    Johannes
  • Thank you Pruesch and Johannes. Indeed, the interrupt issue was solved by instrumenting the respective interrupts. However, I find the incorrect display of the processor speed as confusing, even though the time scale in SystemView is apparently correct.