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

本文共 1716 字,大约阅读时间需要 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/

    你可能感兴趣的文章
    no session found for current thread
    查看>>
    No toolchains found in the NDK toolchains folder for ABI with prefix: mips64el-linux-android
    查看>>
    NO.23 ZenTaoPHP目录结构
    查看>>
    NO32 网络层次及OSI7层模型--TCP三次握手四次断开--子网划分
    查看>>
    NoClassDefFoundError: org/springframework/boot/context/properties/ConfigurationBeanFactoryMetadata
    查看>>
    Node JS: < 一> 初识Node JS
    查看>>
    Node-RED中使用JSON数据建立web网站
    查看>>
    Node-RED中使用json节点解析JSON数据
    查看>>
    Node-RED中使用node-random节点来实现随机数在折线图中显示
    查看>>
    Node-RED中使用node-red-browser-utils节点实现选择Windows操作系统中的文件并实现图片预览
    查看>>
    Node-RED中使用Notification元件显示警告讯息框(温度过高提示)
    查看>>
    Node-RED中实现HTML表单提交和获取提交的内容
    查看>>
    Node.js 8 中的 util.promisify的详解
    查看>>
    Node.js 函数是什么样的?
    查看>>
    Node.js 历史
    查看>>
    Node.js 在个推的微服务实践:基于容器的一站式命令行工具链
    查看>>
    Node.js 实现类似于.php,.jsp的服务器页面技术,自动路由
    查看>>
    node.js 怎么新建一个站点端口
    查看>>
    Node.js 文件系统的各种用法和常见场景
    查看>>
    node.js 简易聊天室
    查看>>