在线咨询
eetop公众号 创芯大讲堂 创芯人才网
切换到宽版

EETOP 创芯网论坛 (原名:电子顶级开发网)

手机号码,快捷登录

手机号码,快捷登录

找回密码

  登录   注册  

快捷导航
搜帖子
芯片精品文章合集(500篇!) 创芯人才网--重磅上线啦!
查看: 9120|回复: 4

__user_initial_stackheap 问题???

[复制链接]
发表于 2007-9-22 16:05:41 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?注册

x
我在用周工的LPC移植UCOS时候,程序一进入B __main的时候就运行不下去拉,用realview2.2调试时在_zero_loop:前三句进入了死循环,这个问题怎么解决啊?
_user_initial_stackheap    如下
__user_initial_stackheap   
    LDR   r0,=bottom_of_heap
    MOV   pc,lr


源码
Reset
BL InitStack ;初始化堆栈
BL TargetResetInit ;目标板基本初始化
;跳转到c语言入口
B __main

反汇编
   __main:
&#160; &#160;0000814C EA000000&#160;&#160;B&#160; &#160;&#160; &#160;&#160;&#160;__scatterload&#160; &#160;&#160; &#160;&#160; &#160;&#160; &#160;&#160;&#160;<0x8154>
&#160; &#160;00008150 EA000E0F&#160;&#160;B&#160; &#160;&#160; &#160;&#160;&#160;__rt_entry&#160; &#160;&#160; &#160;&#160; &#160;&#160; &#160;&#160; &#160;&#160;&#160;<0xb994>
&#160;&#160; __scatterload:
&#160; &#160;00008154 E28F0028&#160;&#160;ADR&#160; &#160;&#160; &#160;r0,{pc}+0x30 ; #0x8184
&#160; &#160;00008158 E8900C00&#160;&#160;LDMIA&#160; &#160; r0,{r10,r11}
&#160; &#160;0000815C E08AA000&#160;&#160;ADD&#160; &#160;&#160; &#160;r10,r10,r0
&#160; &#160;00008160 E24A7001&#160;&#160;SUB&#160; &#160;&#160; &#160;r7,r10,#1
&#160; &#160;00008164 E08BB000&#160;&#160;ADD&#160; &#160;&#160; &#160;r11,r11,r0
&#160;&#160;__scatterload_null:
&#160; &#160;00008168 E15A000B&#160;&#160;CMP&#160; &#160;&#160; &#160;r10,r11
&#160; &#160;0000816C 0A000E08&#160;&#160;BEQ&#160; &#160;&#160; &#160;__rt_entry&#160; &#160;&#160; &#160;&#160; &#160;&#160; &#160;&#160; &#160;&#160;&#160;<0xb994>
&#160; &#160;00008170 E8BA000F&#160;&#160;LDMIA&#160; &#160; r10!,{r0-r3}
&#160; &#160;00008174 E24FE014&#160;&#160;ADR&#160; &#160;&#160; &#160;r14,{pc}-0xc ; #0x8168
&#160; &#160;00008178 E3130001&#160;&#160;TST&#160; &#160;&#160; &#160;r3,#1
&#160; &#160;0000817C 1047F003&#160;&#160;SUBNE&#160; &#160; pc,r7,r3
&#160; &#160;00008180 E1A0F003&#160;&#160;MOV&#160; &#160;&#160; &#160;pc,r3
&#160;&#160; _region_table:
&#160; &#160;00008184 00003D58&#160;&#160;<Data> 'X' '=' 0x00 0x00
&#160; &#160;00008188 00003D78&#160;&#160;<Data> 'x' '=' 0x00 0x00
&#160;&#160; __scatterload_copy:
&#160; &#160;0000818C E2522010&#160;&#160;SUBS&#160; &#160;&#160;&#160;r2,r2,#0x10
&#160; &#160;00008190 28B00078&#160;&#160;LDMCSIA&#160;&#160;r0!,{r3-r6}
&#160; &#160;00008194 28A10078&#160;&#160;STMCSIA&#160;&#160;r1!,{r3-r6}
&#160; &#160;00008198 8AFFFFFB&#160;&#160;BHI&#160; &#160;&#160; &#160;__scatterload_copy&#160; &#160;&#160; &#160;&#160; &#160;<0x818c>
&#160; &#160;0000819C E1B02E82&#160;&#160;MOVS&#160; &#160;&#160;&#160;r2,r2,LSL #29
&#160; &#160;000081A0 28B00030&#160;&#160;LDMCSIA&#160;&#160;r0!,{r4,r5}
&#160; &#160;000081A4 28A10030&#160;&#160;STMCSIA&#160;&#160;r1!,{r4,r5}
&#160; &#160;000081A8 45904000&#160;&#160;LDRMI&#160; &#160; r4,[r0,#0]
&#160; &#160;000081AC 45814000&#160;&#160;STRMI&#160; &#160; r4,[r1,#0]
&#160; &#160;000081B0 E1A0F00E&#160;&#160;MOV&#160; &#160;&#160; &#160;pc,r14
&#160;&#160; __scatterload_zeroinit:
&#160; &#160;000081B4 E3A03000&#160;&#160;MOV&#160; &#160;&#160; &#160;r3,#0
&#160; &#160;000081B8 E3A04000&#160;&#160;MOV&#160; &#160;&#160; &#160;r4,#0
&#160; &#160;000081BC E3A05000&#160;&#160;MOV&#160; &#160;&#160; &#160;r5,#0
&#160; &#160;000081C0 E3A06000&#160;&#160;MOV&#160; &#160;&#160; &#160;r6,#0
&#160;&#160; _zero_loop:
&#160; &#160;000081C4 E2522010&#160;&#160;SUBS&#160; &#160;&#160;&#160;r2,r2,#0x10
&#160; &#160;000081C8 28A10078&#160;&#160;STMCSIA&#160;&#160;r1!,{r3-r6}
&#160; &#160;000081CC 8AFFFFFC&#160;&#160;BHI&#160; &#160;&#160; &#160;_zero_loop&#160; &#160;&#160; &#160;&#160; &#160;&#160; &#160;&#160; &#160;&#160;&#160;<0x81c4>

&#160; &#160;000081D0 E1B02E82&#160;&#160;MOVS&#160; &#160;&#160;&#160;r2,r2,LSL #29
&#160; &#160;000081D4 28A10030&#160;&#160;STMCSIA&#160;&#160;r1!,{r4,r5}
&#160; &#160;000081D8 45813000&#160;&#160;STRMI&#160; &#160; r3,[r1,#0]
&#160; &#160;000081DC E1A0F00E&#160;&#160;MOV&#160; &#160;&#160; &#160;pc,r14
&#160; &#160;000081E0&#160; &#160;&#160;&#160;4778&#160;&#160;BX&#160; &#160;&#160; &#160; pc
&#160; &#160;000081E2&#160; &#160;&#160;&#160;46C0&#160;&#160;NOP&#160; &#160;&#160; &#160;
&#160;&#160;__ARM_argv_veneer:
&#160; &#160;000081E4 E59F3004&#160;&#160;LDR&#160; &#160;&#160; &#160;r3,argv&#160; &#160;&#160; &#160;&#160; &#160;&#160; &#160;&#160; &#160;&#160; &#160;&#160;&#160;<0x81f0>
&#160; &#160;000081E8 E08F3003&#160;&#160;ADD&#160; &#160;&#160; &#160;r3,pc,r3
&#160; &#160;000081EC E12FFF13&#160;&#160;BX&#160; &#160;&#160; &#160; r3
&#160;&#160;argv:
&#160; &#160;000081F0 00003AB4&#160;&#160;<Data> 0xB4 ':' 0x00 0x00
>>> OS_CORE\#955 {
&#160; &#160;OS_TaskStat:
&#160; &#160;000081F4 E92D41F0&#160;&#160;STMFD&#160; &#160; r13!,{r4-r8,r14}

这个程序我再用UV3调试的时候单步到0x00000008&#160;&#160;E59FF018&#160;&#160;LDR&#160; &#160;&#160; &#160; PC,[PC,#0x0018]的时候也没法走了,请教解决之道啊?_


反汇编
-7&#160; &#160;&#160; &#160;0x0000366C&#160;&#160;E3E00000&#160;&#160;MVN&#160; &#160;&#160; &#160; R0,#0x00000000
-6&#160; &#160;&#160; &#160;0x00003670&#160;&#160;E59F1010&#160;&#160;LDR&#160; &#160;&#160; &#160; R1,[PC,#0x0010]
-5&#160; &#160;&#160; &#160;0x00003674&#160;&#160;E5810000&#160;&#160;STR&#160; &#160;&#160; &#160; R0,[R1]
&#160; &#160;324:&#160; &#160;&#160;&#160;T0TCR = 0X02;
-4&#160; &#160;&#160; &#160;0x00003678&#160;&#160;E3A00002&#160;&#160;MOV&#160; &#160;&#160; &#160; R0,#0x00000002
-3&#160; &#160;&#160; &#160;0x0000367C&#160;&#160;E5810004&#160;&#160;STR&#160; &#160;&#160; &#160; R0,[R1,#0x0004]
&#160; &#160;325: }
-2&#160; &#160;&#160; &#160;0x00003680&#160;&#160;E8BD4070&#160;&#160;LDMIA&#160; &#160;&#160;&#160;R13!,{R4-R6,R14}
-1&#160; &#160;&#160; &#160;0x00003684&#160;&#160;E12FFF1E&#160;&#160;BX&#160; &#160;&#160; &#160;&#160;&#160;R14
&#160; &#160; 71:&#160;&#160;B __main
&#160; &#160; 72:&#160;&#160;
&#160; &#160; 73:&#160;&#160;
&#160; &#160; 74: ;/*********************************************************************************************************
&#160; &#160; 75: ;** 函数名称: __user_initial_stackheap&#160;&#160;
&#160; &#160; 76: ;** 功能描述: 库函数初始化堆和栈,不能删除
&#160; &#160; 77: ;**&#160;&#160;
&#160; &#160; 78: ;** 输 入: 参考库函数手册
&#160; &#160; 79: ;**
&#160; &#160; 80: ;** 输 出: 参考库函数手册
&#160; &#160; 81: ;**&#160;&#160;
&#160; &#160; 82: ;** 全局变量: 无
&#160; &#160; 83: ;** 调用模块: 无
&#160; &#160; 84: ;**
&#160; &#160; 85: ;** 作 者: 陈明计
&#160; &#160; 86: ;** 日 期: 2003年7月1日
&#160; &#160; 87: ;**-------------------------------------------------------------------------------------------------------
&#160; &#160; 88: ;** 修改人:
&#160; &#160; 89: ;** 日 期:
&#160; &#160; 90: ;**------------------------------------------------------------------------------------------------------
&#160; &#160; 91: ;********************************************************************************************************//
&#160; &#160; 92: __user_initial_stackheap&#160; &#160;&#160;&#160;
0x00000008&#160;&#160;E59FF018&#160;&#160;LDR&#160; &#160;&#160; &#160; PC,[PC,#0x0018]
&#160; &#160; 93:&#160; &#160;&#160;&#160;LDR&#160; &#160;r0,=bottom_of_heap
0x0000000C&#160;&#160;E59FF018&#160;&#160;LDR&#160; &#160;&#160; &#160; PC,[PC,#0x0018]
&#160; &#160; 94:&#160; &#160;&#160;&#160;MOV&#160; &#160;pc,lr
&#160; &#160; 95:&#160;&#160;
&#160; &#160; 96: ;/*********************************************************************************************************


[ 本帖最后由 llzzhh505 于 2007-9-22 17:59 编辑 ]
发表于 2007-9-25 15:05:32 | 显示全部楼层
realview的帮助文档里有关于_user_initial_stackheap    的说明

__main会自动调用它,用户把自己想要设的栈顶,栈底,堆顶,堆底,赋给r0,r1,r2,r3就可以了。

顺序要查一下文档
发表于 2007-9-29 14:45:01 | 显示全部楼层
需要显示定义堆(Heap, 注意不是stack)的地址, 否则容易引起系统崩溃
发表于 2007-10-19 09:03:16 | 显示全部楼层
我也碰到了同样的问题,不知道该如何解决.

请问您的问题已经解决了吗?如果是的话能否将解决的方法告诉我呢?非常感谢!      lijingzhu123489@yahoo.com.cn
发表于 2009-8-15 13:45:51 | 显示全部楼层

直接用keil的startup.s不行吗?

不用周工的,直接用keil的startup.s不行吗?
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

站长推荐 上一条 /2 下一条


小黑屋| 手机版| 关于我们| 联系我们| 在线咨询| 隐私声明| EETOP 创芯网
( 京ICP备:10050787号 京公网安备:11010502037710 )

GMT+8, 2024-11-29 08:57 , Processed in 0.022517 second(s), 10 queries , Gzip On, Redis On.

eetop公众号 创芯大讲堂 创芯人才网
快速回复 返回顶部 返回列表