打印

好书推介:《RTX51Tiny FAQ汇集》(中译本)

[复制链接]
4103|7
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
学生D|  楼主 | 2009-2-2 17:57 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
该书将KEIL C51编译器附带的RTX51TNY实时操作系统应用中的问题以及解决方案汇集成册,并译成中文,英汉对照。小册子,48页。 内容精华,值得一看。摘抄一段:

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:
我最近升级了我的C51 编译器。结果再编译我的项目文件(程序应用了RTX51TNY操作系统)时,出现下面链接错误:

*** 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_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

我的程序在升级之前一直正常工作。我做错了什么? 为了软件规范原因, 我是不是只能使用RTXTtiny的版本1,而不能升级到RTXtiny2 ?

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

C51 版本 7.02 包括 RTX51 Tiny 版本2 (RtxTiny2). RtxTiny2 包含了几个新的增强功能。版本7.02默认使用 RtxTiny2 库(rtx51tny.lib)。然而,它也可以使用RTX Tiny 老版本1.的库。

Manually add the RTX51 Tiny Version 1 library to the project workspace window. The version 1 libraries are located at:

手动添加RTX51 Tiny 版本1. 的库到项目工作区窗口。这个版本1. 库文件位于:
\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.

当你把RTX51TNY 版本1. 的库添加到项目文件时, 链接器就不会把版本2.的库链接到你的项目文件。这就消除了以上显示的诸多错误。

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).

如果你必须使用RTX51 Tiny版本1, 并且你正在使用 CONF_TNY.A51(RTX tiny 版本1.的配置文件)时,这是你升级编译器之后最好的解决方法。 

Note that the old configuration file is CONF_TNY.A51 and is located at:
注意老版本的配置文件是 CONF_TNY.A51,它位于:
\Keil\C51\RTX_TINY\CONF_TNY.A51 (Upper case file name)   //大写字母文件名

The new configuration file is CONF_TNY.A51 and is located at:
而新版本2的配置文件CONF_TNY.A51 位于:
\Keil\C51\RtxTiny2\SourceCode\Conf_tny.A51 (Lower case file name) //小写字母文件名

MORE INFORMATION  //更多信息可参考 RTX51 Tiny User's Guide.  RTX51 Tiny 用户指南

Refer to the RTX51 Tiny User's Guide.
Refer to What's New in the RTX51 Tiny User's Guide.
SEE ALSO 也见
RTX51 TINY: ERROR L104 (MULTIPLE PUBLIC DEFINITIONS) OF MAIN
RTX51 TINY: USER INTERRUPT FUNCTION DOES NOT WORK
RTX51 TINY: INTERRUPTS STOP WORKING
RTX51 TINY: MULTIPLE PUBLIC DEFINITIONS RTX_RAMTOP (PART 1)

相关帖子

沙发
ayb_ice| | 2009-2-2 20:08 | 只看该作者

直接看手册就可以了

如果还要更懂,直接分析源代码.

使用特权

评论回复
板凳
hotpower| | 2009-2-2 22:00 | 只看该作者

keil有RTX51的例程,网上很多~~~

使用特权

评论回复
地板
hotpower| | 2009-2-2 22:18 | 只看该作者

Keil C51学习过程

倒塌了~~~菜农的“红杏出墙”何时变成了“扩充内部函数”~~~

使用特权

评论回复
5
冷漠| | 2009-2-2 22:21 | 只看该作者

LZ的书哪卖?

卖我一本。100,200¥都行。别是吹牛吧。

知道网上能找到,我是有钱没时间的那种:

1、找起来费劲;(还不如拿出一天的工资,请人帮我找。)
2、看电子书太累;(还不如拿出半天的工资,购买纸版书)
3、看原版E文不顺畅;有高手注释当然好。

使用特权

评论回复
6
学生D|  楼主 | 2009-2-3 09:44 | 只看该作者

哇,回复者都是高手。

看来只有修炼到一定功力的高手才关注过或者会用RTX51实时操作系统。

其实RTX51是写给更广泛的51单片机普通用户的。就像Windows是为了让那些不懂计算机的用户能够容易使用计算机一样。

冷漠兄不用出资求购,本来就是赠送的。没必要吹牛。(帮你要一本好了。)


使用特权

评论回复
7
学生D|  楼主 | 2009-2-3 11:19 | 只看该作者

学习,请教:

顺便贴了几条。看看不同文化的人如何学习51单片机也挺有意思的。大家学的东西都一样,为何我就想不到?

QUESTION 5
What's the difference between the K_IVL and K_TMO events in the os_wait function call? The documentation is not clear about these two events.

QUESTION  6
I'm using MON51 and dScope to debug my RTX51 application. Everything works fine until I call the os_start_system library routine. Then, my application crashes. What's going on? Am I missing something in the configuration?

QUESTION 7
I have an RTX51 application with several tasks running. Originally, I had RTX51 set up to use round robin task switching, so I enclosed accesses to global data within semaphore blocks.
Is this necessary now that I am not using round robin anymore? Is it safe to assume that tasks don't swap until an os_wait call when round robin is not enabled?

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

11

主题

179

帖子

0

粉丝