This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

MSPM0G3507: SCB registers missing in CCS Registers view

Part Number: MSPM0G3507

Tool/software:

Hello,

I am currently evaluating an MSPM0G3507.
When I start a debug session in CCS (v12.8.1), I noticed, that the SCB registers are missing in the "Registers" view.
However, when I add the expression "(SCB_Type*)(0xE000E000UL + 0x0D00UL)" in the "Expressions" view, I can nicely check all SCB registers (including VTOR that I was interested in).

Is there a reason why this registers aren't available in the "Registers" view?

Thank you,
Markus

  • Hi Markus,
    Can you share your project with me so I can review it? According to the User Guide, you'll need to execute your code as privileged to gain control over SCB.
    Best Regards,
    Diego Abad

  • Hello Diego,
    thank you for your quick response.

    I think there is a misunderstanding here:
    Setting the VTOR register value in my project works just fine.

    I was just curious that in Code Composer Studio Debug Mode (when connected to the target with a debugger), the "Registers" view misses the SCB registers. Screenshot: https://ibb.co/WWnZ9JXH

    However, if I add the SCB base address (with the correct cast type) in the CCS "Expressions" view, I can view some of the SCB register that are accessible.
    Screenshot: https://ibb.co/21pmCyLH

    But, if you are interested, I assign the VTOR with the following simple code (I use bare-metal, no RTOS) by using a linker script symbol that points to the vector table address in my application (I use a Bootloader/Application setup).

    Linker script:

        /* Aligns the interrupt service table to a 256-byte boundary and stores the address in a linker symbol */
        .intvecs: palign(256) { _intvecs_location = .; } > FLASH_APPLICATION

    C code:

    /* Interrupt vector table location from linker symbol */
    extern uint32_t _intvecs_location;
    
    void initInterruptVectortable(void)
    {
        SCB->VTOR = (uint32_t)&_intvecs_location;
    }
    

    Kind regards,
    Markus

  • Hi Markus,
    Thanks for letting me know. Glad to see you found a solution. The reason of the missing register is most likely related to how this registers are not allowed by default. 
    Best Regards,
    Diego Abad

  • My guess is that someone forgot to generate an SCB.xml in ccs_base/common/targetdb/Modules/msp.

    I see NVIC and SYSTICK there in v12.4, and a bunch more in v12.8. I don't have v20.0 here; maybe the SCB got in by then.

    [Edit: It's not in v20.0.1 either.]