由于笔者使用的是AR8035芯片以太网接口是RGMII模式,所以后面根据这个模式进行修改SDK包的uboot,回顾之前我所使用的编译配置文件是 am335x_shc_netboot_defconfig
一. 修改SPL阶段的初始化代码
在uboot源码目录下:
vim arch/arm/mach-omap2/boot-common.c
找到函数 spl_board_init 把 am33xx_spl_board_init 函数注释。
二.修改uboot的第二阶段代码
vim board/bosch/shc/board.c
修改位置1:
注释代码句:
// writel(MII_MODE_ENABLE, &cdev->miisel);
// cpsw_slaves[0].phy_if = PHY_INTERFACE_MODE_MII;
并添加新的代码句:
writel((RGMII_MODE_ENABLE | RGMII_INT_DELAY), &cdev->miisel);
cpsw_slaves[0].phy_if = PHY_INTERFACE_MODE_RGMII;
主要是配置网口1的以太网接口为 RGMII 模式,SDK包默认是MII模式。
修改位置2:
board/bosch/shc/board.c 文件下面还有另一处要修改就是PHY芯片的地址,笔者的AR8035的PHY地址是4,因此改成4,SDK包默认是0。
修改位置3:
修改引脚的复用功能为RGMII :
vim board/bosch/shc/mux.c
增加下面的引脚配置结构体数组 :
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},
};
修改位置4:
把enable_shc_board_pin_mux 函数里面的
configure_module_pin_mux(mii1_pin_mux);
改成
configure_module_pin_mux(rgmii1_pin_mux);
更改uboot部分环境变量避免UBOOT进入死循环不断加载内核!!
vim include/configs/am335x_shc.h
修改位置5:
//# define CONFIG_BOOT_RETRY_TIME 30
//# define CONFIG_RESET_TO_RETRY
这两句会导致UBOOT自动加载内核不成功重启,因此屏蔽注释掉!!
修改位置6:
注释 Network Boot 下面的自动加载内核脚本程序。避免UBOOT会自动进入内核加载。
修改位置7:
增加代码句:支持AR系列的PHY芯片如AR8031 、AR8035、AR8051
#define CONFIG_PHY_ATHEROS
注意上面仅仅修改了源码中的4个文件,笔者会在个人下载中提供这几个修改的文件,
如不想修改源码可以直接用我提供的代码替换然后重新编译uboot。
粉丝可以直接到我的主页免费下载修改的文件!!!!
三.重新编译UBOOT并测试网络
make CROSS_COMPILE=arm-linux-gnueabihf- distclean
make CROSS_COMPILE=arm-linux-gnueabihf- O=am335x_evm am335x_shc_netboot_defconfig
make CROSS_COMPILE=arm-linux-gnueabihf- O=am335x_evm
执行上面三个命令重新编译UBOOT,按照上一期的内容传输到板子运行。
u-boot-spl.bin大约55KB
传输后的效果
u-boot.img 文件大约 302KB
传输后的效果
修改IP并进行 ping 测试
tftp 测试 修改服务器IP然后TFTP拉取文件到DDR中!!
至此对官方SDK6.03的 UBOOT网卡的移植已经成功了。