使用一热心网友提供的patch,编译后加载至smartarm可以运行u-boot,但发现执行某些命令会导致u-boot自动复位,通过增加串口打印消息跟踪,发现在commomcommand.c中的cmd_tbl_t *find_cmd (const char *cmd)函数中出现异常,下发help命令时,串口打印信息:<br /><br />U-Boot 1.1.4 (Jul 17 2007 - 00:36:58)<br /><br />U-Boot code: 81400000 -> 814182AC BSS: -> 8141C850 <font color=#FF0000>// TEXT_BASE设置为0x81400000</font><br /><br />RAM Configuration:<br />Bank #0: 81000000 8 MB<br />Flash: 2 MB<br />*** Warning - bad CRC, using default environment<br /><br />In: serial<br />Out: serial<br />Err: serial<br />Hit any key to stop autoboot: 5 0 <br />=> help<br /><br />&__u_boot_cmd_start: 0x81417ED4, len:0x45A4 <font color=#FF0000>// 命令列表为增加的打印信息 </font><br />cmdtp: 0x81417ED4, autoscr<br />cmdtp: 0x81417EEC, bdinfo<br />cmdtp: 0x81417F04, go<br />cmdtp: 0x81417F1C, reset<br />cmdtp: 0x81417F34, bootm<br />cmdtp: 0x81417F4C, boot<br />cmdtp: 0x81417F64, bootd<br />cmdtp: 0x81417F7C, iminfo<br />cmdtp: 0x81417F94, imls<br />cmdtp: 0x81417FAC, coninfo<br />cmdtp: 0x81417FC4, bootelf<br />cmdtp: 0x81417FDC, bootvx<br />cmdtp: 0x81417FF4, flinfo <font color=#FF0000>// 搜索到此处即自动复位 </font><br /><br /><br /><br />而执行bdinfo命令响应是正确的:<br />=> bdinfo<br /><br />&__u_boot_cmd_start: 0x81417ED4, len:0x45A4<br />cmdtp: 0x81417ED4, autoscr<br />cmdtp: 0x81417EEC, bdinfo <font color=#FF0000>// 成功搜索到该命令 </font><br /><br />return cmdtp: 0x81417EEC<br />found - check max args<br />arch_number = 0x000000FB<br />env_t = 0x00000000<br />boot_params = 0x81000100<br />DRAM bank = 0x00000000<br />-> start = 0x81000000<br />-> size = 0x00800000<br />ethaddr = 00:50:C2:1E:AF:FB<br />ip_addr = 192.168.0.25<br />baudrate = 115200 bps<br />=> <br /><br />调试中发现,如果屏蔽某些代码,使代码体积变化时,能搜索到的命令数目也相应变化。怀疑可能是start.S中处理导致的问题,请有经验的高手帮忙指点一下,多谢了!<br /><br />start.S和patch文件附在楼下。<br /> |
|