Hi,
I'm trying to learn the workings of/with the Keil RTX5, using the supplied tutorial.
During the first steps I do encounter a compiling error in the function "uint32_t os_Error (uint32_t code, void *object_id)". All the error codes os_ErrorStackUnderflow, os_ErrorISRQueueOverflow, os_ErrorTimerQueueOverflow, case os_ErrorClibSpace and os_ErrorClibMutex are unknown.
What I'm doing wrong?
Any help appreciated, Hans
Actually, I think you are mixing up some different operating systems:
- os_Error was the error handler in our Keil RTX4, but with different parameters. See www.keil.com/.../group__RTX__Global__Functions.html
- The error handler of Keil RTX5 is osRtxErrorNotify. See https://www.keil.com/pack/doc/CMSIS/RTOS2/html/group__rtx5__specific__functions.html#gaf1745a88f9cc60b609ab1c8076bd346d You can also see the correct error notification codes there. You get all the definitions when you include #include "cmsis_os2.h" into your source code as described in our manual.
Regards,Hans
Thanks a lot for your answer. I installed everything (Keil MDK + Tutorial) on a newly created virtual Win10 machine.It worked much better, but I still get an error:
The include chain “rtx_kernel.c -> rtx_lib.h -> rtx_core_c.h -> rtx_core_cm.h” percolates the following problem in rtx_core_cm.h, lines 464 – 465:
#if defined(__CC_ARM)static __asm uint8_t atomic_wr8 (uint8_t *mem, uint8_t val) {
The symblol ‘__asm’ is not recognized, the compiler says “error: expected identifier or ‘(‘”.
Kind regards, (too) Hans
PS: the reason behind this all is that I have to start a new Keil MDK project and I’m trying to use and get acquainted with RTX5. The old project which I inherited uses adapted code from an evaluation board.
I don't know exactly where this comes from, but it seems that there is a mismatch of the compiler versions. When you get an error message for this line, it means that the definition __CC_ARM is set. This is usually only set when the Arm compiler version 5 is selected. If this is the case, you should not get any errors. I assume, that you have selected the Arm compiler version 6 but maybe __CC_ARM is manually defined somewhere in your project. If you can't fix this issue, please tell me which versions of MDK, CMSIS and which Arm compiler you use (hint: MDK 5.35 was released yesterday, CMSIS 5.8.0 two days before). You could also create a support ticket with your project attached to it.
Hans
They might have more than one version installed?
1) Under Project -> Options For Target -> Target tab, on the top-right, I have "Use Default Compiler version 6" 2) In my project, When I open this file and go to line 464: C:\Keil_v5\ARM\PACK\ARM\CMSIS\5.8.0\CMSIS\RTOS2\RTX\Source\rtx_core_cm.h#if defined(__CC_ARM)static __asm uint8_t atomic_wr8 (uint8_t *mem, uint8_t val) {The static line is grayed out - as it should, because I am using compiler 6. My setup:µVision V5.34.0.0Copyright (C) 2021 ARM Ltd and ARM Germany GmbH. All rights reserved.Toolchain: MDK-ARM Professional Version: 5.34.0.0Toolchain Path: C:\Keil_v5\ARM\ARMCLANG\BinC Compiler: ArmClang.exe V6.16Assembler: Armasm.exe V6.16Linker/Locator: ArmLink.exe V6.16Library Manager: ArmAr.exe V6.16Hex Converter: FromElf.exe V6.16