码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • Linux驱动移植USB网卡r8156驱动(详细)总结


    目录

      • 一、简介
      • 二、驱动移植
        • 2.1 驱动源码解压
        • 2.2 驱动Kconfig和Makefile配置
          • 2.2.1 驱动上层目录识别驱动文件
          • 2.2.2 驱动目录新建驱动Kconfig和Makefile
        • 2.3 .config配置
          • 2.3.1 本驱动的config打开
        • 2.4模块编译及报错处理
        • 2.5 模块安装及测试
      • 三、相关知识博客链接

    一、简介

    本文主要在arm主板中移植usb网卡驱动,因为内核自带的r8152驱动有问题,因此移植了千兆网卡的usb驱动,在ubuntu下交叉编译内核模块然后在主板系统下安装,下面介绍本人移植的详细过程。
    系统版本:Ubuntu 22.04 LTS
    主板型号:armv8

    二、驱动移植

    总的过程总结
    1、 驱动源码解压;
    2、 驱动Kconfig和Makefile配置;
    3、 .config配置
    4、 模块编译及报错处理;
    5、 模块安装及测试;

    2.1 驱动源码解压

    首先解压r8152.53.56-2.15.0.tar.bz2到内核drivers/net下
    因为买的RTL 8156的网卡依然使用的是8152的驱动,因此为了区分内核自带的8152驱动,我对解开的tar包的目录重新命名为r8156-2.15.0

    root@test:/LINUX/# tar -jxvf r8152.53.56-2.15.0.tar.bz2 –C drivers/net
    root@test:/LINUX/# mv drivers/net/r8152-2.15.0 drivers/net/r8156-2.15.0
    
    • 1
    • 2

    2.2 驱动Kconfig和Makefile配置

    2.2.1 驱动上层目录识别驱动文件

    在drivers/net/下的Kconfig和Makefile加入r8156-2.15.0的配置

    root@test:/LINUX/#cd  drivers/net/
    root@test:/LINUX/drivers/net/ #vim Makefile
    
    • 1
    • 2

    在这里插入图片描述
    在这里插入图片描述

    2.2.2 驱动目录新建驱动Kconfig和Makefile

    1、新建Kconfig

    root@test:/LINUX/drivers/net/r8156-2.15.0# vim  Kconfig
    
    • 1

    在这里插入图片描述

    博客链接:Kconfig内容总结附示例快速掌握

    2、新建Makefile,因为自带的驱动Makefile中是本地编译内核模块的方式,代码如下,所以我们要全部注释掉
    在这里插入图片描述
    只加入内核模块编译的规则即可

    在这里插入图片描述

    博客链接:Makefile语法详细总结及示例解析

    驱动目录文件:
    在这里插入图片描述
    50-usb-realtek-net.rules是直接放在linux系统/etc/udev/rules.d/下作为udev规则,方便usb网卡热拔插可以正常识别加载

    2.3 .config配置

    make ARCH=arm64 menuconfig
    
    • 1
    2.3.1 本驱动的config打开

    1、按 / 进入搜索界面,查看8156的具体位置

    在这里插入图片描述
    在这里插入图片描述
    2、进入改目录将该模块设置为m,即核外模块
    在这里插入图片描述
    在这里插入图片描述
    3、usb网卡相关模块打开
    因为本块板子是接到我们的usb HBA上的,所以usb相关的模块也一起打开,具体模块如下:
    在这里插入图片描述

    在这里插入图片描述

    4、usb配置成host模式

    在这里插入图片描述

    在这里插入图片描述
    5、保存.config

    在这里插入图片描述

    2.4模块编译及报错处理

    1、直接交叉编译内核

    make ARCH=arm64 CROSS_COMPILE=aarch64-linux-gnu- all
    
    • 1

    在这里插入图片描述

    博客链接: 交叉编译linux内核实例总结

    2、问题处理

    root@test:/LINUX/#  vim include/uapi/linux/mdio.h
    
    • 1

    在这里插入图片描述
    3、编译完成
    在这里插入图片描述

    2.5 模块安装及测试

    将r8152.ko拷贝到板子上,若有相关依赖模块则一并拷入

    [root@test /]# insmod  r8152.ko
    [root@test /]# lsmod |grep r8152    
    r8152                 204800  0
    
    • 1
    • 2
    • 3

    此时插上usb网卡,查看是不是可以正常识别到,注意要将50-usb-realtek-net.rules文件拷贝到/etc/udev/rules.d/

    [root@test /]#ifconfig -a //查看所有的网卡设备
    
    • 1

    三、相关知识博客链接

    博客链接:1、Makefile语法详细总结及示例解析

    博客链接:2、Kconfig内容总结附示例快速掌握

    博客链接: 3、交叉编译linux内核实例总结

  • 相关阅读:
    国内可以免费使用的GPT
    SFX的妙用——如何在不安装软件的情况下打开自定义格式文件?
    Linux 系统安全及应用
    KV STUDIO的安装与实践(一)
    WPFdatagrid结合comboBox
    JS中的 typeof 针对各种类型的返回值 以及typeof历史遗留问题
    mongodump工具安装及使用详解
    (附源码)ssm汽车租赁——持续输出BU 毕业设计 271621
    积水监测系统——方便、快速、及时、多测点同时监测
    C++ Reference: Standard C++ Library reference: C Library: cwchar: fputwc
  • 原文地址:https://blog.csdn.net/Luckiers/article/details/126903241
  • 最新文章
  • 沪漂五周年了:我越来越迷茫了
    Agentic Skill Routing 实战:别再把所有 Skill 塞进 AI Agent 上下文
    MySQL-Seconds_behind_master的精度误差
    [MAF预定义ChatClient中间件-03]CachingChatClient——利用缓存省钱省时间
    AI的至暗历史:从万众期待到被政府撤资,AI的两次死亡徘徊
    Agent OS :五种驯服不确定性的范式
    PortSwigger SQL注入LAB11
    数据库即时编译JIT
    [Begin]AI Learn Data Day 0
    深度学习进阶(二十七)现代 LLM 的核心架构设计其二:SwiGLU
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
小工具 小游戏
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1

京公网安备 11010502049817号