4557|9

86

帖子

0

TA的资源

一粒金砂(初级)

楼主
 

vxworks 移植 2410 。AXD调试bootrom的时候出错了,希望大家多多帮忙 [复制链接]

 AXD调试bootrom:

修改target\h\tool\gnu\defs.arm
#CC_OPTIM_DRIVER        = -O2 -fno-builtin -fvolatile
#CC_OPTIM_NORMAL        = -O2 -fno-builtinbbs

#CC_OPTIM_TARGET        = -O2 -fno-builtin -fvolatilebbs

CC_OPTIM_DRIVER        = -gdwarf -fno-builtin -fvolatile

CC_OPTIM_NORMAL        = -gdwarf -fno-builtin

CC_OPTIM_TARGET        = -gdwarf -fno-builtin -fvolatile


我试了多种办法 最接近的就是
裸板情况下:
1 在AXD下写配置脚本初始化2410的sdram
2 load image  bootrom_uncmp

对了 我还改了个地址
/*#define ROM_TEXT_ADRS        ROM_BASE_ADRS*/        /* gx 原先定义的是 0x00000000*/
#define ROM_TEXT_ADRS        0x33e00000

不然的话
在  ldr        pc, L$_HiPosn 就会跑飞掉、因为
L$_HiPosn:
        .long        ROM_TEXT_ADRS + HiPosn - FUNC(romInit)
                        0x00000000 + 0x33e000ac-0x33e00000      =   0xac   这是原来的,我现在flash里没东西、
                        0x33e00000 + 0x33e000ac-0x33e00000      =   0x33e000ac   这是现在的的,这样刚好就找到了程序中 HiPosn: 的标号段。

可是现在仅仅是只能看开始的那段汇编啊~ 我现在进入c函数,看到的都是反汇编,现在出了错误了根本就不知道怎么回事情,请教下,有什么办法么???

romStart        [0xe1a0c00d]   mov      r12,r13
33e001cc        [0xe92dd810]   stmfd    r13!,{r4,r11,r12,r14,pc}
33e001d0        [0xe24cb004]   sub      r11,r12,#4
33e001d4        [0xe24dd008]   sub      r13,r13,#8
33e001d8        [0xe1a04000]   mov      r4,r0
33e001dc        [0xe59f30b4]   ldr      r3,0x33e00298 ; = #0x33e0035c
33e001e0        [0xe50b3018]   str      r3,[r11,#-0x18]
33e001e4        [0xe59f30b0]   ldr      r3,0x33e0029c ; = #0x33e002ac
33e001e8        [0xe59f10b0]   ldr      r1,0x33e002a0 ; = #0x33e00000
33e001ec        [0xe0612003]   rsb      r2,r1,r3
33e001f0        [0xe28235cf]   add      r3,r2,#0x33c00000
33e001f4        [0xe2833602]   add      r3,r3,#0x200000
33e001f8        [0xe3a005cf]   mov      r0,#0x33c00000
33e001fc        [0xe2800602]   add      r0,r0,#0x200000
33e00200        [0xe59f1098]   ldr      r1,0x33e002a0 ; = #0x33e00000
33e00204        [0xe3a02702]   mov      r2,#0x80000
33e00208        [0xe1a0e00f]   mov      r14,pc
33e0020c        [0xe1a0f003]   mov      pc,r3
33e00210        [0xe2043002]   and      r3,r4,#2
33e00214        [0xe3530000]   cmp      r3,#0
33e00218        [0x0a000017]   beq      0x33e0027c  ; (romStart + 0xb4)
33e0021c        [0xe59f207c]   ldr      r2,0x33e002a0 ; = #0x33e00000
33e00220        [0xe2423c02]   sub      r3,r2,#0x200
33e00224        [0xe283120d]   add      r1,r3,#0xd0000000
33e00228        [0xe1a02121]   mov      r2,r1,lsr #2
33e0022c        [0xe51b3018]   ldr      r3,[r11,#-0x18]
33e00230        [0xe3a00203]   mov      r0,#0x30000000
33e00234        [0xe1a01002]   mov      r1,r2
33e00238        [0xe3a02000]   mov      r2,#0
33e0023c        [0xe1a0e00f]   mov      r14,pc
33e00240        [0xe1a0f003]   mov      pc,r3
33e00244        [0xe59f2058]   ldr      r2,0x33e002a4 ; = #0x34000000
33e00248        [0xe262330d]   rsb      r3,r2,#0x34000000
33e0024c        [0xe1a02123]   mov      r2,r3,lsr #2
33e00250        [0xe51b3018]   ldr      r3,[r11,#-0x18]
33e00254        [0xe59f0048]   ldr      r0,0x33e002a4 ; = #0x34000000
33e00258        [0xe1a01002]   mov      r1,r2
33e0025c        [0xe3a02000]   mov      r2,#0
33e00260        [0xe1a0e00f]   mov      r14,pc
33e00264        [0xe1a0f003]   mov      pc,r3
33e00268        [0xe3a03c07]   mov      r3,#0x700
33e0026c        [0xe2833203]   add      r3,r3,#0x30000000
33e00270        [0xe3a02000]   mov      r2,#0
33e00274        [0xe1a01002]   mov      r1,r2
33e00278        [0xe5c31000]   strb     r1,[r3,#0]
33e0027c        [0xe59f3024]   ldr      r3,0x33e002a8 ; = #0x33e004c8
33e00280        [0xe50b3014]   str      r3,[r11,#-0x14]
33e00284        [0xe51b3014]   ldr      r3,[r11,#-0x14]
33e00288        [0xe1a00004]   mov      r0,r4
33e0028c        [0xe1a0e00f]   mov      r14,pc
33e00290        [0xe1a0f003]   mov      pc,r3                               ;就是在这句跑飞的 !!!!!!!!!!!
33e00294        [0xe91ba810]   ldmdb    r11,{r4,r11,r13,pc}
33e00298        [0x33e0035c]   mvncc    r0,#0x70000001
33e0029c        [0x33e002ac]   mvncc    r0,#0xc000000a
33e002a0        [0x33e00000]   mvncc    r0,#0
33e002a4        [0x34000000]   strcc    r0,[r0],#-0
33e002a8        [0x33e004c8]   mvncc    r0,#0xc8000000
copyLongs        [0xe1a0c00d]   mov      r12,r13                               ;看来马上是要进 copyLongs        了!!!!!!!!



         

最新回复

有了最新进展 romStart执行顺序是对的 确实是copyLongs  然后usrinit , 我现在将 ROM_TEXT_ADRS   重新设为0x0 烧进norflash  将带调试信息的相同镜像下进ram set pc 0x0 然后开始调试 发现在 000003f0        [0xe59f3024]   ldr      r3,0x0000041c ; = #0x33e0063c 000003f4        [0xe50b3014]   str      r3,[r11,#-0x14] 000003f8        [0xe51b3014]   ldr      r3,[r11,#-0x14] 000003fc        [0xe1a00004]   mov      r0,r4 00000400        [0xe1a0e00f]   mov      r14,pc 00000404        [0xe1a0f003] * mov      pc,r3 之后死循环 0x33e0063c是usrInit         的地址 usrInit        [0xe1a0c00d]   mov      r12,r13 33e00640        [0xe92dd800]   stmfd    r13!,{r11,r12,r14,pc} 33e00644        [0xe24cb004]   sub      r11,r12,#4 33e00648        [0xe24dd00c]   sub      r13,r13,#0xc 33e0064c        [0xe50b0010]   str      r0,[r11,#-0x10] 现在他就不断的循环usrInit         哪位知道这是怎么回事啊~ 串口还是没有东西 但是程序没死,我走着走着就又走回来了。  详情 回复 发表于 2008-9-5 16:53
点赞 关注
 

回复
举报

68

帖子

0

TA的资源

一粒金砂(初级)

沙发
 
不清楚,帮你顶!~~
 
 
 

回复

59

帖子

0

TA的资源

一粒金砂(初级)

板凳
 
继续写调试记录,希望高手早日出现...........

上会说到:
33e00290 [0xe1a0f003]  mov      pc,r3                              ;就是在这句跑飞的 !!!!!!!!!!!

根据小弟的继续调试,发现这个地方跳转到了usrinit于是我就进入usrinit,又发现死在了
bl       kernelInit 于是我就进入kernelInit,他又挂到了 bl       taskInit,于是继续进入taskInit,我靠!!!他还挂 这次是 bl       windExit,那么进入   windExit,在这个里面终于找到癌症了

resumeDispatch4        [0xe92d4000] * stmfd    r13!,{r14}                ;这个函数里的
33e0b7d8        [0xe51fe164]   ldr      r14,L$_kernelState ; = #L$_kernelState
33e0b7dc        [0xe3a00000]   mov      r0,#0
33e0b7e0        [0xe50e0000]   str      r0,[r14,#-0]
33e0b7e4        [0xe10f0000]   mrs      r0,cpsr
33e0b7e8        [0xe3c00080]   bic      r0,r0,#0x80
33e0b7ec        [0xe129f000] * msr      cpsr_cf,r0  这句一执行就崩溃了,我的心也跟着崩溃了


希望高手现身,小弟继续努力,下次来要么解决,要么继续.................





 
 
 

回复

76

帖子

0

TA的资源

一粒金砂(初级)

4
 
清CPRS的0x80位是开中断
估计这之前已经有中断产生了,而中断处理程序是不是还没有正确初始化好
所以导致它死了。。
 
 
 

回复

76

帖子

0

TA的资源

一粒金砂(初级)

5
 
感谢楼上的 我继续研究 ~ 还有点很纳闷 到此位置串口一个屁也没输出来,我都纳闷了。
 
 
 

回复

58

帖子

0

TA的资源

一粒金砂(初级)

6
 
void romStart
    (
    FAST int startType                /* start type */
    )
    {
    /* relocate the data segment into RAM */

    copyLongs ((UINT *)ROM_DATA_ADRS, (UINT *)UNCACHED(RAM_DATA_ADRS),
                ((UINT)end - (UINT)RAM_DATA_ADRS) / sizeof (long));

    /* If cold booting, clear memory to avoid parity errors */

#ifdef ROMSTART_BOOT_CLEAR
    if (startType & BOOT_CLEAR)
        bootClear();
#endif

    /* and jump to the entry */

    usrInit (startType);
    }


这个是c代码,应该先copyLongs ,然后 usrinit 啊,为什么我在反汇编的结果是先执行 usrinit
 
 
 

回复

77

帖子

0

TA的资源

一粒金砂(初级)

7
 
不清楚,帮你顶!~
 
 
 

回复

67

帖子

0

TA的资源

一粒金砂(初级)

8
 
把反汇编贴出来看看啊
 
 
 

回复

75

帖子

0

TA的资源

一粒金砂(初级)

9
 
仔细调了下 romStart 的执行顺序是对的 不过现在还是到那个地方崩溃
 
 
 

回复

78

帖子

0

TA的资源

一粒金砂(初级)

10
 
有了最新进展 romStart执行顺序是对的 确实是copyLongs  然后usrinit ,

我现在将 ROM_TEXT_ADRS   重新设为0x0
烧进norflash  将带调试信息的相同镜像下进ram
set pc 0x0
然后开始调试
发现在
000003f0        [0xe59f3024]   ldr      r3,0x0000041c ; = #0x33e0063c
000003f4        [0xe50b3014]   str      r3,[r11,#-0x14]
000003f8        [0xe51b3014]   ldr      r3,[r11,#-0x14]
000003fc        [0xe1a00004]   mov      r0,r4
00000400        [0xe1a0e00f]   mov      r14,pc
00000404        [0xe1a0f003] * mov      pc,r3

之后死循环
0x33e0063c是usrInit         的地址

usrInit        [0xe1a0c00d]   mov      r12,r13
33e00640        [0xe92dd800]   stmfd    r13!,{r11,r12,r14,pc}
33e00644        [0xe24cb004]   sub      r11,r12,#4
33e00648        [0xe24dd00c]   sub      r13,r13,#0xc
33e0064c        [0xe50b0010]   str      r0,[r11,#-0x10]

现在他就不断的循环usrInit         哪位知道这是怎么回事啊~ 串口还是没有东西 但是程序没死,我走着走着就又走回来了。
 
 
 

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

随便看看
查找数据手册?

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
快速回复 返回顶部 返回列表