Skip to main content
sivakumar4312
Associate II
August 11, 2010
Question

IAR Embedded Workbench: Assembler case sensitive option is unset

  • August 11, 2010
  • 4 replies
  • 1043 views
Posted on August 11, 2010 at 11:07

IAR Embedded Workbench: Assembler case sensitive option is unset

    This topic has been closed for replies.

    4 replies

    Andrew Neil
    Super User
    May 17, 2011
    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...

    A complex system that works is invariably found to have evolved from a simple system that worked.A complex system designed from scratch never works and cannot be patched up to make it work.
    sivakumar4312
    Associate II
    May 17, 2011
    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

    sivakumar4312
    Associate II
    May 17, 2011
    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

    picguy2
    Associate III
    May 17, 2011
    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.