3564|7

849

帖子

0

TA的资源

纯净的硅(高级)

楼主
 

LM3S8962跑UCOSII遇到小问题####### [复制链接]

   各位BOSS们,最近在跑UCOSII 2.52的系统。

      一直没有出什么事的,

但最近想减少代码编译所占空间,优化一下代码。就选中了如图1所示的地方:

 

也就是编译时USE MICRO-LIB这个选项。

 

        编译链接后,会出现问题,它说启动代码中有两个东西没有定义:

 

 

请教,这个设置与启动代码有冲突吗?以前从未遇到过。。。。。。

[ 本帖最后由 shilaike 于 2011-1-11 19:57 编辑 ]

图1.jpg (51.12 KB, 下载次数: 0)

图1.jpg

图2.jpg (27.16 KB, 下载次数: 0)

图2.jpg

最新回复

呵呵,我不明白的是,你的这个μC/OS移植为什么要使用两种方式来定义堆栈呢?它这么做的好处是什么呢?  详情 回复 发表于 2011-1-12 10:22
 
点赞 关注
个人签名只有想不到,没有做不到。

回复
举报

918

帖子

0

TA的资源

纯净的硅(中级)

沙发
 

回复 楼主 shilaike 的帖子

这个可能和你的启动代码中堆内存和栈内存的设置有关,看看你的启动代码是怎么写的。entry2这个文件是哪里的呢?
 
 

回复

849

帖子

0

TA的资源

纯净的硅(高级)

板凳
 

回复 沙发 academic 的帖子

这两上未定义的变量都是来自于启动代码的,至于entry2是编译时生成的一个第二入口的目标文件。
   你可以试一下,选中USE MICRO.LIB这项,再编译一下看看和启动代码是否有冲突。。。

虽然知道可以不选,但还是想知道这是为什么??
 
个人签名只有想不到,没有做不到。
 
 

回复

918

帖子

0

TA的资源

纯净的硅(中级)

4
 

回复 板凳 shilaike 的帖子

我试过了fengzhang2002版主分享的ucos+lwip的例程,没有出现你说的情况,我看了下启动代码也没有上面两个变量。
 
 
 

回复

849

帖子

0

TA的资源

纯净的硅(高级)

5
 
不是吧。。这么神奇。。。。嘿嘿。。。我也来看看。。。。
   不过还是给出这两个变量的定义吧:
;*********************************************************************************************************
;*  The function expected of the C library startup
;*  code for defining the stack and heap memory locations.
;*  C语言启动库调用本代码初始化堆和栈
;*********************************************************************************************************
        IMPORT  __use_two_region_memory
        EXPORT  __user_initial_stackheap
__user_initial_stackheap
        LDR     R0, =HeapMem
        LDR     R1, =(StackMem + Stack)
        LDR     R2, =(HeapMem + Heap)
        LDR     R3, =StackMem
        BX      LR

各位有心的朋友,可以看下。。。我参观一下fengzhang2002版主的东西。。。
 
个人签名只有想不到,没有做不到。
 
 

回复

849

帖子

0

TA的资源

纯净的硅(高级)

6
 

回复 5楼 shilaike 的帖子

看了fengzhang2002发表的这个工程里的启动文件哈。
   终于明白了。。。。
它用了宏定义的:
  IF :DEF: __MICROLIB
        EXPORT  __initial_sp
        EXPORT  __heap_base
        EXPORT __heap_limit
    ELSE
        IMPORT  __use_two_region_memory
        EXPORT  __user_initial_stackheap
__user_initial_stackheap
        LDR     R0, =HeapMem
        LDR     R1, =(StackMem + Stack)
        LDR     R2, =(HeapMem + Heap)
        LDR     R3, =StackMem
        BX      LR
    ENDIF
 
个人签名只有想不到,没有做不到。
 
 

回复

918

帖子

0

TA的资源

纯净的硅(中级)

7
 

回复 6楼 shilaike 的帖子

呵呵,我不明白的是,你的这个μC/OS移植为什么要使用两种方式来定义堆栈呢?它这么做的好处是什么呢?
 
 
 

回复

849

帖子

0

TA的资源

纯净的硅(高级)

8
 

回复 7楼 academic 的帖子

因为要用到MICRO.LIB的话就不能用下面定义的堆栈了。
用MICRO.LIB会节省很多的编译空间,对于代码的优化很有帮助。。
 
个人签名只有想不到,没有做不到。
 
 

回复
您需要登录后才可以回帖 登录 | 注册

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/6 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表