TI中文支持网
TI专业的中文技术问题搜集分享网站

am335 2012-10 版本 u boot

问题 1

关于U boot启动方式有这么一个定义

#define CONFIG_BOOTCOMMAND \
"if mmc rescan ${mmcdev}; then " \
   "echo SD/MMC found on device ${mmcdev};" \
   "if run loadbootenv; then " \
      "echo Loaded environment from ${bootenv};" \
      "run importbootenv;" \
   "fi;" \
   "if test -n $uenvcmd; then " \
      "echo Running uenvcmd …;" \
      "run uenvcmd;" \
   "fi;" \
   "if run loaduimagefat; then " \
      "run mmcboot;" \
   "elif run loaduimage; then " \
      "run mmcboot;" \
   "else " \
      "echo Cound not find ${bootfile} ;" \
   "fi;" \
"else " \

   "run nandboot;" \
"fi;" \

含义是先检测 是否有SD卡插入,然后判断启动方式,现在为了支持从USB中读入image文件 改成

"if mmc rescan ${mmcdev}; then " \
"echo SD/MMC found on device ${mmcdev};" \
"if run loadbootenv; then " \
"echo Loaded environment from ${bootenv};" \
"run importbootenv;" \
"fi;" \
"if test -n $uenvcmd; then " \
"echo Running uenvcmd …;" \
"run uenvcmd;" \
"fi;" \
"if run loaduimagefat; then " \
"run mmcboot;" \
"elif run loaduimage; then " \
"run mmcboot;" \
"else " \
"echo Cound not find ${bootfile} ;" \
"fi;" \
"elif usb start ${usbdev}; then " \
"echo USB found;" \
"if run usbloadbootenv; then " \
"run usbshell;" \
"fi;" \
"else " \
"run nandboot;" \
"fi;" \

红色为添加部分, usbdev=0,仿照mmcdev的写法,然后在am335 evm 中执行代码时 无论 usb start 成功与否 都会执行这个分支下面的命令(都会执行红色部分)

想问一下,出错在什么地方,应该怎么改正。

问题2  

在U boot中start.s中有这么一段程序

.globl _start
_start: b reset
ldr pc, _undefined_instruction
ldr pc, _software_interrupt
ldr pc, _prefetch_abort
ldr pc, _data_abort
ldr pc, _not_used
ldr pc, _irq
ldr pc, _fiq

上面的ldr 看起来是一直没有执行,关于这段代码 我查阅到的所有的uboot解析 文章中都只是解释 ldr的用法 含义,还有这段话的具体含义,但就是没有说明为什么要加在这里,想问一下 这段话是为了执行什么,可不可以删掉

yin zhang1:

第一个问题已经解决 2012 10 版本里面的uboot函数有错误

在 u-boot/common/cmd_usb.c文件中

int do_usb(cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[]) 函数 中的 usb start 命令下的 return 0 改成下面红色字体部分

/*return 0; */ if(usb_started) return 0; else return 1;

赞(0)
未经允许不得转载:TI中文支持网 » am335 2012-10 版本 u boot
分享到: 更多 (0)