Posted Micrium OS and ASSERTs on Blog
If you work with Micrium OS, chances are you will eventually encounter some macro prefixed with RTOS_ASSERT which traps your task in an infinite loop. Micrium OS has two types of ASSERTs, Critical ASSERTs and Debugging ASSERTs. The former type of ASSERT is intended to catch severe errors which may prevent the system from functioning normally such as a module failing to initialize correctly. On the other hand, Debugging ASSERTs are used to catch ordinary errors returned from an API call so that they are found quickly while debugging. However, the question naturally arises: should my system crash because I passed a bad delay value to OSTimeDly?
There are a few options to customize how these conditions are handled in your system.
1. You can disable debugging ASSERTs, which will also disable error checking. This is recommended once the project is stable and ready for production.
2. You can force the ASSERTs to return a value, with some caveats.
In order to make these changes, you must modify this section of rtos_cfg.h.
Option 1 requires changing the MASK to RTOS_CFG_MODULE_NONE.
Option 2 requires modifying the DBG macro so that it returns the error value.
However, you must be careful not to use any ASSERT_DBG() macros at the top level of your task; you may unintentionally return from the task if you do so.
For more details on ASSERTs, please refer to the following pages:
Dec 06 2018, 4:50 PM