This discussion has been locked.
You can no longer post new replies to this discussion. If you have a question you can start a new discussion

Compiler Migration error

I have a working project at uVision 5.01 and ARMCC 5.03.0.76.
I have upgraded the uVision at 5.14 and ARMCC to 5.05 and I am getting some Internal faults.
I have kept the new uVision GUI (5.14) and replaced the compiler with 5.03 and worked fine again.

I have isolated the code rows that produce the internal errors. The problem is when I am trying
to assign an integer value from a struct member to another member of another struct.
This is happening only at integer values not chars, shorts.

I have also created a new project with the new GUI and added the old files but
I got the same errors.
But when I created a new project and just created a single struct and
assigned an integer member then it worked fine.

Any ideas?

Thanks in advance.

Parents Reply Children
  • I believe it is a "packed" issue.

    I am giving you an example:

    This code produces internal error.

    typedef volatile __packed struct{
    
            unsigned int    VA;
            unsigned int    VB;
            unsigned int    VC;
            unsigned int    VD;
            unsigned int    AWV;
            unsigned int    AWoutV;
            unsigned short  S;
            unsigned char   aa1;
            unsigned short  aa2;
            unsigned int    TVA;
    
    }ZONE;
    
    typedef volatile __packed struct{
            unsigned int  VA;
            unsigned int  AWV;
            unsigned int  TVA;
    }REPORT;
    
    int main (void){
            ZONE z;
            REPORT myReport;
    
            myReport.VA     = z.VA;
            myReport.AWV    = z.AWV;
            myReport.TVA    = z.TVA;
    
            return 0;
    }
    

    This code does not produce any error.

    typedef volatile __packed struct{
    
            unsigned int    VA;
            unsigned int    VB;
            unsigned int    VC;
            unsigned int    VD;
            unsigned short  S;
            unsigned char   aa1;
            unsigned short  aa2;
            unsigned int    TVA;
            unsigned int    AWV;
            unsigned int    AWoutV;
    
    }ZONE;
    
    typedef volatile __packed struct{
            unsigned int  VA;
            unsigned int  AWV;
            unsigned int  TVA;
    }REPORT;
    
    int main (void){
            ZONE z;
            REPORT myReport;
    
            myReport.VA     = z.VA;
            myReport.AWV    = z.AWV;
            myReport.TVA    = z.TVA;
    
            return 0;
    }
    

    The only difference is at the variable order.

    Any ideas?

  • Again, I think that support should have a look into this.

    Kind regards,

    Christopher

  • When you contact support - remember to also include the actual error messages.