RTX51 TINY: Multiple Public Definitions RTX_RAMTOP (Part 2)
Information in this article applies to:
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)
SEE ALSO
Last Reviewed: Thursday, February 25, 2021