完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
https://bbs.elecfans.com/jishu_559967_1_1.html
在上面帖子的基础上,目前可以将tftp在uboot的速度保持在100K每秒,与同一环境下的BBB开发板速度差不多,可能由于服务器的原因无法达到BBB以前1.4M每秒的下载速度。 下面是稍微分析一下uboot中ethernet运行流程,有兴趣的可以看看。如果想对某个东西很熟悉就必须自己动手实践,不然看过记住,过一段时间就会忘记。 1.common文件夹下board_r.c的函数initr_net调用,算是Ethernet第一个入口函数。 2.而后net文件夹下的eth_initialize函数被调用。 2.1 miiphy_init phy_init eth_env_init是一个标准化的函数。 2.2 board_eth_init或者cpu_eth_init函数被调用。 3.driver/net/acts_owl_mac.c文件中的owl_mac_initialize函数被调用,进行一系列的初始化,而后调用eth_register,使上面两个函数不至于返回错误。 3.1 dev->init = owl_mac_init; dev->halt = owl_mac_halt; dev->send = owl_mac_send; dev->recv = owl_mac_recv;设置类似一系列的函数, 3.1.1 init进行mac初始化,halt关闭Ethernet,send和recv是接发部分; 3.1.2 特别说明一下,由于datasheet对很多硬件相关的寄存器都没有进行说明,我只是将kernel驱动的代码复制过来而已。 3.2 进行phy和mdio初始化。 3.2.1 owl_mdio_init函数主要是mdio_alloc和mdio_register函数调用。也设置 bus->read = cpsw_mdio_read; bus->write = cpsw_mdio_write; 3.2.2 cpsw_phy_init函数调用phy_connect和phy_config完成phy初始化。 4.owl_mac_recv函数进行接收,猜测MAC_CSR6是状态寄存器,只是无法准确知道其每位的意义。 5.owl_mac_send函数进行发送动作。 ping和tftp命令的实现 1.common文件夹下cmd_net.c向uboot中添加这些命令,需要注意其编译开关。 2.ping等命令的实现代码是在net文件夹下。 3.起初使用ping和tftp命令总是超时,参照网上的说法延长时间和增加次数的做法都是无效的,因为那些经验是针对低版本的uboot的改进。 |
|
相关推荐
|
|
只有小组成员才能发言,加入小组>>
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-12-3 00:00 , Processed in 0.638622 second(s), Total 70, Slave 50 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号