Hallo Leute,
ich habe ein Problem mit der Tasking Library von CrossWorks.
Es geht dabei um Folgendes:
Ich habe eine Software die das mustitasking und diverse message-queues
nutzt.
Das Programm empfängt Daten via USB und gibt Diese an andere
Programmteile weiter. Diese führen je nach Daten entsrechende Aufgaben
durch.
Soweit hat das alles eigentlich okay funktioniert, bis ich mir dachte,
dass ich noch mehr Performance rauskitzeln könnte, wenn ich die Daten
die von der USB-ISR kommen auch noch in eine Message-Queue speichere und
an einer anderen Stelle einfach auf ein Event warte.
--> Das funktioniert hingegen eher bescheiden. Das Problem ist, dass
immer ein Fehler mit der Bezeichnung: "CTL_UNSUPPORTED_CALL_FROM_ISR"
auftritt.
Das Manual schreibt, dass man beim benutzen von CTL-Funktionen in ISR's
folgendes der ISR hinzufügen muss:
1 | void USB_LP_CAN1_RX0_IRQHandler(void)
|
2 | {
|
3 | ctl_enter_isr(); // für CTL
|
4 |
|
5 | USB_Istr(); // Eigentliche ISR abarbeitung
|
6 |
|
7 | ctl_exit_isr(); // für CTL
|
8 | }
|
Kennt sich hier jemand aus? Oder weiß was ich falsch gemacht habe?
Vielleicht kann auch jemand hinweise geben was bei einem anderen RTOS
nötig wäre um RTOS-Funktionien in ISR's zu verwenden?
Vielen Dank im Voraus für hilfreiche Beiträge
Grüße Tarkan
PS: Kann man eigentlich bedenkenlos sagen, dass die CTL_Library von
Crossworks ein RTOS ist? Ich konnte so auf den ersten blick keine
gravierenden Unterschiede zum freeRTOS feststellen!