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

DPPUSE and NOFIXDPP

Hi,

I have a C164 application with 32k NDATA and 16k NCONST. Where DPP0 is used for NCONST and DPP1 and DPP2 used for NDATA. Furthermore I have located the user stack at the end of the DPP2 segment using the SECTIONS directive.
My question, is the NOFIXDPP directive still required?

If no, how can I avoid to use this directive?
µVision seems to add this directive automatically after using DPPUSE. I didnt found any option in the target dialog.

Thx for your help.

Bert

PS:
Yes, I have read the appnote "L166: ACCESSING THE USER STACK VIA DPP2"

Parents Reply Children
  • Hi,

    now the big question is, how to get rid of the NOFIXDPP directive?

    µVision adds NOFIXDPP automatically if DPPUSE is set. Is there a way to have DPPUSE without NOFIXDPP?
    I dont want to use the commandline to compile my files ...

    Bert

  • now the big question is, how to get rid of the NOFIXDPP directive?

    To do what you want, you must manually configure the linker sections and DPPUSE so that uVision doesn't fix things up for you.

    1. Open the Project Options dialog and click on the L166 Locate tab.

    2. Copy the class definitions from the Target Classes box.

    3. On the L166 Locate tab, uncheck Use Memory Layout from Target Dialog. This gives you complete control over memory sections.

    4. Paste the class definitions into the User Classes box.

    5. Copy the DPPUSE specification from the Linker Control String (at the bottom of the dialog).

    6. Uncheck the DPPUSE box. This is what adds the NOFIXDPP to the compiler options.

    7. Open the L166 MISC tab.

    8. Paste the DPPUSE spec. into the Misc Controls box.

    That should do it. You may need/want to tweak the class settings to better match your hardware.

    Jon

  • NOFIXDPP is essential when you are working without the fixed DPP assignments. So leave in this control.

    Once you have searched a pointer conversion problem from 'near' to 'huge/far' you will understand why I point this out here! It might take weeks to find such problems.

    While it might be possible to configure the tools so that NOFIXDPP is not set, but it is ** HIGHLY ** recommmended not to do so!

    Reinhard

  • Hello Mr. Keil,

    yes you are right in general. But I have manually placed the user stack in the DPP2 segment. And as I understood the NOFIXDPP directive, this is only necessary if the user stack is not located in DPP2.

    My reason to that, was to get the advantage of fast access of 32k NDATA, without loosing speed in case of pointer conversion for stack variables.

    Best regards

    Bert Weber