IXP425 U-boot移植
学习总结 2008-09-29 11:24:51 阅读176 评论1字号:大中小
前段时间做了IXP425的uboot的移植,移植没有总结,现在总结一下要点和自己移植过程中走的弯路。
移植过程及要点(使用的uboot1.3.3)
1、准备工作:首先需要从网上下载一个IxNpeMicrocode.c,放在u-boot-1.3.3/cpu/ixp/npe/目录下,这个是Intel的微码,二进制形式的,由于Intel没有对这部份开发源码所以uboot里没有包含。由u-boot-1.3.3/cpu/ixp/npe/include/IxNpeMicrocode.h确定IxNpeMicrocode.c的版本为 IXP400 SW Release version 2.0,该文件好像在redboot的里面由。这里提供一个下载路径http://svn.dd-wrt.com:8000/dd-wrt/browser/redboot/packages/devs/eth/intel/npe/npeDl/v2_01/src/IxNpeMicrocode.c?rev=6159&format=raw。
2、移植工作:需要修改一下文件(以IXDPG425作为参考设计,同时参考IXDP425.h)
1)ixdpg425.h:
a、依据原理图修改CONFIG_PHY1_ADDR和CONFIG_PHY_ADDR,这两个为PHY的地址。依据PHY的addr信号线确定;
b、 增加以下定义:
#define CONFIG_ETHADDR 08:00:3e:26:0a:5c
#define CONFIG_ETH1ADDR 08:00:3e:26:0a:5b//两个MAC的mac地址
#define CONFIG_NETMASK 255.255.255.0 //子网掩码
#define CONFIG_IPADDR 192.168.1.21 //IP地址
#define CONFIG_SERVERIP 192.168.1.148 //服务器IP地址,用于tftpboot下载、网络文件系统
c、/include/configs/ixdpg425.h中将
#define CFG_MONITOR_LEN (256 << 10)
改为
#define CFG_MONITOR_LEN (512 << 10)
因为增加了NPE部分微码之后u-boot增加到400K左右
相应的更改环境变量的首地址
#define CFG_ENV_ADDR (PHYS_FLASH_1 + 0x40000)
改为
#define CFG_ENV_ADDR (PHYS_FLASH_1 + 0x80000)
d、另外依据使用的Flash的扇区数确定下面的定义是否需要修改,如果使用的Flash扇区数大于128需要修改。
#define CFG_MAX_FLASH_SECT 128 /*max number of sectors on one chip */
2)u-boot-1.3.3/cpu/ixp/npe/include/IxNpeMicrocode.h
将以下内容注释掉,否则在uboot中还是无法使用网络。
#undef IX_NPEDL_NPEIMAGE_NPEA_HSS0
#undef IX_NPEDL_NPEIMAGE_NPEA_HSS0_ATM_SPHY_1_PORT
#undef IX_NPEDL_NPEIMAGE_NPEA_HSS0_ATM_MPHY_1_PORT
#undef IX_NPEDL_NPEIMAGE_NPEA_ATM_MPHY_12_PORT
#undef IX_NPEDL_NPEIMAGE_NPEA_DMA
#undef IX_NPEDL_NPEIMAGE_NPEA_HSS_2_PORT
#undef IX_NPEDL_NPEIMAGE_NPEA_ETH
#undef IX_NPEDL_NPEIMAGE_NPEA_ETH_LEARN_FILTER_SPAN_FIREWALL
#undef IX_NPEDL_NPEIMAGE_NPEA_ETH_LEARN_FILTER_SPAN_FIREWALL_VLAN_QOS
#undef IX_NPEDL_NPEIMAGE_NPEA_ETH_SPAN_FIREWALL_VLAN_QOS_HDR_CONV
#undef IX_NPEDL_NPEIMAGE_NPEB_ETH
#undef IX_NPEDL_NPEIMAGE_NPEB_ETH_LEARN_FILTER_SPAN_FIREWALL
/* #undef IX_NPEDL_NPEIMAGE_NPEB_ETH_LEARN_FILTER_SPAN_FIREWALL_VLAN_QOS */
#undef IX_NPEDL_NPEIMAGE_NPEB_ETH_SPAN_FIREWALL_VLAN_QOS_HDR_CONV
#undef IX_NPEDL_NPEIMAGE_NPEB_DMA
#undef IX_NPEDL_NPEIMAGE_NPEC_ETH
#undef IX_NPEDL_NPEIMAGE_NPEC_ETH_LEARN_FILTER_SPAN_FIREWALL
/* #undef IX_NPEDL_NPEIMAGE_NPEC_ETH_LEARN_FILTER_SPAN_FIREWALL_VLAN_QOS */
#undef IX_NPEDL_NPEIMAGE_NPEC_ETH_SPAN_FIREWALL_VLAN_QOS_HDR_CONV
#undef IX_NPEDL_NPEIMAGE_NPEC_DMA
3、自己走过的弯路:
经过上面的工作,uboot编译可以顺利通过,下载到板子中也可以起来,貌似移植成功了。可是在我的板子上还是无法访问网络,经过对uboot的深入追踪也没有发现程序有问题。用逻辑分析仪扑捉,执行Mii命令时PHY就是没有响应。经过几天的折腾实在找不到问题所在,只得暂停。
一个偶然的机会,在阅读原理图是发现PHY的复位信号使用的是GPIO!!而在uboot的GPIO设置中没对该GPIO设置,恍然大巫!PHY一直处于复位状态。
在uboot中对该GPIO进行设置,果然网络通了。
另外还有一点,编译uboot新版本是使用的交叉编译器版本不能太低,否则编译通不过。