打印
[ZLG-ARM]

请教:SmartARM2200移植u-boot-1.1.4,执行某些命令导致自动复位

[复制链接]
1954|6
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
cszhaoqm|  楼主 | 2007-7-17 00:41 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
使用一热心网友提供的patch,编译后加载至smartarm可以运行u-boot,但发现执行某些命令会导致u-boot自动复位,通过增加串口打印消息跟踪,发现在commomcommand.c中的cmd_tbl_t *find_cmd (const char *cmd)函数中出现异常,下发help命令时,串口打印信息:

U-Boot 1.1.4 (Jul 17 2007 - 00:36:58)

U-Boot code: 81400000 -> 814182AC  BSS: -> 8141C850   // TEXT_BASE设置为0x81400000

RAM Configuration:
Bank #0: 81000000  8 MB
Flash:  2 MB
*** Warning - bad CRC, using default environment

In:    serial
Out:   serial
Err:   serial
Hit any key to stop autoboot:  5  0 
=>  help

&__u_boot_cmd_start: 0x81417ED4, len:0x45A4    // 命令列表为增加的打印信息 
cmdtp: 0x81417ED4, autoscr
cmdtp: 0x81417EEC, bdinfo
cmdtp: 0x81417F04, go
cmdtp: 0x81417F1C, reset
cmdtp: 0x81417F34, bootm
cmdtp: 0x81417F4C, boot
cmdtp: 0x81417F64, bootd
cmdtp: 0x81417F7C, iminfo
cmdtp: 0x81417F94, imls
cmdtp: 0x81417FAC, coninfo
cmdtp: 0x81417FC4, bootelf
cmdtp: 0x81417FDC, bootvx
cmdtp: 0x81417FF4, flinfo                     // 搜索到此处即自动复位 



而执行bdinfo命令响应是正确的:
=>  bdinfo

&__u_boot_cmd_start: 0x81417ED4, len:0x45A4
cmdtp: 0x81417ED4, autoscr
cmdtp: 0x81417EEC, bdinfo                     // 成功搜索到该命令 

return cmdtp: 0x81417EEC
found - check max args
arch_number = 0x000000FB
env_t       = 0x00000000
boot_params = 0x81000100
DRAM bank   = 0x00000000
-> start    = 0x81000000
-> size     = 0x00800000
ethaddr     = 00:50:C2:1E:AF:FB
ip_addr     = 192.168.0.25
baudrate    = 115200 bps
=>  

调试中发现,如果屏蔽某些代码,使代码体积变化时,能搜索到的命令数目也相应变化。怀疑可能是start.S中处理导致的问题,请有经验的高手帮忙指点一下,多谢了!

start.S和patch文件附在楼下。

相关帖子

沙发
cszhaoqm|  楼主 | 2007-7-17 00:44 | 只看该作者

附:start.S和patch文件

使用特权

评论回复
板凳
armecos| | 2007-7-17 06:29 | 只看该作者

可以参考下面的文档

使用特权

评论回复
地板
cszhaoqm|  楼主 | 2007-7-17 22:34 | 只看该作者

多谢楼上,还是没搞懂start.S中向量复制时长度为何是1024字节

    adr r0,real_vectors
    add r2,r0,#1024      // 此处为什么是1024字节?实际上屏蔽此段好像也没影响,自动复位的现象依旧
    ldr r1,=0x81000000   // RAM基地址
    add r1,r1,#0x08
////////////////////////////////////////////////////////
v_copy_loop:
    ldmia r0!,{r3-r10}
    stmia r1!,{r3-r10}
    cmp r0,r2
    ble    v_copy_loop
....
real_vectors:
    b    reset
    b    undefined
    b    software
    b    preabort
    b    dataabort
    b    not_use
    b    irq
    b    fiq

undefined:
    mov     r6,#3
    b    reset
software:
    mov    r6,#4   
    b    reset   
preabort:
    mov    r6,#5
    b    reset
dataabort:
    mov    r6,#6
    b    reset
not_use:
    mov    r6,#7
    b    reset
irq:   
    mov    r6,#8
    b    reset
fiq:
    mov    r6,#9
    b    reset

使用特权

评论回复
5
cszhaoqm|  楼主 | 2007-7-18 21:27 | 只看该作者

多谢楼上

老兄,我也不想在这上面花时间,但你给的现成的,我还是不知道是什么问题导致,不利于学习和问题的解决,知其然还得要知其所以然;开发产品进度最重要,但学习的话解决问题、弄明白原因比较重要,谢谢!

使用特权

评论回复
6
armecos| | 2007-7-18 23:32 | 只看该作者

你买的《ecos增值包》是开发环境,

    可不只是一个现成的U-BOOT,它就是用来开发调试用的,当然还包括很多其他内容,那里面教了怎样发现问题、解决问题。而且你一用就知道为什么输入命令就死机的原因。我们做《ecos增值包》的目的就是把用户问到的问题全部总结到这个包里,一网打尽,省得问一个答一个浪费时间,还尽是重复的,你是我遇到的第8个问这个同样问题的人了(问得不得要领,离答案越来越远)。现在《ecos增值包》提供了(1)一个正确运行的U-BOOT for SMARTARM2200参考;(2)一篇文档;(3)SMARTARM2200上跑U-BOOT的解决方案;(4)稳定的开发环境。你可能不知道这个问题早就已经被解决了7次了,为什么还要再浪费一次时间呢!
    

使用特权

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

本版积分规则

23

主题

66

帖子

0

粉丝