HardFault and debug with messagebox

ChibiOS public support forum for all topics not covered by a specific support forum.

Moderators: RoccoMarco, lbednarz, utzig, tfAteba, barthess

omcdr
Posts: 89
Joined: Wed Aug 17, 2016 3:25 pm
Has thanked: 7 times
Been thanked: 7 times

Re: HardFault and debug with messagebox

Postby omcdr » Fri Feb 24, 2017 2:29 pm

GCC 4.9 2015q3 from ChibiStudio

User avatar
Giovanni
Site Admin
Posts: 14455
Joined: Wed May 27, 2009 8:48 am
Location: Salerno, Italy
Has thanked: 1076 times
Been thanked: 922 times
Contact:

Re: HardFault and debug with messagebox

Postby Giovanni » Fri Feb 24, 2017 3:21 pm

I am out of ideas, you should try to isolate parts of the program and try to isolate what triggers the problem, it is not necessarily around where it stops.

Giovanni

omcdr
Posts: 89
Joined: Wed Aug 17, 2016 3:25 pm
Has thanked: 7 times
Been thanked: 7 times

Re: HardFault and debug with messagebox

Postby omcdr » Sun Mar 12, 2017 3:31 pm

I have compiled my project under IAR and code is working correctly, without hardfault, I have tested with various sprintf, xprintf functions.
Is this a bug in gcc ? I don't know how to find it.


In IAR I have based on linker script ch.icf from IRQ_STORM example, but I got warning message in debug:
The stack pointer for stack 'CSTACK' (currently 0x20000400) is outside the stack range (0x20007C00 to 0x20008000)

How to set correct CSTACK value ?

Full script is here

Code: Select all

define symbol __ICFEDIT_intvec_start__ = 0x08000000;
/*-Memory Regions-*/
define symbol __ICFEDIT_region_ROM_start__ = 0x08000000;
define symbol __ICFEDIT_region_ROM_end__   = 0x0801FFFF;
define symbol __ICFEDIT_region_RAM_start__ = 0x20000000;
define symbol __ICFEDIT_region_RAM_end__   = 0x20007FFF;
/*-Sizes-*/
define symbol __ICFEDIT_size_cstack__ = 0x400;
define symbol __ICFEDIT_size_heap__   = 0x400;
/**** End of ICF editor section. ###ICF###*/

/* Size of the IRQ Stack (Main Stack).*/
define symbol __ICFEDIT_size_irqstack__   = 0x400;

define memory mem with size = 4G;
define region ROM_region   = mem:[from __ICFEDIT_region_ROM_start__   to __ICFEDIT_region_ROM_end__];
define region RAM_region   = mem:[from __ICFEDIT_region_RAM_start__   to __ICFEDIT_region_RAM_end__];

define block CSTACK    with alignment = 8, size = __ICFEDIT_size_cstack__   {section CSTACK};
define block IRQSTACK  with alignment = 8, size = __ICFEDIT_size_irqstack__ {};
define block HEAP      with alignment = 8, size = __ICFEDIT_size_heap__     {};
define block SYSHEAP   with alignment = 8                                   {section SYSHEAP};
define block DATABSS with alignment = 8 {readwrite, zeroinit};

initialize by copy { readwrite };
do not initialize  { section .noinit };

keep { section .intvec };

place at address mem:__ICFEDIT_intvec_start__ {section .intvec};
place in ROM_region                           {readonly};
place at start of RAM_region                  {block IRQSTACK};
place in RAM_region                           {block DATABSS, block HEAP};
place in RAM_region                           {block SYSHEAP};
place at end of RAM_region                    {block CSTACK};

User avatar
Giovanni
Site Admin
Posts: 14455
Joined: Wed May 27, 2009 8:48 am
Location: Salerno, Italy
Has thanked: 1076 times
Been thanked: 922 times
Contact:

Re: HardFault and debug with messagebox

Postby Giovanni » Sun Mar 12, 2017 4:59 pm

Hi,

That message is normal, the various threads can have their stacks outside that area and the debugger issues a warning.

Giovanni

omcdr
Posts: 89
Joined: Wed Aug 17, 2016 3:25 pm
Has thanked: 7 times
Been thanked: 7 times

Re: HardFault and debug with messagebox

Postby omcdr » Sun Mar 12, 2017 6:05 pm

Ok, thank you for debugging this issue.


Return to “General Support”

Who is online

Users browsing this forum: No registered users and 20 guests