打印
[51单片机]

Silicon Labs IDE

[复制链接]
5004|17
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
xinghun0813|  楼主 | 2013-11-14 22:28 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
为什么使用Silicon Labs IDE编译时会出现WARNING L1: UNRESOLVED EXTERNAL SYMBOL    、WARNING L2: REFERENCE MADE TO UNRESOLVED EXTERNAL。使用Keil 却没有问题?该怎么解决

相关帖子

沙发
ayb_ice| | 2013-11-15 08:07 | 只看该作者
使用了外部变量,但却没有定义处,或声明错误

使用特权

评论回复
板凳
myowl| | 2013-11-15 08:16 | 只看该作者
为什么不直接用keil?

使用特权

评论回复
地板
ayb_ice| | 2013-11-15 08:51 | 只看该作者
这与用什么没有关系

使用特权

评论回复
5
xinghun0813|  楼主 | 2013-11-15 08:54 | 只看该作者
ayb_ice 发表于 2013-11-15 08:51
这与用什么没有关系

外部变量在头文件里都有声明,应该不是这个问题。

使用特权

评论回复
6
ayb_ice| | 2013-11-15 08:55 | 只看该作者
没有定义
声明一个不存在的变量

使用特权

评论回复
7
xinghun0813|  楼主 | 2013-11-15 09:05 | 只看该作者
ayb_ice 发表于 2013-11-15 08:55
没有定义
声明一个不存在的变量

通常情况下是这样没错。但是如果没有定义,Keil编译应该也不会通过。这些WARNING都是出现在调用外部函数时出现的,而且有好几个。是不是和.LIB库有关系。
下面是.M51的部分内容

BL51 BANKED LINKER/LOCATER V6.22              11/14/2013  13:35:26  PAGE 1


BL51 BANKED LINKER/LOCATER V6.22, INVOKED BY:
C:\KEIL\C51\BIN\BL51.EXE C:\Documents and Settings\Administrator\桌面\I2C_SPI\
>> F340_1167_LCD.obj TO C:\Documents and Settings\Administrator\桌面\I2C_SPI\F
>> 340_1167_LCD RS (256) PL (68) PW (78)


MEMORY MODEL: SMALL


INPUT MODULES INCLUDED:
  C:\Documents and Settings\Administrator\桌面\I2C_SPI\F340_1167_LCD.obj (F340
>> _1167_LCD)
  C:\KEIL\C51\LIB\C51S.LIB (?C_STARTUP)
  C:\KEIL\C51\LIB\C51S.LIB (?C?SCDIV)


LINK MAP OF MODULE:  C:\Documents and Settings\Administrator\桌面\I2C_SPI\F340
>> _1167_LCD (F340_1167_LCD)


            TYPE    BASE      LENGTH    RELOCATION   SEGMENT NAME
            -----------------------------------------------------

            * * * * * * *   D A T A   M E M O R Y   * * * * * * *
            REG     0000H     0008H     ABSOLUTE     "REG BANK 0"
            DATA    0008H     0009H     UNIT         ?DT?F340_1167_LCD
            DATA    0011H     0003H     UNIT         _DATA_GROUP_
            IDATA   0014H     0001H     UNIT         ?STACK

使用特权

评论回复
8
ayb_ice| | 2013-11-15 09:16 | 只看该作者
不是有提示吗,看具体是哪个符号,定义,声明即可

使用特权

评论回复
9
xinghun0813|  楼主 | 2013-11-15 09:42 | 只看该作者
myowl 发表于 2013-11-15 08:16
为什么不直接用keil?

因为想用c8051F340移植FreeRTOS,官网上只有基于SDCC的例子,要用到Silicon Labs IDE。现在先熟悉Silicon Labs IDE的环境

使用特权

评论回复
10
ayb_ice| | 2013-11-15 10:18 | 只看该作者
xinghun0813 发表于 2013-11-15 09:42
因为想用c8051F340移植FreeRTOS,官网上只有基于SDCC的例子,要用到Silicon Labs IDE。现在先熟悉Silicon ...

瞎整什么呢,51就别上什么系统了

使用特权

评论回复
11
xinghun0813|  楼主 | 2013-11-15 10:35 | 只看该作者
ayb_ice 发表于 2013-11-15 10:18
瞎整什么呢,51就别上什么系统了

手上正好有板子,自己学学RTOS

使用特权

评论回复
12
xinghun0813|  楼主 | 2013-11-15 10:35 | 只看该作者
ayb_ice 发表于 2013-11-15 10:18
瞎整什么呢,51就别上什么系统了

手上正好有板子,自己学学RTOS

使用特权

评论回复
13
xinghun0813|  楼主 | 2013-11-18 08:46 | 只看该作者
问题解决
Silicon Laboratories IDE .OBJ库文件的调用
1. Project -> Target Build Configuration -> Customize -> Files to Link -> Add External OBJ
2.把相关的.OBJ文件全部添加进去。
3. 点击 OK.

使用特权

评论回复
14
xinghun0813|  楼主 | 2013-11-18 12:00 | 只看该作者
大家对学习RTOS有什么好的建议么?

使用特权

评论回复
15
zd420325| | 2013-11-22 16:16 | 只看该作者
ayb_ice 发表于 2013-11-15 10:18
瞎整什么呢,51就别上什么系统了

8051F,最快可以跑到100M,为啥不能跑系统?1个T

使用特权

评论回复
16
ayb_ice| | 2013-11-22 16:21 | 只看该作者
系统大量使用指针操作
51的片内RAM太小,堆栈大小,只能使用模拟堆栈,速度超慢
OS占用大量RAM,只能用XRAM,而XRAM访问速度慢,只能通过DPTR访问,OS大量使用指针操作,这对51更是为难

总之,太难为51了,不用也罢,再说51的事,不用OS一样轻松搞定
何苦呢

使用特权

评论回复
17
xinghun0813|  楼主 | 2013-11-26 12:36 | 只看该作者
在用OS时,有什么方法解决Keil重入的问题,比如局部变量之类的

使用特权

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

本版积分规则

3

主题

19

帖子

0

粉丝