OS_Exception() not found in vector table

This site uses cookies. By continuing to browse this site, you are agreeing to our Cookie Policy.

  • OS_Exception() not found in vector table


    I am using embOS CortexM GNU Trial V388f with Olimex STM32-P107 and Eclipse/Ubuntu 12.4. The CPU is an STM32F107 and the start project i use is STM32F103_STM32_SK.

    The demo project is running and the LEDs are blinking. So, everything is fine and i started reading the UM01033 embOS CortexM GNU document that comes with the embOS package to get a deeper insight in embOS.

    The document says in Chapter 6.8.1 OS_Exception ...:
    "Ensure that the address of OS_Exception() is inserted in the vector table at the cor-
    rect position. The vector tables which come with embOS are already setup and
    should be used and modified for the application."

    But, as i can see, all Interrupt Handlers in startup_stm32f10x_md.S point to the Default_Handler. Should not at least one single Handler point to OS_Exception()?

    I have to say, that i am very new to ARM Cortex M controllers (and 32 bit controllers at all), so it might be a non embOS related question.

    Thanks, potter
  • Hello,

    OS_Exception() is the old name for the embOS handler, we use now the CMSIS name PendSV_Handler() instead.
    The documentation is not up to date, thanks for the hint, we will correct it.

    The first 16 vectors are the same for all Cortex M3.
    Please find PendSV_Handler() below:

    Extraction from startup_stm32f10x_md.S:

    C Source Code

    1. __Vectors:
    2. .word __stack_end__
    3. .word Reset_Handler
    4. .word NMI_Handler
    5. .word HardFault_Handler
    6. .word MemManage_Handler
    7. .word BusFault_Handler
    8. .word UsageFault_Handler
    9. .word 0
    10. .word 0
    11. .word 0
    12. .word 0
    13. .word SVC_Handler
    14. .word DebugMon_Handler
    15. .word 0
    16. .word PendSV_Handler
    17. .word SysTick_Handler
    18. .weak PendSV_Handler
    19. .thumb_set PendSV_Handler,Default_Handler
    Display All

    The handler function itself is declared as weak which means that the Default_Handler is used when no other PendSV_Handler function exists.
    The embOS PendSV_Handler() is part of the embOS library and the linker will use that one.

    Best regards,