This post is older than 2 years and might not be relevant anymore
More Info: Consider searching for newer posts

Bug unable to fix as going to unknown function 0x00000978..

Recently, we are using Nordic resources and developing our own application. We have blue tooth integrated in app, also we have display and our own file system integrated on our system. But , recently while debugging, after display got integrated , debugger automatically goes to unknown function at address 0x00000978. I researched what is it, came to know its soft device address and hence commented out blue tooth initialization from code. Also, I tried using IAR as similar segger, this doesn't go to unknown function but when debugger is paused it would have landed up in hard fault handler. This issue going to unknown function is there in debug mode, in release mode it will keep running not going to that address , but main file logging stops after may be 3 pages of flash memory. SO , couple of questions.

1. What is the difference between debug and release mode?

2. What is the difference between segger and IAR?

3. I am unable to see stack frame , list of functions how it landed up to this unknown function? How will I check from which function this issue is happening ? 

If any help please do let me know.

Regards

Arpitha M C

Parents
  • 1. What is the difference between debug and release mode?

    The only difference between debug and release mode is that Release mode optimizes the code for size and adds the NDEBUG definition to the preprocessor definitions. Debug mode does not use any optimization and adds the following preprocessor definitions DEBUG and DEBUG_NRF

    2. What is the difference between segger and IAR?

    There are many differences, but i guess the main one is that Segger Embedded Studio uses the GCC compiler, while IAR has its own compiler. 

    3. I am unable to see stack frame , list of functions how it landed up to this unknown function? How will I check from which function this issue is happening ? 

    The address 0x00000978 is located in the MBR, which is distributed together with the SoftDevice, see the Memory resource map and usage, as a precompiled binary. 

    This means that there are no debug symbols and debug information for the debugger, you're just able to see the disassembly. 

    If you provide me with the SoftDevice version number, then I can check what code that is placed at 0x00000978 in the MBR. 

    Best regards

    Bjørn

     

Reply
  • 1. What is the difference between debug and release mode?

    The only difference between debug and release mode is that Release mode optimizes the code for size and adds the NDEBUG definition to the preprocessor definitions. Debug mode does not use any optimization and adds the following preprocessor definitions DEBUG and DEBUG_NRF

    2. What is the difference between segger and IAR?

    There are many differences, but i guess the main one is that Segger Embedded Studio uses the GCC compiler, while IAR has its own compiler. 

    3. I am unable to see stack frame , list of functions how it landed up to this unknown function? How will I check from which function this issue is happening ? 

    The address 0x00000978 is located in the MBR, which is distributed together with the SoftDevice, see the Memory resource map and usage, as a precompiled binary. 

    This means that there are no debug symbols and debug information for the debugger, you're just able to see the disassembly. 

    If you provide me with the SoftDevice version number, then I can check what code that is placed at 0x00000978 in the MBR. 

    Best regards

    Bjørn

     

Children
Related