Trapping Div/0 Exception; Cortex ® -M0/M0+ Case; Figure 39. Keil ® Access To Show Caller Code In Contextual Menu - STMicroelectronics STM32 Application Note

Microcontroller debug toolbox
Hide thumbs Also See for STM32:
Table of Contents

Advertisement

Exception handling
Figure 39. Keil
6.3

Trapping div/0 exception

Most often, code execution causing a division by zero are difficult to investigate:
Nothing is neither triggered nor trapped.
Erroneous returned value generates an unexpected and unpredictable behavior that is
very difficult to analyze.
This chapter gives several tips in order to properly trap div/0 exceptions.
6.3.1
Cortex
For targets that do not support hardware division instructions (SDIV/UDIV), integer division-
by-zero errors can be trapped and identified by means of the appropriate C library helper
functions:
__aeabi_idiv0()
When integer division by zero is detected, a branch to __aeabi_idiv0() is made. A
breakpoint placed on __aeabi_idiv0() allow to trap the division by zero.
To ease the breakpoint application, override the default function:
void __aeabi_idiv0()
{
#ifdef DEBUG
__BKPT(0);
#endif
}
This way, and depending on IDE, the call stack or registers can be examined and the
offending line in the source code can be rapidly found.
To go further refer to section 7.7 of Arm
60/118
®
Access to Show Caller Code in Contextual menu
®
-M0/M0+ case
®
Compiler Software Development Guide.
AN4989 Rev 3
AN4989

Hide quick links:

Advertisement

Table of Contents
loading
Need help?

Need help?

Do you have a question about the STM32 and is the answer not in the manual?

Table of Contents

Save PDF