[51单片机] Silicon Labs IDE

[复制链接]
5520|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 | 显示全部楼层
这与用什么没有关系
 楼主| xinghun0813 发表于 2013-11-15 08:54 | 显示全部楼层
ayb_ice 发表于 2013-11-15 08:51
这与用什么没有关系

外部变量在头文件里都有声明,应该不是这个问题。
ayb_ice 发表于 2013-11-15 08:55 | 显示全部楼层
没有定义
声明一个不存在的变量
 楼主| 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
ayb_ice 发表于 2013-11-15 09:16 | 显示全部楼层
不是有提示吗,看具体是哪个符号,定义,声明即可
 楼主| xinghun0813 发表于 2013-11-15 09:42 | 显示全部楼层
myowl 发表于 2013-11-15 08:16
为什么不直接用keil?

因为想用c8051F340移植FreeRTOS,官网上只有基于SDCC的例子,要用到Silicon Labs IDE。现在先熟悉Silicon Labs IDE的环境
ayb_ice 发表于 2013-11-15 10:18 | 显示全部楼层
xinghun0813 发表于 2013-11-15 09:42
因为想用c8051F340移植FreeRTOS,官网上只有基于SDCC的例子,要用到Silicon Labs IDE。现在先熟悉Silicon ...

瞎整什么呢,51就别上什么系统了
 楼主| xinghun0813 发表于 2013-11-15 10:35 | 显示全部楼层
ayb_ice 发表于 2013-11-15 10:18
瞎整什么呢,51就别上什么系统了

手上正好有板子,自己学学RTOS
 楼主| xinghun0813 发表于 2013-11-15 10:35 | 显示全部楼层
ayb_ice 发表于 2013-11-15 10:18
瞎整什么呢,51就别上什么系统了

手上正好有板子,自己学学RTOS
 楼主| 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.
 楼主| xinghun0813 发表于 2013-11-18 12:00 | 显示全部楼层
大家对学习RTOS有什么好的建议么?
zd420325 发表于 2013-11-22 16:16 | 显示全部楼层
ayb_ice 发表于 2013-11-15 10:18
瞎整什么呢,51就别上什么系统了

8051F,最快可以跑到100M,为啥不能跑系统?1个T
ayb_ice 发表于 2013-11-22 16:21 | 显示全部楼层
系统大量使用指针操作
51的片内RAM太小,堆栈大小,只能使用模拟堆栈,速度超慢
OS占用大量RAM,只能用XRAM,而XRAM访问速度慢,只能通过DPTR访问,OS大量使用指针操作,这对51更是为难

总之,太难为51了,不用也罢,再说51的事,不用OS一样轻松搞定
何苦呢
 楼主| xinghun0813 发表于 2013-11-26 12:36 | 显示全部楼层
在用OS时,有什么方法解决Keil重入的问题,比如局部变量之类的
您需要登录后才可以回帖 登录 | 注册

本版积分规则

3

主题

19

帖子

0

粉丝
快速回复 在线客服 返回列表 返回顶部