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.
Hello Mike,
can you please contact support regarding this issue: support.intl@keil.com
Kind regards,
Christopher
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.
Again, I think that support should have a look into this.
When you contact support - remember to also include the actual error messages.