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

AM335X移植android系统的网络问题

目前使用的是TI_Android_JB_4.2.2_DevKit_4.1.1.bin的android开发包,在调试u-boot和kernel的网络时,均出现PHY能检测到,但是无法ping通。

该u-boot版本为:2013.01.01-00123-g2830d15-dirty, linux内核版本为:Linux-3.2.0-00244-gcf99001-dirty。

PHY芯片采用的ar8035,硬件连接PHY地址为4,相应u-boot和linux内核的cpsw_slaves[].phy_id均修改为了4。

cpu采用的是25M外部晶振,PHY芯片也采用25M外部晶振,连接方式按照默认的RGMII方式连接:

static struct module_pin_mux rgmii1_pin_mux[] = {

{OFFSET(mii1_txen), MODE(2)},                   /* RGMII1_TCTL */

{OFFSET(mii1_rxdv), MODE(2) | RXACTIVE},        /* RGMII1_RCTL */

{OFFSET(mii1_txd3), MODE(2)},                   /* RGMII1_TD3 */

{OFFSET(mii1_txd2), MODE(2)},                   /* RGMII1_TD2 */

{OFFSET(mii1_txd1), MODE(2)},                   /* RGMII1_TD1 */

{OFFSET(mii1_txd0), MODE(2)},                   /* RGMII1_TD0 */

{OFFSET(mii1_txclk), MODE(2)},                  /* RGMII1_TCLK */

OFFSET(mii1_rxclk), MODE(2) | RXACTIVE},       /* RGMII1_RCLK */

{OFFSET(mii1_rxd3), MODE(2) | RXACTIVE},        /* RGMII1_RD3 */

{OFFSET(mii1_rxd2), MODE(2) | RXACTIVE},        /* RGMII1_RD2 */

{OFFSET(mii1_rxd1), MODE(2) | RXACTIVE},        /* RGMII1_RD1 */

{OFFSET(mii1_rxd0), MODE(2) | RXACTIVE},        /* RGMII1_RD0 */

{OFFSET(mdio_data), MODE(0) | RXACTIVE | PULLUP_EN},/* MDIO_DATA */

OFFSET(mdio_clk), MODE(0) | PULLUP_EN},        /* MDIO_CLK */

{-1}, };

该u-boot的网络驱动和U-Boot 2011.09的网络驱动有些差异。

可以确定的是U-Boot 2011.09可以正常驱动该PHY芯片。

目前该u-boot可以通过mdio正常读取phy芯片寄存器并检测到100 link up,设置ipaddr后,但是仍然无法ping通,请问u-boot还需要怎么配置才能ping通?

z m:

石沉大海 。。。。。

kooking:

一般来说u-boot驱动正常工作时,配置一下ipaddr和mac地址就可以ping主机,但主机无法ping通板子。如果2013.01.01-00123-g2830d15-dirty无法正常工作,可能需要仔细对比一下两个u-boot中网络设置上的差异。

更好的办法是,直接使用可以使用可正常运行的U-Boot 2011.09加载现在的内核就可以,A版本的u-boot引导B版本的kernel也是常使用的方法~

z m:

回复 kooking:

这种方法我已经使用过了是可以正常加载linux内核的,但是同理该linux内核仍然能link up ,无法ping通。

因为要用到的android系统太大,需要通过网络加载文件系统,不然调试非常麻烦。

u-boot配置我仔细比对过了,基本差不多,另外我也通过u-boot 的mii命令比对了两个版本u-boot的phy芯片的32个寄存器,也都一样。

u-boot不行的话用其他版本替代也可以的 ,关键是linux内核网络也无法使用,ar8035和ar8031应该相同phy ID。

目前linux内核方面修改了arch/arm/mach-omap2/device.c里面的cpsw相关phy addr的配置,差异就是该linux内核的cpsw多了cpts方面的东西。

查看config文件cpts功能好像并没有开启,但是就是没法ping通。

z m:

回复 z m:

从linux内核启动日志 发现目前我使用的am335x cpu 版本是:AM335X ES1.0 (sgx neon )

官方的linux内核启动日志样本发现他们arm335x cpu 版本是:AM335X ES2.0 (sgx neon )

目前不确定是不是cpu 版本不一致导致的网络问题?

Yaoming Qin:

回复 z m:

z m

从linux内核启动日志 发现目前我使用的am335x cpu 版本是:AM335X ES1.0 (sgx neon )

官方的linux内核启动日志样本发现他们arm335x cpu 版本是:AM335X ES2.0 (sgx neon )

目前不确定是不是cpu 版本不一致导致的网络问题?

z m:

回复 Yaoming Qin:

关于该Linux-3.2.0-00244-gcf99001-dirty版本内核,网络无法ping通的一个现象就是:

修改u-boot的bootargs参数使加载ramdisk文件系统(方便调试,android文件系统太大);

从mmc加载 可以让网络芯片正常工作的内核和ramdisk文件系统后,挂载mmc,修改加载内核为该版本的内核;

然后通过WARMRST 引脚复位板子,那么启动的内核为该版本的内核和ramdisk文件系统了;

那么发现这个内核也可以ping通其他ip,如果板子掉电后,再启动这个内核,就无法ping通了;

赞(0)
未经允许不得转载:TI中文支持网 » AM335X移植android系统的网络问题
分享到: 更多 (0)