zoukankan      html  css  js  c++  java
  • LINUX 内核移植以及网卡驱动添加

    我用的板子是sama5d3xek,原来板子内核是linux-at91-3.13,升级使用linux-at91-4.10

    首先去官网下载一个linux—at91-4.10压缩包,然后在ubuntu里解压,进入源文件目录,我这里用的是arm板子所以更改Makefile

    如下 vi Makefile

    使的 ARCH ?= $(SUBARCH)

     CROSS_COMPILE ?= $(CONFIG_CROSS_COMPILE:"%"=%)

    改为 ARCH ?= arm

    CROSS_COMPILE ?= arm-linux-

    然后保存退出

    查看arch/arm/configs/sama5_defconfig

    输入命令make ARCH=arm sama5_defconfig

    在输入 make ARCH=arm menuconfig 进行内核相关的配置(注意配置时候尽量把窗口最大化)

    然后在 make -j4 ARCH=arm 进行内核编译生成 zImage

    如果要uImage可以执行 (无加载地址时)

    LOADADDR=0x20008000

    export LOADADDR

    make ARCH=arm uImage

    有加载地址直接make ARCH=arm uImag

    编译device tree

    make ARCH=arm dtbs 就可以了

    最终得到 zImage uImage和sama5d3*。dtb

    Ⅱ 网卡驱动的添加

    我这里需要的是1000M的dp83867网卡驱动,发现linux4.3以上版本都有他的网卡驱动程序,

    果断移植过来,dp83867。c和 ti-dp83867.h文件  然后进行内核配置,出现了一次错误,

    把4.3内核的phy。h中的

    static inline bool phy_interface_is_rgmii(struct phy_device *phydev)
     {
     return phydev->interface >= PHY_INTERFACE_MODE_RGMII &&
     phydev->interface <= PHY_INTERFACE_MODE_RGMII_TXID;
     };复制到4.10中,更改Makefile和Kconfig文件

    重新配置编译内核,ok

  • 相关阅读:
    LeetCode题解——冗余连接(并查集)——java实现
    两数之和的问题
    强引用、软引用、弱引用、虚引用——4中引用的理解
    手写死锁程序实例
    使用阻塞队列实现生产者消费者问题
    ABC三个线程交替打印10遍,要求A打印5次,B打印10次,C打印15次
    使用jstack查看线程情况解决cpu飙高问题
    ES 【elasticsearch】
    C# 正则
    领域驱动设计 浅析VO、DTO、DO、PO的概念、区别和用处等资料链接(草稿)
  • 原文地址:https://www.cnblogs.com/skyred99/p/5742632.html
Copyright © 2011-2022 走看看