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

Compiling differences between C51 v7.03 and v8.06

Hello!

I have uVision that compiles fine with the C51 v7.03 compiler and the related package, but not complete with the 8.06. I used two different Keil installations. All files are in the same folder.

In the 8.06 I get linker errors like "object does not fit in to pdata page" and "0080H". This looks like the compiler was thinking the PDATA was only 128 bytes, but it is set to 256 bytes in the startup.a51. Any clue what's different in the newer Keil package?

Also there is a warning in 8.06 (which does not show in 7.03) "converting non-pointer to pointer" on this

ptr_xdata = sPtr_obj->Adresse;


while the vars are set like this:

uchar uc_set_obj( uchar pdata *ptr_Set)
{
   uchar i;
   uchar xdata *ptr_xdata;
   struct stOBJADR code *sPtr_obj;

   sPtr_obj=&Obj[*ptr_Set];
   .
   .
   .
   ptr_xdata = sPtr_obj->Adresse;
}


The struct stOBJADR has a member "uint Adresse;"

I can see no wrong use of the pointers. I just want to be sure that the warning does not affect the code to not work correctly.

Parents
  • because I don't read any post, of course (uses too much time).

    the above made me realize that writing posts to help you and others "of course (uses too much time)". I will definitely consider that in the future.

    so, if anyone wants to help Maik Staberock they should be aware that doing so "uses too much time" and refrain.

    Erik

Reply
  • because I don't read any post, of course (uses too much time).

    the above made me realize that writing posts to help you and others "of course (uses too much time)". I will definitely consider that in the future.

    so, if anyone wants to help Maik Staberock they should be aware that doing so "uses too much time" and refrain.

    Erik

Children
  • the above made me realize that writing posts to help you and others "of course (uses too much time)". I will definitely consider that in the future.
    Only if the replies are constantly saying "you naughty boy, don't you use the wrong terminology" instead of "hmm, the compiler has its own style of warning you. You need to read between the lines".

    Because the topic wasn't that my colleague who wrote the code has forgotten the implicit cast or that the pointer operation was actually a bit wrong, it was about the fact, that the Keil compiler warns you in the one version and not in the other. And this warning isn't always created when compiling, it only happens from time to time. That's why I said in one of my posts that the compiler doesn't seem to know what to do in some situations and it then confuses the user with warnings you might not understand while being absolutely sure the code is correct (because it runs as desired).