博客
关于我
Uboot DM9621网卡移植之路
阅读量:545 次
发布时间:2019-03-07

本文共 1738 字,大约阅读时间需要 5 分钟。

移植过程中的故障排除

在之前的移植过程中,我们已经成功完成了 USB 主机控制器和 USB 3503 Hub 的配置。接下来我们需要重点关注 DM9621 网卡的移植实现。

DM9621 网卡驱动移植

为了实现 DM9621 网卡在 Uboot 中的工作,我们需要完成以下几个关键步骤:

  • 设备驱动注册

    首先,我们需要在设备文件中添加 DM9621 网卡的驱动代码。具体实现如下:

    U_BOOT_DRIVER(dm9601_eth) = {
    .name = "dm9601_eth",
    .id = UCLASS_ETH,
    .probe = dm9601_eth_probe,
    .ops = &dm9601_eth_ops,
    .priv_auto_alloc_size = sizeof(struct dm9601_private),
    .platdata_auto_alloc_size = sizeof(struct eth_pdata),
    };
  • 设备驱动操作集

    操作集定义了网卡的基本操作接口:

    static const struct eth_ops dm9601_eth_ops = {
    .start = dm9601_eth_start,
    .send = dm9601_eth_send,
    .recv = dm9601_eth_recv,
    .free_pkt = dm9601_free_pkt,
    .stop = dm9601_eth_stop,
    .write_hwaddr = dm9601_write_hwaddr,
    };
  • 设备扩展器表

    我们需要创建一个支持 DM9621 的 USB 设备扩展器表:

    static const struct usb_device_id dm9601_eth_id_table[] = {
    USB_DEVICE(0x07aa, 0x9601), /* Corega FEther USB-TXC */
    USB_DEVICE(0x0a46, 0x9601), /* Davicom USB-100 */
    USB_DEVICE(0x0a46, 0x0268), /* ZT6688 USB NIC */
    // ... 其他设备类型
    };
    U_BOOT_USB_DEVICE(dm9601_eth, dm9601_eth_id_table);
  • 关键接口实现

    需要实现 struct eth_ops 中的接口,并参考现有驱动(如 driver/net/usb/dm9601.c)进行移植。同时,确保驱动框架与 Uboot 的 DM_ETH 模型兼容。

  • 编译与配置

    为了使以上驱动能够在 Uboot 中正常工作,我们需要在 Kconfig 文件中启用相应配置项:

    config USB_ETHER_DM9601
    bool "DAVICOM DM9601 (USB 2.0) support"
    depends on USB_HOST_ETHER && DM_ETH

    在 Makefile 中添加驱动的编译目标:

    obj-$(CONFIG_USB_ETHER_DM9601) += dm9601.o

    验证与故障排除

    在完成上述配置后,我们需要进行以下步骤验证:

  • 启动 Uboot

    输入 usb start; usb reset,观察是否有 USB 设备正常工作。

  • 查看网络接口

    输入 Ping 192.168.x.x,确认网络是否正常通信。

  • 处理数据终止异常

    如果出现数据终止异常错误,请检查下列可能性:

    • USB 连接是否稳定
    • 序列号冲突
    • USB 端点配置是否正确
  • 解决内核校验失败

    错误信息提示 CRC 检查失败,可能是由于 SD卡中的内核.bin 文件损坏或读取失败。建议重新烧录 TF卡并确认启动设备是否正常读取内核文件。

  • 通过以上步骤,我们可以逐步排查并解决在移植过程中遇到的问题,确保 DM9621 网卡能够正常工作。

    如果仍然存在问题,可以参考相关社区讨论或提供详细的日志以便进一步分析。

    转载地址:http://zvdjz.baihongyu.com/

    你可能感兴趣的文章
    NIFI集群_队列Queue中数据无法清空_清除队列数据报错_无法删除queue_解决_集群中机器交替重启删除---大数据之Nifi工作笔记0061
    查看>>
    NIH发布包含10600张CT图像数据库 为AI算法测试铺路
    查看>>
    Nim教程【十二】
    查看>>
    Nim游戏
    查看>>
    NIO ByteBuffer实现原理
    查看>>
    Nio ByteBuffer组件读写指针切换原理与常用方法
    查看>>
    NIO Selector实现原理
    查看>>
    nio 中channel和buffer的基本使用
    查看>>
    NIO基于UDP协议的网络编程
    查看>>
    NISP一级,NISP二级报考说明,零基础入门到精通,收藏这篇就够了
    查看>>
    Nitrux 3.8 发布!性能全面提升,带来非凡体验
    查看>>
    NI笔试——大数加法
    查看>>
    NLog 自定义字段 写入 oracle
    查看>>
    NLog类库使用探索——详解配置
    查看>>
    NLP 基于kashgari和BERT实现中文命名实体识别(NER)
    查看>>
    NLP 项目:维基百科文章爬虫和分类【01】 - 语料库阅读器
    查看>>
    NLP_什么是统计语言模型_条件概率的链式法则_n元统计语言模型_马尔科夫链_数据稀疏(出现了词库中没有的词)_统计语言模型的平滑策略---人工智能工作笔记0035
    查看>>
    NLP学习笔记:使用 Python 进行NLTK
    查看>>
    NLP的神经网络训练的新模式
    查看>>
    NLP采用Bert进行简单文本情感分类
    查看>>