因为想用RMII接口来做ETHERNET,以释放一个UART。
请问该如何修改AM1808的UBOOT和LINUX KERNEL?我用的是网上下载的03.21.00.04的linux和uboot版本。
谢谢指点。
Yaoming Qin:
这个最好能读读u-boot /kernel 的代码进行修改,如果您遇到问题,可以再来上面问
demo xie:
回复 Yaoming Qin:
Yaoming Qin,你好。谢谢你的回复。
能否提示一下需要看哪里文件?毕竟文件太多了。
谢谢。
demo xie:
回复 demo xie:
TI的在线支持太差了,几乎上面很多问题都没有实质性的回答。
不知道这个论坛的意思何在。
Yaoming Qin:
回复 demo xie:
Linux 本来就是以文档少闻名,所以读代码是必须的,代码多是没办法,多读读熟练就好了,kernel中你可以看看linux-2.6.37-psp03.21.00.04.sdk/drivers/net/davinci_mdio.c, uboot中你可以看看drivers/net/davinci_emac.c,具体怎么改,你自己多研究下代码,然后根据你选择的外围芯片进行设置
demo xie:
回复 Yaoming Qin:
Yaoming Qin,
谢谢你的回复。
demo xie:
回复 demo xie:
经过修改代码,我的板子的RMII能正常驱动了,但是出了一个问题,请Yaoming帮忙指导一下:
我做了AM1808+LAN8720A的系统。
在用nfs调试系统是时候发现:
1,u-boot启动后,有时tftp连不上,这是用ping测,结果ping不同,往往复位一下,重新启动就好了。
2,启动u-boot后,下载内核,启动内核,连接server上nfs系统,结果同样出现有时连不上nfs,这是复位系统重新启动启动就好了,有时要重新启动几次。
成功和不成功的概率为50%对50%。
我认为nfs应该没问题,否则就不可能启动 成功。有人说问题出在对8720的复位上。
可我用万用表测了8720的复位脚,也没发现成功时和不成功,该脚的信号有什么不同。
我想会不会是硬件的其他问题,例如不稳定,结果连上nfs后,我在板子上ping 192.168.xx.xx -s 65000,结果ping 500次左右都没有丢包,而且用时也差别不大。
请高手帮忙看看。
谢谢。
*************************************
下面是不能启动的报错节选:
…..
omap_rtc omap_rtc: setting system clock to 2000-01-01 00:00:53 UTC (946684853)
usb 2-1: new full speed USB device using ohci and address 2
usb 2-1: not running at top speed; connect to a high speed hub
hub 2-1:1.0: USB hub found
hub 2-1:1.0: 4 ports detected
davinci_mdio davinci_mdio.0: resetting idled controller
net eth0: attached PHY driver [SMSC LAN8710/LAN8720] (mii_bus:phy_addr=0:00, id=7c0f1)
usb 2-1.1: new full speed USB device using ohci and address 3
IP-Config: Complete:
device=eth0, addr=192.168.20.213, mask=255.255.255.0, gw=192.168.20.254,
host=192.168.20.213, domain=, nis-domain=(none),
bootserver=192.168.20.222, rootserver=192.168.20.222, rootpath=
VFS: Unable to mount root fs via NFS, trying floppy.
VFS: Cannot open root device "nfs" or unknown-block(2,0)
Please append a correct "root=" boot option; here are the available partitions:
Kernel panic – not syncing: VFS: Unable to mount root fs on unknown-block(2,0)
Backtrace:
[<c00349b4>] (dump_backtrace+0x0/0x110) from [<c0395c34>] (dump_stack+0x18/0x1c)
r6:00008000 r5:00000000 r4:c04dfab8 r3:c7828010
[<c0395c1c>] (dump_stack+0x0/0x1c) from [<c0395d10>] (panic+0x74/0x198)
[<c0395c9c>] (panic+0x0/0x198) from [<c0008ea0>] (mount_block_root+0x1c4/0x204)
r3:00000030 r2:00000000 r1:c7829f58 r0:c04492d5
r7:c0027e34
[<c0008cdc>] (mount_block_root+0x0/0x204) from [<c0009084>] (mount_root+0xac/0xd0)
r8:00000000 r7:00000013 r6:c00496c4 r5:c0027e49 r4:00200000
[<c0008fd8>] (mount_root+0x0/0xd0) from [<c0009218>] (prepare_namespace+0x170/0x1c4)
r4:c04df544
[<c00090a8>] (prepare_namespace+0x0/0x1c4) from [<c0008a94>] (kernel_init+0x114/0x14c)
r5:c0008980 r4:c04df4e0
[<c0008980>] (kernel_init+0x0/0x14c) from [<c00496c4>] (do_exit+0x0/0x6c4)
r4:00000000 r3:00000000
Yaoming Qin:
回复 demo xie:
从log上看,只是nfs没有mount, 导致kernel halt, 你还是和网口的phy的工程师聊聊
demo xie:
回复 Yaoming Qin:
yaoming,你好。谢谢回复。
你的意思应该还是硬件方面的问题咯?
demo xie:
回复 demo xie:
我刚做了几个实验:能帮忙看出头绪吗?
实验1:用单独的路由器,只连我的电脑和板子,ip地址在bootargs中固定,结果如下:
uboot失败3次,连nfs成功11次,连nfs失败10次。
实验2:我用公司的局域网,bootargs设定ip=dhcp,结果每次都连接nfs成功。
实验3:用公司局域网,静态设置ip地址,结果:1次u-boot连接网络失败,14次连接nfs成功,10次失败。
实验4:u-boot下ping自己,不能成功,ping ubuntu可以,但也不是100%
实验5:用网线直连电脑和板子,tftp下载uimage正常,在连接nfs的时候,网络连接显示断了,同时提示连接nfs失败。不知道这样是不是正常的。
demo xie:
回复 demo xie:
yaoming, 你好!
请问u-boot的davinci_emac.c中的
static int gen_get_link_speed(int phy_addr)
{
u_int16_t tmp;
if (davinci_eth_phy_read(phy_addr, MII_STATUS_REG, &tmp) &&
(tmp & 0x04)) { …}
……
}
tmp的意思是什么?看了一下代码,知道它的值是MDIO的USRACCESS0的bit 0-15,在datasheet中解释:User data bits. These bits specify the data value read from or to be written to the specified PHY register.
u-boot ping ip,有时会失败,显示:
WARN: emac_send_packet: No link
此时,tmp=0x7809,与0x04与为0,所以没法往下执行。
ping成功的时候,tmp =0x780d,正好可以往下执行。
请问这个0x04是怎么来的?代表什么意思??