Posts by GVG

    Hello SEGGER Team,

    I have recently started to use SEGGER’s SystemView to visualize interrupt execution on an ARM Cortex-M4 CPU. I have managed to set up everything and integrate SystemView into my project based on this User Guide: https://www.segger.com/downloads/free-utilities/UM08027

    I am not using any embedded RTOS, my application is bare-metal and for the time being, I only want to use SystemView to monitor interrupt executions. Everything works well, except one thing: there is an issue that SystemView does not see the interrupts until an interrupt fires. For example, all of the interrupts in the Contexts window (Page 34 in the user guide) only become visible after an interrupt fires.

    At the beginning of main I call:
    void SEGGER_SYSVIEW_Conf(void);

    Which calls:
    void SEGGER_SYSVIEW_Init(U32 SysFreq, U32 CPUFreq, const SEGGER_SYSVIEW_OS_API *pOSAPI, SEGGER_SYSVIEW_SEND_SYS_DESC_FUNC pfSendSysDesc);

    and

    void SEGGER_SYSVIEW_SetRAMBase(U32 RAMBaseAddress);

    I also implemented: static void _cbSendSystemDesc(void); which serves as the input parameter of pfSendSysDesc in the SEGGER_SYSVIEW_INIT(...) function.
    In _cbSendSystemDesc(void) I use: void SEGGER_SYSVIEW_SendSysDesc(const char *sSysDesc) to send all the information related to interrupts in the form “I#<interrupt_id>=<interrupt_name>”.

    So eventually, all the system information (basically the names of the interrupts) become available in SystemView but I have to wait until the first interrupt is fired. Is there a way that SystemView displays all of the interrupts, even if none of them was fired? (But once the recording started, of course.)

    Thank you very much in advance!

    Hello SEGGER Team,

    I have made some experiments with my EFM32HG322F64 MCU and experienced the following. If I want to write 1024 or more Bytes into the FLASH then other parts of the given sectors get erased (please see dump1.bin). This MCU I’m using has 64 kByte FLASH and 1 kByte sector size, but I managed to reproduce this phenomenon with other MCUs and chips as well, so it is definitely not the fault of the MCU I’m using right now. It is also important to mention that this issue only occurs if I write 1024 or more Bytes and the sector size did not influence this (I tried with other MCUs as well where the sector size was smaller or larger). However, if I write less than 1024 Bytes then there is no problem, regardless of the starting address and/or crossing sector boundary.

    Let’s say I want to write 1024 Bytes 0xAAs in the range of 0x000 – 0x400 sector. Everything works well. However if I cross the sector boundary, let’s say 0x001 – 0x401 then other parts of the given sectors gets erased (other sectors remain intact, please see dump1.png and dump1.bin):

    The interesting part is that if I create 3 kBytes of 0xBBs and first load it then this problem does not occur, so other parts of the sectors do not get erased (please see dump2.png and dump2.bin):

    I have collected the commands I’m using via J-Link Commander in .txt files (JLinkCommanderCommands1.txt and JLinkCommanderCommands2.txt) and I also attached the .bin files so that you can also reproduce the issue.

    Have you seen such an issue before and could you propose how to fix it?

    Thanks in advance