uboot网卡驱动移植

  • 定义相应的宏,使能uboot的网卡
  • 添加ping和tftp命令
  • 移植网口初始化代码
  • 注册网卡

定义相应的宏,使能uboot的网卡

官方的uboot默认是不使能网卡相关的代码的,既在配置头文件中CONFIG_CMD_NET默认是没有被定义的

要使能网卡相关代码就要在配置头文件中添加CONFIG_CMD_NET这个宏,切记还要去掉#undef CONFIG_CMD_NET这个定义

添加ping和tftp命令

ping命令在官方uboot中也没有使能,所以需要在配置头文件中添加对应的宏

tftp命令在官方的uboot中是默认被使能的,不依赖于其他的宏

移植网口初始化代码

在三星的uboot中网卡的初始化在bord_init函数中进行,所以我们将三星的网卡初始化移植到uboot官方的uboot中的bord_init函数中

三星uboot:在对于我的开发板用的是SMC911X的网卡所以,所以board_init()函数调用smsc9220_ore_init()函数初始化网卡,我们需要将smsc9220_ore_init()移植到我们的uboot中,smsc9220_ore_init函数以及于其相关的宏都在s5pc11x.c中定义。

在board_init()函数中调用smsc9220_ore_init()函数,并将smsc9220_ore_init()函数移植到goni.c文件中。
移植后的uboot官方的uboot:

注册网卡

开启网络相关的宏后,重新编译uboot并上电,板子打印如下信息

这两句错误在初始化网卡时eth_initialize函数中打印


eth_initialize()函数调用board_eth_init()或cpu_eth_init()函数来注册网卡设备,但官方的uboot中board_eth_init()函数是空函数,而cpu_eth_init()函数根本没有定义。所以需要将三星uboot中注册网卡的函数移植到这里

三星的uboot在eth_initialize()函数中通过smc911x_initialize()函数中注册网卡设备

smc911x_initialize()这个函数给网卡结构体的init、halt、send、recv等函数赋值,并通过eth_register()这个函数将该结构体注册到网卡设备的列表中,从而完成网卡的注册。在后面uboot使用网络相关的命令是会同过这个结构体中成员变量对网卡进行操作。
与smc911x网卡相关的函数都在smc911.c中驱动文件中(包括smc11x_initialize这个函数),这是uboot自带的驱动文件,不需要移植直接调用其中的函数就行。

只需要在board_eth_init()这个空函数中声明并调用smc11x_initialize函数就能完成网卡的注册了

uboot网卡驱动移植相关推荐

  1. AM335x(TQ335x)学习笔记——Nandamp;amp;网卡驱动移植

    移植完成声卡驱动之后本想再接再励,移植网卡驱动,但没想到的是TI维护的内核太健壮,移植网卡驱动跟之前移植按键驱动一样简单,Nand驱动也是如此,于是,本人将Nand和网卡放在同一篇文章中介绍.介绍之前 ...

  2. 驱动程序之_3_网络设备_3_网卡驱动移植

    驱动程序之_3_网络设备_3_网卡驱动移植 网卡出厂一般都会有驱动程序模板,网卡接到不同的Cpu上,引脚.参数有所不同,移植过程要做的就是根据硬件修改引脚地址.参数 一般来说,需要修改的是片选引脚.中 ...

  3. 关于国嵌 实验2 5 网卡驱动移植 网卡地址 的问题

    实验2.5 网卡驱动移植 网卡地址等几个宏的数值怎么得到的 实验2.5 网卡驱动移植中有几个宏 #define CONFIG_DM9000_BASE 0x20000300 #define DM9000 ...

  4. linux4.1内核配置以及编译及千兆网卡dp83867网卡驱动移植

    一  内核配置编译 1首先解压内核 tar jxvf linux-at91-4.1.tar.bz2: 2下载编译链 在ubuntu命令行中输入sudo apt-get install gcc-arm- ...

  5. STM32F1网络编程-W5500网卡驱动移植

    W5500网卡驱动移植 1.W5500介绍 W5500 芯片是硬连线 TCP/IP 嵌入式以太网控制器,可提供与嵌入式系统的更轻松的 Internet 连接. W5500 使用户只需使用嵌入了 TCP ...

  6. linux gianfar 网口驱动源码,基于MPC8313ERDB平台的Marvell88E1111型网卡驱动移植(uboot+kernel)...

    最近一个月挣扎于千兆网的设备驱动移植,现在终于弄出来了,虽然有点累但是收获还是挺多的. 进入主题前,首先要感谢网友gorilla0123,他的博客给了我很多启发,在此非常感谢.我建议做网卡驱动这方面的 ...

  7. linux 内核 网卡驱动 移植,linux内核移植步骤添加dm9000网卡驱动(设备树).docx

    linux内核移植步骤添加dm9000网卡驱动(设备树).docx LINUX内核移植步骤2015年05月13日星期三上午1105往设备树中添加网卡驱动1.选平台,指定交叉编译工具链1.在MAKEFI ...

  8. [xhr4412][extension 4] u-boot-2020.07 DM9621 网卡驱动移植

    文章目录 一.前言 二.硬件环境 1. Exynos4412 (USB 2.0 Host Controller) 2. USB3503 (USB HUB) 3. DM9621 (USB Device) ...

  9. linux 内核 网卡驱动 移植,Linux内核移植步骤_添加DM9000网卡驱动(设备树).docx

    Linux内核移植步骤_添加DM9000网卡驱动(设备树) Linux内核移植步骤2015年05月13日星期三上午 11:05往设备树中添加网卡驱动:1.选平台,指定交叉编译工具链:(1).在Make ...

最新文章

  1. Linux内核网络栈1.2.13-网卡设备的初始化流程
  2. Java虚拟机规范(目录)
  3. java 实现接口后重写方法报错
  4. Docker cgroups作用(十)
  5. Win10上rabbitmq 安装
  6. C++学习之路 | PTA乙级—— 1020 月饼 (25分)(精简)
  7. c语言中buf内容怎么给指针,C语言 指针的使用
  8. hdu1251(统计难题)
  9. 容器编排技术 -- Kubernetes Deployment
  10. windows下用XShell远程ubuntu时连接失败
  11. oracle 不等函数,Oracle 不常用函数
  12. 3dm游戏运行包_动作游戏ACT 逃离丧尸镇 Shadows of Kurgansk 电脑游戏资源
  13. 没事不要在for循环期间增减迭代序列的成员
  14. Source Code Pro字体在Notepad++和sublime编辑器上的设置
  15. SQL数据库异地备份(小白篇)两台服务器之间备份
  16. 【图像检索】基于matlab GUI综合颜色和形状特征图像检索【含Matlab源码 1370期】
  17. c#反编译生成DLL过程
  18. 路由器重温——MP配置管理
  19. 使用MapReduce实现k-means算法
  20. 亚洲杯:艾因月夜,里皮妙手导演逆转

热门文章

  1. 计算机网络交换机组网及虚拟局域网实验报告,計算机网络实验虚拟局域网VLAN实验报告.doc...
  2. logback--基础--04--配置--appender
  3. 项目教程 | Pycharm+Pyqt5+Eric6实现逻辑与界面分离(实例教学)
  4. Phoenix 技术分享
  5. PHP将数据传给JavaScript,如何将变量和数据从PHP传递到JavaScript?
  6. 隐藏CNZZ统计代码
  7. centos安装realvnc
  8. 《Java语言程序设计——坦克大战单机游戏》源码以及实验报告
  9. python练习题:罗马数字转换
  10. OpenStack该不该“隐形”?