McuOnEclipse Components: 05-July-2015 Release

I know: A new McuOnEclipse Processor Expert components release was long overdue. But I have been extremely busy in the last months, but now the university semester is over, and I have finally some spare time to catch up on a lot of things. So here we go: there is a new component release available on SourceForge (https://sourceforge.net/projects/mcuoneclipse/files/PEx%20Components/): Components 2015-07-05.zip

McuOneEclipse Components on SourceForge

McuOneEclipse Components on SourceForge

The release is compatible with the earlier release, so you can download and install the files over an existing version. See McuOnEclipse Releases on SourceForgehow to download and install the files.

What’s New

The FreeRTOS, PercepioTrace (FreeRTOS+Trace) components have been extended to properly support the Freescale Kinetis SDK. Before, the Trace part has not been enabled to be used with the Kinetis SDK.

Kinetis SDK Project with FreeRTOS+Trace

Kinetis SDK Project with FreeRTOS+Trace

Changes have been made to the FreeRTOS and HardFault components to support GNU LTO (Link Time Optimizations), basically adding the information the to sources that they properly link with LTO enabled.

The 24AA_EEPROM supports now 24AA16 devices (in addition to 24AA8, 32, 256, 512 and 1025):

24AA16 Device Support

24AA16 Device Support

RingBuffer has added Init() and Deinit() functions, added Peek() function to inspect buffer item without removing it:

RingBuffer

RingBuffer

In the FSL_USB_Stack, the USB CDC and HID components have settings for bus power and/or self power settings:

USB Component with Power Options

USB Component with Power Options

The Utility component has a new function strcatPad() to add a string with padding pattern:

Utility

Utility

The FSL_USB_Stack components have extended Deinit() functions to properly deinitialize status variables and global class driver states now:

USB Deinit

USB Deinit

KinetisTools has added command line support for software system reset (see How to Reset an ARM Cortex-M with Software):

Kinetis Tools

Kinetis Tools

Bug Fixes

  • Utility: fixed issue with printing negative fixed point values.
  • SD_Card: component is enabling now only one SPI interface at creation time.
  • FreeRTOS: fixed handling of configMAX_SYSCALL_INTERRUPT_PRIORITY for Keil compiler.
  • Timeout: changed condition order to avoid out-of-bound access (see Open Source Static Code Analysis: Cppcheck with Eclipse)
  • FreeRTOS: fixed heap_4.c implementation (the heap size was not written correctly: configfTOTAL_HEAP_SIZE instead of configTOTAL_HEAP_SIZE)
  • GenericSWSPI: fixed error (Generator: FAILURE: at line 276: Error in including “Drivers\Common\SynchroMasterSetIdleClockPolarity.Inc”)

The full and detailed information about all the changes can be found on the GitHub repository: https://github.com/ErichStyger/McuOnEclipse_PEx

PS: I still have a pile of extensions and possible bugs to dig through. If you don’t find your thing included in above list, hopefully I can include it into the next release.

Happy Updating 🙂

Advertisements

28 thoughts on “McuOnEclipse Components: 05-July-2015 Release

  1. Hey Eric thanks for Component.
    I recently tested a new board with L26Z/QFN48 using the Components –
    and it took 15minutes to create a two LED blinkey test and load in over JTAG proving the basic board,
    and 20minutes to load/configure in a CLS1 debug tester running at 57600baud off internal clock
    and then 30minutes to get RTC configured for 32Khz external xtal and printing elapsed time.
    Absolutely amazing just to be able to throw together a new environment. Many thanks for all your blogging and publishing.
    To keep some stability I did it with KDS200, and when it worked I repeated it with KDS300 – not selecting KSDK1.2 in the project- which also worked nicely on the KDS300.
    Whew, proving two new items – my new board and the new KDS300 launch pad toolchaing.
    So with KDS300 there is a new option in Importing the Components to place it in a repository- either “My Component” or “CreateAnew..”.
    On choosing Create A new.. wanted a directory to store it, with defaults/ suggesting where to put the directory.
    so I created a repository labeled “McuOnEclipse” and located it in c:\Freescale\KDS_3.0.0\PeRepositories
    where its created the two directories Beans / Drivers
    So I guess it would have been better to have the directory placed in …
    c:\Freescale\KDS_3.0.0\PeRepositories\McuOnEclipse

    Any thoughts on directories to place the McuOnEclipse components?
    thanks

    Like

  2. Pingback: Processor Expert Component Repositories | MCU on Eclipse

  3. Hello,

    The FreeRTOS Components doesn’t work for me. I run my code with the old version of the component and it works. When I try to run the same code with the new version it doesn’t work anymore. The task is never called…

    My temporary solution is to copy the old FreeRTOS component from other project. My board is the FRDM-K64F.

    Thank you for your time,
    Regards,
    Matías.

    Like

    • Hi Matias,
      could you share more details abou this? I have no issues with the FRDM-K64F board. If you can: send me your project to the email address listed on the About page of this blog and I can have a look?

      Thanks,
      Erich

      Like

  4. Erich,
    is the FreeRTOS component and task aware debugging included in the standard release of the Freescale Processor Expert?
    cheers!

    Like

    • Hi Paulo,
      FreeRTOS aware debugging plugins are not inluded in any of the Freescale deliverables/installers. But for Eclipse and GDB based IDE’s (e.g. Kinetis Design Studio), you can install one, see https://mcuoneclipse.com/2013/08/04/diy-free-toolchain-for-kinetis-part-5-freertos-eclipse-kernel-awareness-with-gdb/

      As for FreeRTOS: the latest Kinetis SDK comes with a component for FreeRTOS. But I do not recommend it as is using an older (v8.0.0) version of the RTOS, and has much less functionality included. I recommend that you use the McuOnEclipse FreeRTOS component instead :-). I’ll post shortly an article about how to use it with the Kinetis SDK.

      Like

      • Hi Eric,

        Does the updated version of your FreeRTOS component work with the fsl_os_abstraction layer? I tried to get it to work but even with choosing your component in the abstraction layer i end up with a load of undefined calls to the original FreeRTOS functions in fsl_os_abstraction_free_rtos.c Am i just doing something stupid?

        Thanks

        Tom

        Like

        • Hi Tom,
          yes, it does :-). But you cannot use my component in the abstraction layer itself (SDK v1.2 comes with its own component). I started on the weekend on an article about all the details. I should be able to publish it tonight, would it be ok to wait until then?
          Erich

          Like

      • By the way I would be very grateful if the tutorial goes into the specifics of using it with the 1.2 component, as this is exactly the issue that I face. I need to use their os abstraction component so I can utilize the clock manager component, which is needed for lots of other components in the SDK, but i couldnt work out to make it all play nicely together with your FreeRTOS component. Your component seems preferable to the Freescale provided one not least due to your FreeRTOS+Trace integration so im definitely eager to get it all working. Thanks again for all the work you do, this site is an invaluable resource for learning Kinetis devices and embedded programming.

        Like

      • Interestingly when i open your project it says the version I have of your FreeRTOS component doesnt match and is not supported for my selected processor. I have version 01.414 which is the most recent according to your sourceforce archive but the project requires 01.426. Thanks

        Like

        • Hi Tom,
          that message about “not supported for the selected processor” is a bogus warning/bug in this version of Processor Expert. I have filed a bug report about this already. You can ignore it and trust me that it is supported 🙂

          Like

      • Yeah, rolling target, and I’m working right now with FreeRTOS v8.2.1. I fixed a few things for better integration with the SDK. I think I might better align then with the released version from July 5th?

        Like

      • great stuff, that project you committed and the new version of your FreeRTOS component was what i needed to get up and running. Thanks so much

        Like

    • out of interest is there a reason you dont include vPortYieldFromISR in the PE view sidebar functions for your component? I did have a search around on the site but didnt dig anything up

      Like

      • you know i never noticed it wasnt public! almost every example i saw online to explain how to get a context switch in an ISR used exactly that function, so it ended up in my program as well. Is there a better call to make in an isr then? will taskYIELD, for example, ensure an interrupt safe context switch?

        Like

        • Hi Tom,
          you might check the implemtation of taskYield(), which is
          #define portYIELD() vPortYieldFromISR()
          for ARM Cortex-M at least. So using portYIELD() will do what you need: it will raise a PendSV interrupt:
          void vPortYieldFromISR(void) {
          /* Set a PendSV to request a context switch. */
          *(portNVIC_INT_CTRL) = portNVIC_PENDSVSET_BIT;
          /* Barriers are normally not required but do ensure the code is completely
          within the specified behavior for the architecture. */
          __asm volatile(“dsb”);
          __asm volatile(“isb”);
          }

          Like

  5. Eric, I’ve tried to create a sample project with MMA8451 driver in it for TWR-K65, FRDM-K64 and FRDM-KL26 boards – all unsuccessful.
    I am using KDS 3.0.0 on Mac. Essentially, the problem is that when the component is added, it asks to select an I2C driver – LDD or non-LDD. No matter what I choose, eventually I end up in the I2C component configuration page where it says “not supported by current processor”. The Accelerometer component insists on creating its own Generic I2C component. That one in turn creates Generic Software I2C, which says that it’s unsupported on current processor.
    In fact you can try creating Generic Software I2C directly and see the same problem

    I suspect that maybe using these components may conflict with the KSDK, but KDS3 does not seem to allow a non-SDK projects

    Like

    • Yes, you are correct: if using an SDK project, all these existing components, including the ones I have created, as soon as they talk to the hardware (SPI, UART, I2C, etc) do *not* work any more. And all the newer parts are only supported with SDK projects, not with non-SDK ones. The K64 and K22 are one of the last parts which had both SDK and non-SDK-ProcessorExpert support. So you should be able to use it for the FRDM-K64F board (I’m able to use pure Processor Expert projects with it).
      One solution I’m thinking about is to add some software layers to all the 150+ components I have created, to make them work with the SDK. I have not done that, as this would be a massive amount of work. That’s why I have not really adopted all the new Freescale parts because of all this incremental work necessary.

      Like

  6. Pingback: Tutorial: Using Processor Expert and FreeRTOS with Kinetis SDK V1.2 | MCU on Eclipse

  7. Hi Erich,

    is this the latest PEx components?
    I looked in LCDHTA component (1.022) for a “read” display method but I didn’t find. Do you intend to add this method soon?

    I’m facing a problem that read function appers to solve. My LCD display is powering down while the microcontroller is still running. When the LCD is powered up again it is not reinitialized by the microcontroller because it is done during microcontroller start up. Thus it shows that black half screen. From time to time I will check display condition to see if it is necessary a reinitialization. Using a periodic initialization works, but it is not so elegant and it is possible to see the reset on display.

    If you do not intend, I will need to write the code to add in my component’s library or find another solution.
    Thanks and congrats for creating/updating so many components.

    Like

What do you think?

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out /  Change )

Google+ photo

You are commenting using your Google+ account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s

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