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.

Extended instruction requires 430X-based mcu

Other Parts Discussed in Thread: MSP430F5528

Hi everyone,

the problem occurred after changing from gcc on Linux to Code Composer Studio v. 5.3.0.00090 with gcc on Windows 7. Both used the compiler version 4.6.3.

The mcu is set to MSP430F5528 in the configuration of CCS.

Compiling with CCS produces the error:

Extended instruction (decx) requires 430X-based mcu

and

Extended instruction (movx) requires 430X-based mcu

This error refers to an extern located file in the Temp folder which is deleted directly after compiling.

Is there any chance to fix this problem by changing some settings?

Thanks for your help.

  • Sebastian Geck said:
    Extended instruction (decx) requires 430X-based mcu

    Apparently there is a problem in the project settings. The assembler doesn't get the information that the 5528 has a 430X core.

    You should try to create  anew project and import the source code rather than copying the project folder.

  • Thank you for your quick reply. But unfortunately it didn´t solve the probelm.

    I´ve created two new projects and added the files by link (like before, sorry I didn´t mention) and by copying just to see a difference. The project properties are set to:

    Device Family: MSP430

     Variant: MSP430F5528

    Compiler version: GNU

    in both projects. There shouldn´t be any difference.

    Window -> preferences -> ccs -> build -> compilers is also set to the right location. Even if ccs converts my Windows "\" into "/".

    Unfortunately there are no further information.

  • Well, the only explanation that comes in mind (even though likely not the only possible one) is that there is a bug in the ccs internal configuration for this MSP. Rather unlikely, but why else should the compiler generate assembly instructions (valid ones, as far as I can tell) that the assembler refuses to accept.

    Which compiler did ou use on linux? Afer all, GCC is just a codebase. And CCS, even though based on GCC, is a completely different compiler and assembler (and linker) than e.g. MSPGCC.

    Can you post the offending code? (strip it down as much as you can while the error still happens). The file don't even needs to link (as the error already comes on the assembler stage)
    It also might help to post this question in the CCS forum where the compiler developers listen.

  • The problem seems to be solved!

    First of all thanks for your help and sorry for waiting that long for a response.

    After a few weeks off the project I´ve found a setting in Project -> Properties -> Build -> GNU C Compiler -> Runtime.

    The target CPU (-mcpu) must be set to 430, 430x or 430xv2.

    I tried to compile the files which caused the error and now it´s working very well.

     

    Best regards

    Sebastian Geck

  • There should be a way to select large or small code and/or memory model independently form the CPU core. because the 430X core has more to offer than just 20 bit addressing:

    - one clock cycle less on memory-memory move operations (well, this one is always active, even if the compiler assumes standard core)
    - binary shift right (saving the need of clearing the carry before the shift)
    - up to 4 bits shifting at once
    - push and pop for more than one register with one instruction
    - I think there was more

    All of these are speeding up the code even if not using 20 bit addressing or 20 bit register size.

**Attention** This is a public forum