- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Hello,
We would like to prepare the detection of stack overflow.
We will clear the last 4bytes of stack pointer address to 0x00000000 . And we will detect the stack overlow by reading these 4bytes whether stack pointer has been written.
How to read/write the last 4bytes
*(reg32 *)(CYDEV_SRAM_BASE + CYDEV_SRAM_SIZE - CYDEV_STACK_SIZE)
Is this correct?
for example
[In case of clearing the last 4bytes of stack pointer to 0x00000000]
uint32 check_sp_ov;
......
check_sp_ov = 0x00000000;
*(reg32 *)(CYDEV_SRAM_BASE + CYDEV_SRAM_SIZE - CYDEV_STACK_SIZE) = check_sp_ov;
[In case of checking the last 4bytes of stack pointer]
if( *(reg32 *)(CYDEV_SRAM_BASE + CYDEV_SRAM_SIZE - CYDEV_STACK_SIZE) != 0x0)
{
error processing code
}
Best regards,
Yocchi
Solved! Go to Solution.
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Yes, you can.
AN89056 - PSoCR 4 - IEC 60730 Class B and IEC 61508 SIL Safety Software Library, especially for RAM test, could be one of reference.
Please double check the SelfTest_Stack.h file.