Posts by SEGGER - Johannes

    Hi,

    Quote

    Does 'based' mean you have adopted/modified/improved that library?

    Yes.
    STLPort is not maintained anymore, last release is from 2008. Its standard is C++98.
    We added some features and compatibility changes for later C++ standards to the library in ES.
    Plan is to come up with a new C++ library with a current C++ standard, but there is no immediate schedule, yet.

    The compilers in ES support up to C++14 now.

    Regards
    Johannes

    Hi,

    There are no limitations other than the general ones for Embedded Studio. That is you may not use the Embedded Studio library for commercial use without purchase of a commercial license.

    Embedded Studio also includes a C++ library built for embedded systems, currently based on STLPort.

    The libraries are not available with full debug info but as optimized object code only.

    There are no hidden costs, such as royalties or software rental fees.
    Embedded Studio licenses are perpetual. You purchase it once and can use any update released within one year for as long as you want to.
    After that your you can purchase a support and update renewal to get the latest updates, or you stick with your last version and use that one for the next years.

    Regards
    Johannes

    Hi,

    The technical features of Embedded Studio are all the same for free and commercial licenses.
    You download the exact same setup in both cases. There are no technical limitations with the free licenses.

    The major point is: Without a paid license you may not use Embedded Studio for commercial development.

    We encourage hobbyists and students to start development of embedded systems.
    To start with Embedded Studio is therefore kept simple. You can directly download and install it without registration.
    We do not want to spoil the educational use of Embedded Studio with some arbitrary limits, such as 30 days trial or 32k size limit. Embedded Studio can fully be used for non-commercial and educational purposes.

    When you want to use Embedded Studio for commercial development, i.e. get paid or earn any money with what you develop, you need to get a commercial license.
    Once the license is activated, you can use any Embedded Studio released within your support and upgrade period (typically 1 year) for as long as you want to (even after that year).
    When a commercial license is found you do not get the license pop up anymore. Additionally with a paid license you may get support via e-mail instead of through this forum only.

    Regards
    Johannes

    Hi,

    SystemView has only been used with CCS in combination with embOS, therefore the default combination used the embOS locking mechanism.

    Replacing it with a definition like this should work:

    Regards
    Johannes

    Hi,

    Regarding ID_BASE it is okay to not call SEGGER_SYSVIEW_SetRAMBase or to call it with 0 as base.

    In your recording the start of the SystemInit task is not recorded.
    Therefore SystemView does not know in which context the system currently executes.
    We might improve this behavior to let the system record its current context on start of recording.

    It might be possible that FreeRTOS does not create a task run event when the scheduler is started,
    but I did not verify this.

    What you can try is call SEGGER_SYSVIEW_Start() immediately after SEGGER_SYSVIEW_Conf()/SEGGER_SYSVIEW_Init().
    This will start recording directly.
    You can then either break after that call and connect with SystemView to catch the full recording, or you run and attach at a later point to get the start and everything from when you attached.

    Regards
    Johannes

    Hi,

    Thanks for the explanation.
    Would it be possible to get a recording of the behavior you described?
    That would allow a better analysis of what might go wrong.

    If you get duplicated or invalid events this indicates that your system is not behaving correctly or that the SystemView data cannot correctly be read.

    Could it be possible that you use low-power modes (call WFI) in your application?
    This would also explain why you cannot connect with SystemView while the system is running.

    Regards
    Johannes

    Hi,

    You are right, Cortex-M0+ devices do not have the ICSR[VECTACTIVE] bits implemented.
    Instead you can read the active vector from the IPSR, best implemented in a user-provided function SEGGER_SYSVIEW_X_GetInterruptId():

    Regards
    Johannes

    Hi Marcus,

    In general there should not be a problem, as with STM32F4 devices even auto detection should work.
    So if the control block cannot be found there seems to be an issue with your setup.

    It is correct that J-Link Commander does not give an output, neither will RTT Client if you do not do any prontf output viar RTT.

    Do you run SystemView stand-alone or is there any other connection to J-Link, e.g. a debug session, open?
    Did you select the device in the SystemView configuration dialog?
    Does your system use any low-power mode, i.e. call WFI?

    Regards
    Johannes

    Hi,

    The FreeRTOS plugin in general works, so we would need more information to analyze the problem.

    Are you using the 64-bit or 32-bit version?
    Which version of FreeRTOS do you use?
    Would it be possible to provide your application elf file?
    Do you use a standard eval board or custom hardware?
    Could you provide a Ozone log file of a crashed session? (start Ozone with --logfile=<PathToLogfile>)

    Best regards
    Johannes

    Hi,

    Regarding the 0 timestamps:

    This can happen when the DWT unit is not enabled.
    On Cortex-M3/4 the timestamp is generated from the DWT->CYCCNT, so the cycle counter needs to be enabled and to do this the DWT needs to be enabled as well.
    This is usually done by the debugger, but can also be done by the application.

    if ((CoreDebug->DEMCR & CoreDebug_DEMCR_TRCENA_Msk) == 0) {
    CoreDebug->DEMCR |= 1 << CoreDebug_DEMCR_TRCENA_Pos; // Enable DWT in DEMCR if not done, yet.
    }
    DWT->CTRL |= 1 << DWT_CTRL_CYCCNTENA_Pos; // Enable CYCCNT in DWT_CTRL.

    When there has been a debug session running or you connected with J-Link before, and read the data without a reset,
    then the CYCCNT might have still been enabled and the application generated real timestamps.

    If you do not want to use the CYCCNT, you can of course configure SystemView for any other timestamp source, i.e. the SysTick, too.

    Regards
    Johannes

    Hi,

    Sorry for the delay in response.

    Filter on specific API events from the OS or other modules can now be set with SystemView PRO.
    Otherwise it is only possible to show all or no API functions at all.

    The module description looks correct so far. In addition to M=<ModuleName> you can optionally add V=<VersionNumber>, other parameters are not supported.

    With module name and version number it is possible to load a description file to not need to describe all functions in the module description (and save some memory).
    To do this, place a file SYSVIEW_<ModuleName>_<VersionNumber>.txt or SYSVIEW_<ModuleName>.txt in /description/ of the SystemView installation directory.

    With the current version of SystemView, the registered modules also show up in the System Information, so there you can check that registration worked.

    Best regards
    Johannes

    Hi,

    SystemView loads the most recent J-Link Software.
    If you have a restricted account and installed the J-Link Software with administrator credentials,
    it can happen, that the registry path to the J-Link software is not added to your users HKEY.

    The easiest solution is to copy the J-Link DLL into the SystemView installation directory.
    For more information, have a look at https://wiki.segger.com/Could_not_open_J-Link_shared_library

    Best regards
    Johannes

    Hi,

    Sorry for the late reply.

    Can you check that your target application is still running after you connected SystemView or called SEGGER_SYSVIEW_Start().

    This issue is most commonly caused by a crash of the target application, for example because your stack sizes are too small.

    Best regards
    Johannes