Keil Logo

RTX51 TINY: Multiple Public Definitions RTX_RAMTOP (Part 2)


Information in this article applies to:

  • RTX51 Tiny

QUESTION

I recently upgraded my compiler. Now my project, which uses RTX Tiny, generates linker errors:

*** ERROR L104: MULTIPLE PUBLIC DEFINITIONS
    SYMBOL:  ?RTX_CURRENTTASK
    MODULE:  C:\KEIL\C51\LIB\RTX51TNY.LIB (?RTX51_TINY_KERNAL)
*** ERROR L104: MULTIPLE PUBLIC DEFINITIONS
    SYMBOL:  ?RTX_RAMTOP
    MODULE:  C:\KEIL\C51\LIB\RTX51TNY.LIB (?RTX51_TINY_KERNAL)
*** WARNING L4: DATA SPACE MEMORY OVERLAP
    FROM:    0008H
    TO:      000DH
*** ERROR L118: REFERENCE MADE TO ERRONEOUS EXTERNAL
    SYMBOL:  ?RTX_CURRENTTASK
    MODULE:  C:\KEIL\C51\LIB\RTX51TNY.LIB (?RTX51_TINY_OS_CREATE)
    ADDRESS: 0731H
*** ERROR L118: REFERENCE MADE TO ERRONEOUS EXTERNAL
    SYMBOL:  ?RTX_RAMTOP
    MODULE:  C:\KEIL\C51\LIB\RTX51TNY.LIB (?RTX51_TINY_OS_CREATE)
    ADDRESS: 0745H
*** ERROR L118: REFERENCE MADE TO ERRONEOUS EXTERNAL
    SYMBOL:  ?RTX_CURRENTTASK
    MODULE:  C:\KEIL\C51\LIB\RTX51TNY.LIB (?RTX51_TINY_OS_CREATE)
    ADDRESS: 076FH
*** ERROR L118: REFERENCE MADE TO ERRONEOUS EXTERNAL
    SYMBOL:  ?RTX_CURRENTTASK
    MODULE:  C:\KEIL\C51\LIB\RTX51TNY.LIB (?RTX51_TINY_OS_DELETE)
    ADDRESS: 07BAH
*** ERROR L118: REFERENCE MADE TO ERRONEOUS EXTERNAL
    SYMBOL:  ?RTX_RAMTOP
    MODULE:  C:\KEIL\C51\LIB\RTX51TNY.LIB (?RTX51_TINY_OS_DELETE)
    ADDRESS: 07D3H
*** ERROR L118: REFERENCE MADE TO ERRONEOUS EXTERNAL
    SYMBOL:  ?RTX_CURRENTTASK
    MODULE:  C:\KEIL\C51\LIB\RTX51TNY.LIB (?RTX51_TINY_OS_DELETE)
    ADDRESS: 07F1H
*** ERROR L118: REFERENCE MADE TO ERRONEOUS EXTERNAL
    SYMBOL:  ?RTX_CURRENTTASK
    MODULE:  C:\KEIL\C51\LIB\RTX51TNY.LIB (?RTX51_TINY_OS_DELETE)
    ADDRESS: 080CH
*** ERROR L118: REFERENCE MADE TO ERRONEOUS EXTERNAL
    SYMBOL:  ?RTX_CURRENTTASK
    MODULE:  C:\KEIL\C51\LIB\RTX51TNY.LIB (?RTX51_TINY_OS_DELETE)
    ADDRESS: 081FH
*** ERROR L118: REFERENCE MADE TO ERRONEOUS EXTERNAL
    SYMBOL:  ?RTX_CURRENTTASK
    MODULE:  C:\KEIL\C51\LIB\RTX51TNY.LIB (?RTX51_TINY_OS_RUNNING_TASK_ID)
    ADDRESS: 086DH
*** ERROR L118: REFERENCE MADE TO ERRONEOUS EXTERNAL
    SYMBOL:  ?RTX_CURRENTTASK
    MODULE:  C:\KEIL\C51\LIB\RTX51TNY.LIB (?RTX51_TINY_OS_WAIT)
    ADDRESS: 0875H

The code was working before the upgrade. What am I doing wrong? For compliance reasons, I need to use RTX tiny version 1, and cannot upgrade to RTXtiny2

ANSWER

C51 version 7.02 includes RTX51 Tiny Version 2 (RtxTiny2). RtxTiny2 contains several new enhancements. C51 version 7.02 by default uses the RtxTiny2 library. However, it is possible to use RTX tiny version 1's library.

Manually add the RTX51 Tiny Version 1 library to the project workspace window. The version 1 libraries are located at:
\Keil\C51\RTX_TINY\RTX51TNY.LIB

When you add the version 1 library to your project, the linker will not link the version 2 library into your project. This will remove the errors shown above.

This option is best if you must use RTX51 Tiny Version 1, and you are using CONF_TNY.A51 (the configuration file for RTX tiny version 1).

Note that the old configuration file is CONF_TNY.A51 and is located at:
\Keil\C51\RTX_TINY\CONF_TNY.A51 (Upper case file name)

The new configuration file is CONF_TNY.A51 and is located at:
\Keil\C51\RtxTiny2\SourceCode\Conf_tny.A51 (Lower case file name)

MORE INFORMATION

SEE ALSO


Last Reviewed: Thursday, February 25, 2021


Did this article provide the answer you needed?
 
Yes
No
Not Sure
 
  Arm logo
Important information

This site uses cookies to store information on your computer. By continuing to use our site, you consent to our cookies.

Change Settings

Privacy Policy Update

Arm’s Privacy Policy has been updated. By continuing to use our site, you consent to Arm’s Privacy Policy. Please review our Privacy Policy to learn more about our collection, use and transfers
of your data.