码农知识堂 - 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内核实例总结

  • 相关阅读:
    ChatGPT、AIGC、大语言模型都是啥?
    一个注解@Recover搞定丑陋的循环重试代码
    什么是作用域链
    苹果发布iOS 16.1 RC版,大量更新内容【附升级方法】
    torch.hub.load()函数的使用——联网加载权重以及如何加载本地权重
    Mysql语法三:表的约束和表与表之间的关系以及高级查询
    HTML初识-概念和基本知识
    java毕业生设计众筹平台网站计算机源码+系统+mysql+调试部署+lw
    说说Vue响应式系统中的Watcher和Dep的关系-面试进阶
    Canal实现Mysql和ES数据同步
  • 原文地址:https://blog.csdn.net/Luckiers/article/details/126903241
  • 最新文章
  • 攻防演习之三天拿下官网站群
    数据安全治理学习——前期安全规划和安全管理体系建设
    企业安全 | 企业内一次钓鱼演练准备过程
    内网渗透测试 | Kerberos协议及其部分攻击手法
    0day的产生 | 不懂代码的"代码审计"
    安装scrcpy-client模块av模块异常,环境问题解决方案
    leetcode hot100【LeetCode 279. 完全平方数】java实现
    OpenWrt下安装Mosquitto
    AnatoMask论文汇总
    【AI日记】24.11.01 LangChain、openai api和github copilot
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1
正则表达式工具 cron表达式工具 密码生成工具

京公网安备 11010502049817号