Fehlerreport: Timeouts nach langer Laufzeit in RTOS basierten Produkten
Fehlerreport: Timeouts nach langer Laufzeit in RTOS basierten Produkten
25.08.2010 13:44
Betrifft: Embedded UML RXF - OSAL
Leider befindet sich in allen RXFs für ANSI-C, die auf ein bestehendes RTOS aufsetzen, ein Problem im Falle eines Timer-Überlaufes. Dieser Fehler sorgt dafür, dass in besonderen Fällen ein mehrere Wochen laufendes System beginnt, Timeouts deutlich zu schnell ablaufen zu lassen.
Die technischen Details zu dem Problem in Kürze
Das Ausmaskieren von Timer-Überläufen mittels WST_TM_OVERFLOW wurde falsch durchgeführt, da dem Makro eine Tilde (bitweises invertieren) vorangestellt war. Die korrekte Berechnung ohne Invertierung sieht nun wie folgt aus:
- WST_TM_OVERFLOW wird zu dem Wert von INT_MAX expandiert, also z.B. 0x7FFFFFFF auf einem ARM (32 Bit).
- Der Typ timeUnit ist unsigned, liefert somit genügend Platz, den Overflow abzufangen.
- Wenn also dueTime z.B. 0x80000100 beinhaltet und m_time größer oder gleich WST_TM_OVERFLOW ist, so wird nun mit dem Patch korrekt &= 0x7FFFFFFF auf beidem durchgeführt, also sozusagen der Overflow einheitlich ausmaskiert.
Abhilfe
In den nächsten Releases, die leider nur nach und nach erscheinen können, werden wir dieses Problem selbstverständlich behoben haben. Releases, bei denen der Fehler bereits behoben wurde, beinhalten einen Verweis auf Case #1828 mit einem entsprechenden Hinweis in den Release Notes.
Als sofortige Lösung empfehlen wir für alle Releases, je nach dem ob Sie vor oder nach dem 16.04.2009 erstellt wurden, folgendes Vorgehen:
Releases nach dem 16.04.2009 und ohne Embedded UML Target Debugger
Die Datei <Rhapsody>\Share\WST_RXF_V5\<Produktname>\Source\RicTimer.c sollte durch diese Datei ersetzt werden. Ob Ihre Datei neu genug ist, einfach ersetzt zu werden, können Sie an der Zeile "* $Id: RiCTimer.c 20558 2009-04-16 13:16:34Z mm $" am Anfang der Datei erkennen.
Hiernach müssen lediglich die RXF Bibliotheken neu erstellt werden (CreateRXFLibrary Projekt).
Releases vor dem 16.04.2009
Für ältere Revisionen oder Anpassungen, die den Embedded UML Target Debugger beinhalten, wird ein manuelles Patchen empfohlen. Genaue Anweisungen sind hier als PDF verfügbar.
Wir entschuldigen uns für die entstandene Problematik und hoffen, Ihnen mit dieser Nachricht hilfreiche Informationen zukommen zu lassen. Sollten Sie weitere Fragen haben, wenden Sie sich bitte am besten direkt an support@willert.de, wir werden uns dann so schnell wie möglich um Ihr Anliegen kümmern.
Re: Fehlerreport: Timeouts nach langer Laufzeit in RTOS basierten Produkten
25.08.2010 14:32
A Short Summary in English
This problem appears only in the OSAL / RTOS based Embedded UML RXF.
A timer overflow is not handled correctly after an RXF runtime of a few weeks.
Solution
Our next official releases will off course be delivered with the fixed bug. However, it is only possible to bring out those updated step by step. Their release notes will contain the info about fixed case #1828.
As a quick solution for all frameworks that were released after 2009-04-16 and do not include the Embedded UML Target Debugger, we recommend to use this fixed source file. It will replace your <Rhapsody>\Share\WST_RXF_V5\<Product Name>\Source\RicTimer.c. Please rebuild your RXF libraries after replacement (using the CreateRXFLibrary project).
If you use an older revision or the Embedded UML Target Debugger and need an English explanation of the patch, please contact our support.
We are very sorry for this problem and hope this information was helpful for you. Please contact our support team via support@willert.de for any questions or comments.
Thanks,
Eike
