我自己画了一张AM3358的板子,上面没有eeprom,于是当我用uniflash烧写emmc的时候,总是报错,为此我找到相关的代码进行修改,有一些成效,但是仍然烧写不进去,目前 spl 仍然不能成功的初始化 USB RNDIS,求助。
Jian Zhou:
具体能提供些信息么?包括代码修改的哪里?
Fei Zhang10:
回复 Jian Zhou:
您好,我定位到的代码在/home/zyp/ti-sdk-am335x-evm-06.00.00.00/board-support/u-boot-2013.01.01-psp06.00.00.00/board/ti/am335x/board.c中,我注释掉了void s_init(void)函数中的 hang();函数,也注释掉了mux.c中最后一行的hang();删除了static int read_eeprom(void)中的if语句,目的是想让程序继续执行下去,但是在s_init()函数执行完了之后(能打印出我加在函数末尾的字符串),我就不知道程序去哪了,串口也没有打印信息出来。唯一的现象就是主机上的本地连接很卡,而且ping不通我的目标板了。说起来不清楚,您看看下面的截图
Fei Zhang10:
回复 Jian Zhou:
这是我注释掉hang()函数之后的,
Fei Zhang10:
回复 Jian Zhou:
我删掉了read_eeprom();里的程序。
Fei Zhang10:
回复 Jian Zhou:
发图需要审核,我就发几张关键的,程序能跑到这里,能打印出puts();中的信息,但是之后去哪了我就不知道了
Fei Zhang10:
回复 Jian Zhou:
这是uniflash和串口的打印信息,有些是我调试程序的时候改了的,
Steven Liu1:
回复 Fei Zhang10:
看你上面发了比较多的信息,大致明白是怎么个意思了。你看一下和你的情况是不是一致。
首先,你要理解一下Uniflash的工作原理,有助于你去理解卡在哪里,Uniflash是先通过USB口启动把spl. uboot下载到板子上去,让板子进入到uboot阶段后,再通过脚本的方式来进行烧录操作的。
其次,在你的log中,发现了EEPROM ID读取失败的信息,你应该是没有把这部分的逻辑处理好,从而卡在这里没法走下去。
TI发布了很多不同类型的开发板,开发板上有DDR2的,也有DDR3的,因此,不同类型的板子之间,配置是差异很大的。于是在板子的设计时和原始的Linux SDK中,我们通过I2C总线读取EEPROM的ID信息,从而可以得知当前板子的资源配置。如果这个ID信息逻辑没有处理的话,拿不到ID就会卡在那里出不去。所以你现在要解决的是板子的资源配置问题,EEPROM ID的逻辑处理,只注释掉一个hang显然是解决不了问题的。
Steven Liu1:
回复 Fei Zhang10:
另外,在Linux SDK 6.0上,这部分的逻辑处理,我们有一个简要的指导说明,其他版本的思路是类似的,你可以参考:
http://www.deyisupport.com/question_answer/dsp_arm/sitara_arm/f/25/p/68813/163930.aspx#163930
Fei Zhang10:
回复 Steven Liu1:
感谢您的回复,我明天检查一下再请教您
Fei Zhang10:
回复 Steven Liu1:
您好,刘先生,现在第一阶段似乎已经完成了,串口打印出
musb-hdrc: MHDRC RTL version 2.0
musb-hdrc: setup fifo_mode 4
musb-hdrc: 28/31 max ep, 16384/16384 memory
USB Peripheral mode controller at 47401000 using PIO, IRQ 0
Using default environment
usb_ether
using musb-hdrc, OUT ep1out IN ep1in STATUS ep2in
MAC 80:30:dc:95:a9:81
HOST MAC de:ad:be:af:00:00
RNDIS ready
,现在的问题是,计算机的网络与共享中心没有看到有新增的连接,计算机会提示有RDNIS设备,在设备管理器中有“未知USB设备(设备描述符请求失败)”的提示。请问这是不是驱动的问题,我该怎么做呢?网上好像没有看到这类问题