It has been already two months after the Feb 2016 release, and so much things are going on, so a new release was overdue. Today I have released a new version of the McuOnEclipse components on SourceForge with the following main changes and features:
- Kinetis SDK v2 with Processor Expert: Now many components can be used even with the Kinetis SDK v2.0 even with the Kinetis SDK not having Processor Expert included.
- Updated Segger SystemViewer to v2.32a with post-mortem and static buffer support
- Updated Segger RTT to v5.10u and fixed an issue with interrupts on Cortex-M4
- FreeRTOS Thread Awareness with OpenOCD
See readme on SourceForge for the full history.
The Segger SystemViewer has been updated to version v3.32a. The interface exposes now the printf() function:
Previously the RTT was using the FreeRTOS critical section calls if FreeRTOS was used. This could cause issues if Segger RTT calls were used from an interrupt context. Now it is using its own critical section handling and masks interrupts up configMAX_SYSCALL_INTERRUPT_PRIORITY.
If FreeRTOS is used, then the Segger RTT ‘max blocked interrupt level’ setting is ignored and the RTOS blocked interrupt level is used instead.
The SystemViewer has been updated to v2.32a which includes static buffer and post mortem tracing (see https://www.segger.com/systemview.html).
With Post Mortem it is possible to attach to a crashed system and find out what it was doing as last thing.
With static buffers the amount of stack space needed is reduced, and it is using a global memory buffer instead.
FreeRTOS and Thread Debugging in Eclipse
The RTOS has been patched to allow thread aware debugging in Eclipse and to show the tasks in the Eclipse debug view:
This deserves its own article, so hopefully I can post the tutorial on that one soon.
Kinetis SDK v2 Support
As the NXP Kinetis SDK does not include any Processor Expert support, I was looking into ways how to continue to use the McuOnEclipse components with the Kinetis SDK v2.x.
For this, many of the components have now a reference to the Kinetis SDK component:
With using newer components, you might be asked to add the Kinetis SDK component to your project and specify that in the component settings. That change is backwards compatible, so you can open ‘newer’ projects with ‘older’ versions of the components. But using the new components might mean that you need to update your project component settings.
Inside the Kinetis SDK component there is now a setting to specify the SDK to be used for the project:
With this, it is now possible for some components to create code for the Kinetis SDK v2.x:
For example I can now use the LED component and others with the Kinetis SDK 🙂
The functionality is still ‘experimental’, so I will continue to work on that support. And this feature alone probably deserves an article on its own :-).
This release comes with a set of bug fixes and new features, and can be installed over an existing component installation. With the added support for the Kinetis SDK v2.0 existing projects needs to update the settings which should be be very easy. I plan to write follow-up articles about the FreeRTOS thread debugging in Eclipse plus how to use the new concept and components with the Kinetis SDK v2.0.
Happy Updating 🙂
- SourceForge site: https://sourceforge.net/projects/mcuoneclipse/
- Installing the components: https://mcuoneclipse.com/2014/10/21/mcuoneclipse-releases-on-sourceforge/
- Segger SystemViewer: https://www.segger.com/systemview.html
if I create a new project by KDS3.2 with sdk2.0, I can’t use PE, is this right?
yes, that’s correct: you cannot create a project with the SDK v2.0 wizard with Processor Expert enabled. There is no Cpu component for the KL27Z. What I’m showing in this post basically is to have two projects: one with Processor Expert (for a dummy Kinetis device which is supported), and a normal SDK v2.0 project. I’m using then the generated code from the Processor Expert project in the SDK project. Of course I don’t have all the hardware components (low level drivers), but that’s not a big problem as they are covered by the SDK files.
thanks for your idea.
my MCU is KL27
Thanks again for your work Eric!
I would appreciate a tutorial on the thread aware debugging in Eclipse when you get to it. In the meantime do you have any reference links I could read relating to what you’ve achieved.
Here is something which just came out today: http://jacobjennin.gs/post/142301106015/eclipse-thread-awareness-with-freertos-and-j-link
maybe my comment is valuable to you:
here is what I achieved:
Hi, I’ve spent enough time trying to create a square wave pulse and variable and achieved but I need the variable that is controlled by the pulse also has a counter. How can I do this?
PS: Also I would like to know if there is any component to handle 4×4 matrix keypads
I’m not really clear what kind of square wave you want to generate? Using the Kinetis FlexTimer you should be able to do pretty much anything?
About the 4×4 matrix keyboard: I started an article and a component for this a long time ago, but never really finished it 😦
Thank you for answering now I have solved the problem of the generation of pulses with variable frequency. With regard to serious matrix keyboard much help it could finish, also thanks for answering your page me has been very helpful.
may be i dont understand somethings…
In my old project, developed in CW MCU 10.6.4 with an MK64F and with PE and without any SDK, i have used yours components LED (with pwm) and WAIT…
After update this components-packages, at compile/builder time, every of this components (LED and WAIT) mark an error, because the builder/compiler dont found any SDK.
Where i make a mistake?
see https://mcuoneclipse.com/2016/04/03/mcuoneclipse-components-3-apr-2016-release/ and Kinetis SDK v2 support: I had to add the KinetisSDK component to many components to make them working with the Kinetis SDK.
If you are not using the SDK, it still needs that component (to know that you are not using the SDK), simply have the SDK selection to ‘none’.
I hope this helps,
but my problem is the absence of option “none” on my CW…
Into the form of “components inspector”, at value-field of SDK (below Component Name), the system suggest only “New component[KinetisSDK]…” but not the option “none” and for default it prompt the option KSDK1.
The unique solution is to reload the previous release of components-package, since 2016-02-07.
May be an errata configuration on my CW?
It is an option inside the component, see https://mcuoneclipse.files.wordpress.com/2016/04/kinetis-sdk-setting.png
LikeLiked by 1 person
how can I use FSL_USB_Stack with kl27z FOR HID class?
no, this is not supported. Because the KL27Z is not supported with Processor Expert (without the SDK).
thanks a lot
Hello I think I’ve found something of a bug….
Updating CriticalSection (CS1) to 1.008 seems to cause the SDHC sub-component of my FAT_FileSystem/FatFsMemSDHC break. it somehow decides that sdhc1_SetWriteProtecton is ill-defined??
‘Building file: ../Generated_Code/SDHC1.c’
‘Invoking: Cross ARM C Compiler’
arm-none-eabi-gcc -mcpu=cortex-m4 -mthumb -O0 -fmessage-length=0 -fsigned-char -ffunction-sections -fdata-sections -g3 -I”C:/Code/kinetis/SF4V/Static_Code/PDD” -I”C:/Code/kinetis/SF4V/Static_Code/IO_Map” -I”C:/Code/kinetis/SF4V/Sources” -I”C:/Code/kinetis/SF4V/Generated_Code” -std=c99 -MMD -MP -MF”Generated_Code/SDHC1.d” -MT”Generated_Code/SDHC1.o” -c -o “Generated_Code/SDHC1.o” “../Generated_Code/SDHC1.c”
../Generated_Code/SDHC1.c:1474:12: error: conflicting types for ‘SDHC1_SetWriteProtection’
LDD_TError SDHC1_SetWriteProtection(LDD_TDeviceData *DeviceDataPtr, LDD_SDHC_TWriteProtectType Type, uint32_t Address, bool Protected)
In file included from ../Generated_Code/FATM1.h:64:0,
../Generated_Code/SDHC1.h:597:12: note: previous declaration of ‘SDHC1_SetWriteProtection’ was here
LDD_TError SDHC1_SetWriteProtection(LDD_TDeviceData *DeviceDataPtr, LDD_SDHC_TWriteProtectType Type, uint32_t Address, bool Protected);
make: *** [Generated_Code/SDHC1.o] Error 1
I don’t really understand /how/ such a change can effect things but ????
I’ve found that the CriticalSection generator 1.008 has a bug:
-/* Include shared modules, which are used for whole project */
/* Include inherited beans */
+#if KSDK1_SDK_VERSION_USED == KSDK1_KSDK1_SDK_VERSION_NONE
+/* Include shared modules, which are used for whole project */
+ #include “PE_Types.h”
+ #include “PE_Error.h”
+ #include “PE_Const.h”
+ #include “IO_Map.h”
+ #include “Cpu.h”
the KSDK1_KSDK1_SDK_VERSION_NONE definition is a typo, it includes KSDK1_ twice
thanks for reporting and for filing the issue on GitHub as well (https://github.com/ErichStyger/mcuoneclipse/issues/31). I plan to release a new version on the week-end. If you need it earlier, please let me know.
yes, it is a bug (https://github.com/ErichStyger/mcuoneclipse/issues/31) caused by a wrong macro. I’ll have to release a new version of the components as soon as I can.
I have released the new version which includes that fix: https://mcuoneclipse.com/2016/05/08/mcuoneclipse-components-8-may-2016-release/
Pingback: FreeRTOS Thread Debugging with Eclipse and OpenOCD | MCU on Eclipse