Hello,
a while ago, we updated from RTX4 to RTX5. Since the update the Call stack window doesn't show all threads anymore.
I already tried this: http://www.keil.com/support/docs/4026.htm Now the call stack shows the main thread und the call stack for the main thread works, but all other threads are missing.
This http://www.keil.com/support/docs/4124.htm also can't help because we're using uVision V5.29.
Our project ist a Multi-Project Workspace with 3 projects (board-level, core and application). The board and core project are compiled to a lib and the libs are included in the application project. All 3 projects contain threads.
The project organization was the same with RTX 4 and there it worked without any problem. We only updated the RTX and uVision.
We have also some older projects which still are using RTX4 and there is still works (with uVision V5.29).
Did anyone had the same problem or knows a solution?
Thanks for your support!
Patrick
Thanks for your reply!
We're using the static object allocation. We've only implemented the "Level 1 Migration" (http://www.keil.com/pack/doc/CMSIS_Dev/RTOS2/html/os2MigrationGuide.html) because the core project is also used in other projects where we can't update to RTX5.
The placing of the control block in the sections is done in cmsis_os.h when the CMSIS version is smaller 2 (osCMSIS < 0x20000U) and i think it works when i take a look at the map file:
os_thread_cb_app_main 0x2000bf78 Data 68 main.o(.bss.os.thread.cb) [Anonymous Symbol] 0x2000bf78 Section 0 main.o(.bss.os.thread.cb) os_thread_cb_runUpdate 0x2000bfbc Data 68 app_update.o(.bss.os.thread.cb) [Anonymous Symbol] 0x2000bfbc Section 0 app_update.o(.bss.os.thread.cb) os_idle_thread_cb 0x2000c000 Data 68 rtx_lib.o(.bss.os.thread.cb) [Anonymous Symbol] 0x2000c000 Section 0 rtx_lib.o(.bss.os.thread.cb) os_timer_thread_cb 0x2000c044 Data 68 rtx_lib.o(.bss.os.thread.cb) os_thread_cb_runKeyboard 0x2000c088 Data 68 hal_keyboard.o(.bss.os.thread.cb) [Anonymous Symbol] 0x2000c088 Section 0 hal_keyboard.o(.bss.os.thread.cb)
So the thread control blocks are placed contiguously in the memory.
Also the "RTX OS" view is working since i added the component viewer description file.
It seems that the objects are placed in correct section and therefore should be recognized by the RTX OS viewer and also by the Call Stack window.
Maybe you can create s small reproducer project and send it to support.
Thanks for your answer. Meanwhile i created a small reproducer project, that i can send to the support. But in the reproducer project it worked instantly...
I compared the reproducer project with my real project. The only difference was in Options for Target ind C/C++ (AC6) was the Option "Link-Time Optimization" unchecked.
Now i enabled Link-Time Optimization by checking Link-Time Optimization and now it works. I don't know what the optimization changes but now it works...