s5p4418的uboot网络无法使用问题解决

3 篇文章 0 订阅
1 篇文章 0 订阅

一.前言

	 s5p4418 是一个三星的基于ARM的,cortex-A9的四核处理器,这个
处理器目前常用的两个系统层固件分别是:
	 uboot2014 + linux3.4.39  和 uboot2016 + linux4.4.172 两个版本。
本次针对的是 uboot2014 + linux3.4.39 ,对应的版本进行修复,对于
uboot2016 + linux4.4.172 的请参考我的另一篇文章:
https://blog.csdn.net/weixin_43536180/article/details/117048083
 	本次使用的硬件设备是nanopiM2 + nanopi提供的Ubuntu-Mate 固件,
对于nanopi2系列,或者其他使用s5p4418以及s5p6818处理器的读者
都可以参考,笔记对比过s5p4418和 s5p6818的以太网接口无论是引
脚还是控制器的寄存器地址都是一模一样的,因此使用的引脚配置和
驱动程序也是一样的。

二. 源码下载和切换分支

源码下载和切换分支:
git clone https://github.com/friendlyarm/uboot_nanopi2.git
cd uboot_nanopi2
git checkout nanopi2-lollipop-mr1
make s5p4418_nanopi2_config
在这里插入图片描述

注意:拉取代码可能有点慢或多次失败请保持耐心多试几次!!
提示: 详情可参考维基主页 http://wiki.friendlyarm.com/wiki/index.php/NanoPi_M2/zh

三. 拷贝补丁包为源码打补丁并编译

拷贝补丁包: s5p4418_uboot2014_net.patch 到源码目录下,补丁包关注我可以免费下载!!!
在这里插入图片描述
打补丁:
git apply s5p4418_uboot2014_net.patch
打完补丁检查代码修改情况:
git diff --stat --name-only 可以查看被修改的文件有4个!!
在这里插入图片描述
编译源码:
make CROSS_COMPILE=arm-linux-
注意:没安装交叉编译工具链参考上面的维基!!!
成功编译后我们得到文件 u-boot.bin
在这里插入图片描述

四.烧写到开发板中

因为uboot2014 里面已经集成了烧写工具fastboot,因此可以借助fastboot进行烧写u-boot.bin 文件。
先在开发板uboot命令行输入:
fastboot
在这里插入图片描述
在ubuntu 即电脑PC端会检查到一个类似安卓的设备:
fastboot flash bootloader u-boot.bin 烧写命令
fastboot reboot 重启板子的命令
fastboot flash bootloader u-boot.bin; fastboot reboot;
在这里插入图片描述
至此烧写完毕!!

五.uboot网络测试

配置板子的IP地址信息,具体配置参考自己的网络环境不要直接使用我的IP地址!!
setenv ipaddr 192.168.30.68 [设备IP]
setenv serverip 192.168.30.168 [电脑ubuntu的IP]
setenv gatewayip 192.168.30.1 [网关地址]
setenv netmask 255.255.255.0 [子网掩码]
saveenv

5.1 ping 服务器测试

ping 192.168.30.168
在这里插入图片描述
显示 host 192.168.30.168 is alive 表示ping 通了!!

5.2 tftp 下载文件测试

tftp 42000000 uImage
在这里插入图片描述
测试的情况来看uboot的网速大概是1.8MB/s 左右。

六. 源码简单讲解

如果对源码不太感兴趣的老哥可以跳过这一节!!!
board/s5p4418/nanopi2/eth.c 是板子的以太网初始化函数入口, board_eth_init 函数,这个函数由uboot的初始化流程调用。
需要注意的三点是:

  1. 配置引脚功能复用和初始化phy芯片 RTL8211E。
  2. 配置以太网的时钟源为外部25MHZ的晶振。
  3. 让以太网控制器的退出复位状态。

引脚功能复用配置:
在这里插入图片描述
复位以太网芯片RTL8211E:
在这里插入图片描述
配置以太网的时钟源:
在这里插入图片描述
注意不配置这个时钟源,将无法操作以太网控制器的DMA部分,DMA用于以太网的数据传输,即寄存器 0xc0061000 部分寄存器,详情参数数据手册!!

以太网控制器的退出复位状态:
在这里插入图片描述
注意s5p4418的每一个外设上电默认处于复位状态,CPU是无法写对应外设的寄存器的,需要让外设退出复位状态, 如果不复位则无法读写 0xc0060000 以太网控制器部分的寄存器,详情参考数据手册。

最后执行以太网的驱动程序初始化:
drivers/net/designware.c 程序作为以太网控制的驱动程序, 以太网的 phy 部分的mdio总线驱动,以太网控制器驱动,以太网DMA传输数据都在这个代码里面了,感兴趣的可以参考!!

对于phy驱动修复一个小bug,对于s5p4418,和s5p6818都会出现一种情况就是上电第一次ping 是不通的,非要第二次ping 才通。
解决办法是:
把 rtl8211x_parse_status(phydev); 函数换成 genphy_parse_link(phydev);

至此讲解完毕,有不明白的请回复留言!!

补丁包下载地址: https://download.csdn.net/download/weixin_43536180/18886969
关注可以免费,尊重原创哦!!

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值