cancel
Showing results for 
Search instead for 
Did you mean: 

IAR Embedded Workbench: Assembler case sensitive option is unset

sivakumar4312
Associate II
Posted on August 11, 2010 at 11:07

IAR Embedded Workbench: Assembler case sensitive option is unset

4 REPLIES 4
sivakumar4312
Associate II
Posted on May 17, 2011 at 14:01

Some more debugging that i have done on this..

My code is going to the main , from there if i step in many times then its not showing the Hard Fault exception , but when i just do go its showing that, i tried stepping in many times, but could not get the exception.

I am doing this excercise to optimize the code size of my project, i have already compiling the code size with optimization set to High, please let me know if there are any other methods in reducing the code size...

Thanks in Advance

Siva

Andrew Neil
Evangelist
Posted on May 17, 2011 at 14:01

''if i step in many times then its not showing the Hard Fault exception , but when i just do go ... could not get the exception.''

That suggests a timing issue; which, in turn, suggests interrupts.

Check for stack overflow, interrupt-related pointer issues, and interrupt-related buffer overrun vulnerabilities...

picguy2
Associate II
Posted on May 17, 2011 at 14:01

One trick I do is set EVERY unused interrupt to a simple jump to itself.  This is easier in assembly but still doable in C.  (If your vector area is done in assembly make C++ ISR subroutines “C�?.)  Then when things die I look at which vector was used, both stack pointers, find the 8-word ISR save block, find where my code was before it hit the fault and think.  

IMHO RAM should be zeroed pre main.  This helps debugging.  Blocks of RAM that have been used are obvious.
sivakumar4312
Associate II
Posted on May 17, 2011 at 14:01

Thanks for the replies, one interesting thing i am seeing in the map file generated.

These are the observations when the ''user symbols case sensitive'' option is checked and uncheked..

1) When Checked, i.e in the no issue case

 Section                 Kind        Address    Size  Object

  -------                 ----        -------    ----  ------

''A1'':                                            0xec

  .intvec                 ro code  0x08000000    0xec  startup_stm32f10x_md.o [1]

                                 - 0x080000ec    0xec

2) When UnChecked, i.e in case of hard fault exception issue

  Section                 Kind        Address    Size  Object

  -------                 ----        -------    ----  ------

''A1'':                                            0x40

  .intvec                 ro code  0x08000000    0x40  vector_table_M.o [4]

                                 - 0x08000040    0x40

Wondering how the vector_table_M.s got attached in this case, and also when i keep break points in the stm32f10x_usb_it.c , debugger is showing as not valid.

Please let me know...

Thanks

Siva