You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
There is quite large amount of other FreeRTOS functions which are not prepared for dual processor usage and can present a big issue if/when used.
This should be addressed as soon as possible!
develop, 68b5563
Kendryte GNU Toolchain v8.2.0-20190213
Hardware
Sipeed MAIX-Bit, Dan-Dock
System
Ubuntu 18.04
Output produced by the test program:
Before the first xQueueSend task1 runs on processor #1.
After xQueueSend it runs on processor #0.
There is no 50 ticks difference between tasks ticks any more, which proves that the tasks actually runs on the same processor.
TEST
Task0 at 0: 1, 101, 81.810
Task1 at 1: 1, 152, 123.120
Task0 at 0: 2, 201, 162.810
Task1 at 1: 2, 252, 204.120
Task0 at 0: 3, 301, 243.810
Task1 at 1: 3, 352, 285.120
Task0 at 0: 4, 401, 324.810
Sending message to task1
Message received: id=4, msg='From task 0, ticks=401'
Task1 at 0: 4, 401, 324.810
Task0 at 0: 5, 501, 405.810
Task1 at 0: 5, 502, 406.620
Task0 at 0: 6, 601, 486.810
Task1 at 0: 6, 602, 487.620
Task0 at 0: 7, 701, 567.810
Task1 at 0: 7, 702, 568.620
Task0 at 0: 8, 801, 648.810
Sending message to task1
Message received: id=8, msg='From task 0, ticks=801'
Task1 at 0: 8, 801, 648.810
Task0 at 0: 9, 901, 729.810
Task1 at 0: 9, 902, 730.620
Task0 at 0: 10, 1001, 810.810
Task1 at 0: 10, 1002, 811.620
Task0 at 0: 11, 1101, 891.810
Task1 at 0: 11, 1102, 892.620
Task0 at 0: 12, 1201, 972.810
The text was updated successfully, but these errors were encountered:
I have fixed this issue for this and some other functions and now my application (the real one, not only the test code above) runs as expected.
Looking forward for the full SMP implementations in this SDK ...
Expected behavior
Sending message with
xQueueSend
between tasks running on different processors should work.Actual behavior
Task 1, running on processor #0 sends to the queue with
xQueueSend
Task 2, running on processor #1 receives from the queue with
xQueueReceive
After task1 sends the message, task2 switches to processor 0 and continues to run on it.
The source of the bug is probably in queue.c in a way the xTaskRemoveFromEventList function is used.
There is quite large amount of other FreeRTOS functions which are not prepared for dual processor usage and can present a big issue if/when used.
This should be addressed as soon as possible!
Test code
SDK version
develop, 68b5563
Kendryte GNU Toolchain v8.2.0-20190213
Hardware
Sipeed MAIX-Bit, Dan-Dock
System
Ubuntu 18.04
Output produced by the test program:
Before the first
xQueueSend
task1 runs on processor #1.After
xQueueSend
it runs on processor #0.There is no 50 ticks difference between tasks ticks any more, which proves that the tasks actually runs on the same processor.
The text was updated successfully, but these errors were encountered: