McuOnEclipse Components: 25-June-2016 Release

SourceForge

SourceForge

A new release is available on SourceForge, with the following main changes:

  • Support for FreeRTOS and Cortex-M7
  • Segger SystemView updated to V2.38
  • Components for NXP Kinetis SDK V1.3
  • Fixed bug in Wait component (register handling for GCC and ARM)
  • FatFS supports FreeRTOS V9.0.0 with static memory allocation
  • FreeRTOS shell and task list with static memory allocation
  • Floating point conversion routines in Utility
  • FreeRTOS component shows NVIC mask bits

FreeRTOS on ARM Cortex-M7

With my first ARM Cortex-M7, this is now supported too, see “First steps: ARM Cortex-M7 and FreeRTOS on NXP TWR-KV58F220M“. Several components have been updated, mainly FreeRTOS which has an option for Cortex-M7:

ARM Cortex M7 Selection in FreeRTOS

ARM Cortex M7 Selection in FreeRTOS

The component shows the NVIC bits as extra text:

NVIC Interrupt Bits

NVIC Interrupt Bits

I have added now an extended task list command to FreeRTOS and the shell:

FreeRTOS TaskList

FreeRTOS TaskList

That way I can see the list of task, if they are allocated static or dynamic, the handles and the memory allocation, stack and performance information.

Segger SystemView V2.38

The Segger SystemView supports the latest V2.38 which has two functions to enable and disable events:

Enable and Disable Events in SystemView

Enable and Disable Events in SystemView

With this the data amount and traffic can be reduced and limited to the events interested.

NXP Kinetis SKV 1.3

The SDK_BitIO component supports now the NXP SDK V1.3 with

SDK_BitIO

SDK_BitIO

For the SDK a pin symbol name has to be specified:

Pin Symbol Name

Pin Symbol Name

Which then can be used in the application using the SDK v1.3 API:

GPIO_DRV_TogglePinOutput(LED_RED);

The FSL_USB_Stack component has experimental support for the SDK: for this the initialization has been reorganized:

USB Initialization

USB Initialization

If used with the SDK, the application has to provide its own USB0_Init function to initialize the USB peripheral.

Utility

A function has added to the Utility module to convert a floating point value into a string:

Float Conversion

Float Conversion

Summary

I hope this updates and features are useful for you. The release is available on SourceForge: https://sourceforge.net/projects/mcuoneclipse/files/PEx%20Components/

See “McuOnEclipse Releases on SourceForge” how to install the update.

Happy Updating 🙂

18 thoughts on “McuOnEclipse Components: 25-June-2016 Release

  1. Hi Erich, sorry for so many querries.
    I am trying to keep my tools up-to-date. Some 14 days ago I have downloaded your PEx Component Package ‘Components 2016-05-29’, it contains FreeRTOS component version 01.489. This is exactly what my project shows by examining Repository for the FreeRTOS component.
    I have found a newer package on your web ‘Components 2016-06-25’ and I have imported both files into the same folder (MyComponents) thus replacing the previous ones. The FreeRTOS version says 01.502.
    Then I realized I have no idea how to freshen the selected component in my project. Just to rebuild it seems to be not enough. And of course I do not want to delete the previously (painfully) configured revision and instert the new component instead.
    What is the correct method of “freshening” the already used component in my project?

    Like

    • No worries for questions, as long as I’m able to answer them 🙂
      If you would subscribe to this blog (there is a link on the right side for several ways), you would get automatic notes about new posts. I post articles like https://mcuoneclipse.com/2016/06/25/mcuoneclipse-components-25-june-2016-release/ to inform about new releases and the changes.
      FreeRTOS 01.502 is the correct (latest) version. You can see this in the versions.txt inside the zip file.
      So if you load the new components (both parts), it will automtically update your components with the new ones. I work hard to keep things compatible and easy to upgrade (not always possible).
      Good news is that you have now the latest version of the components.
      To get the new code, usually you simply need to generate code again. To be sure that you get everything newly generated, you might delete the Generated_Code folder inside your project.
      After importing the new components, it is recommended to restart Eclipse. That way it will refresh the list of components too.

      I hope this helps,
      Erich

      Like

      • Hi Erich,
        inexperienced (and stupid) me. The way to force the project to use the newest installed components is to press ‘Generate Processor Expert Code’ button. Yes, deleting the Generated_Code folder might force the system to regenerate it as well. During the code generation I get messages:
        Loading MK10_t1 project components – component “My Components/FreeRTOS UUID: version:01.489” taken from repository “My Components”, with different component version:01.502
        Loading MK10_t1 project components – component “My Components/Utility UUID: version:01.120” taken from repository “My Components”, with different component version:01.124
        which is exactly what I was looking for.
        Ludek

        Like

  2. Hi Erich,
    For my current project what I want to use is KDS 3.2, SDK1.3, Processor Expert, and some of the beans you’ve written for processor expert – notably FLS_USB_CDC_Device.( from this June 25 release)

    When I try to compile my code which is just this in main,c:
    CDC1_Init();
    for(;;) {
    CDC1_SendString(“USB works!”);
    }

    I get errors when the CDC1.c file builds, it is looking for “hidef.h” and not finding it.
    also types.h and derivative.h are not found compiling other CDC source files in generated code.

    There is obviously something I am missing, could you tell me what it is?

    Brynn

    Like

    • Hi Randy,
      yes, the Segger SystemView and Percepio Tracealizer hooks are included. But I missed to add a few ones to include counting the scheduler time: I have fixed this in https://github.com/ErichStyger/McuOnEclipse_PEx/commit/3e46207a68f26c05d667159ea590f9aaa4a66265 and https://github.com/ErichStyger/McuOnEclipse_PEx/commit/1ac62682c5b0f4cd422d7e2f614bd6622f34c97a which are subject to the next release.
      I already have updated the Segger SystemView to V2.40, but that’s again is for the next release.
      Bottom line is that you should have everything, except that the scheduler time is not showing up in the trace correctly. I hope that’s not an issue? Otherwise I could prepare a hot-fix package, or you can simply use the GitHub repository?

      Like

      • Oh good. I can use the git repo… Not clear on how to replace the others on KDS. Can I import from the file system rather than some sort of exported bean?

        I grabbed the release off sourceforge and so have the Segger 2.4 things.

        Now, the project i have is in MQXlite so the question gets to be which is the less painful road: Porting the project to FreeRTOS or adding the hooks into MQXlite…

        Thanx for your work here. Good stuff.

        Like

        • You can clone the GitHub repository (https://github.com/ErichStyger/McuOnEclipse_PEx) to your local disk where Processor Expert has stored the components. The location depends on the host machine (it is C:\ProgramData\Processor Expert\PEXDRV_PE5_3 on my Windows 10 machine, see https://mcuoneclipse.com/2012/06/30/cde-hacking-where-is-my-stuff-a-dissection/). The layout in the GitRepo is exactly that structure. So yes, you can import from the file system, but it needs to be placed in a special folder.
          >>I grabbed the release off sourceforge and so have the Segger 2.4 things.
          SourceForge currently hosts the Segger V2.36 version. V2.40 is on GitHub.

          MQXLite: I have not used MQXLite for a long while. The bigger issue is that SystemView does not support MQX or MQXLite. SystemView comes with a manual which details the needed steps to port it, but this is really more expert stuff, and problably a few days of work. But you might give it a try.
          My recommendation would be to use FreeRTOS instead: then you are ready for the future, have a better RTOS and tools.

          Like

        • Git into the PEX directories works just fine. Thank you.

          Converting this to FreeRTOS isn’t all that easy either… it doesn’t like to play nice with the PE things all that well…..

          One of the interesting things I ran into immediately:

          Using KDS3.2 on a non-SDK project (use this to avoid adding the OSA layer in PEX). Using FreeRTOS 9.0.0 from github (newest as of this posting 22-Aug-16)

          If you select the “static Sources” custom port option in the component inspector (PEX) it creates the whole of the FreeRTOS tree in the “Generated_Code” directory tree which is a good thing from a git viewpoint but nothing can find any of the .h files and compiles crash missing these (cleanup involves a LOT of “look here” in the compiler directives.

          If you don’t select the “static Sources” custom port option, PEX creates the .h file associated in that directory directly so everything finds them just fine.

          I also ran into conflicting data types… particular the definition of bool is different at time in the project. It’s that “at times” that’s a bit of an interesting problem.. I haven’t tracked that down just yet.

          Still, I’m thinking that, yes, FreeRTOS is probably the future so I’m biting this bullet and attempting to run with it.

          Like

        • Hi Randy,
          I had created that ‘static’ option to easier compare/take out the sources out of Processor Expert structure. But that requires to manually add the path to the header files as they are nto in the root of the Generated_Code folder. I have not found an automatic way to add the paths to the compiler settings, so this has to be done manually.
          About bool: yes, this has been a big pain recently because of include order, and other libraries are defining ‘bool’ types too. Then it depends on what is included first. I have been burnt several times by this already, and adding the Kinetis SDK files makes things even worse. FreeRTOS adds to this as with the default include of “FreeRTOS.h” not all headers are included, you need to include “tasks.h” and others. I had that solved with the include of “FRTOS1.h” (or whaterver name you gave the component. So including that one first might solve your issue.

          Like

      • Using the git repo, I *think* the code says 2.40 but when I include in in PEX and look at it, it claims to be 2.38 in the UI.

        Like

  3. I should note that I’m not using the SDK but using the PEX LDD structures. It looks like FreeRTOS has a different version of bool than PEX does and depending on how PEX is putting together the .c files for the LDDs depends on how bool gets defined (often out of sync with its .h file)

    Like

What do you think?

This site uses Akismet to reduce spam. Learn how your comment data is processed.