linux网卡驱动移植

简介:
内核版本:Linux2.6.28.7   中断引脚是IRQ_EINT7 具体的  自己看原理图
/*******************************/
#include <mach/regs-gpio.h>   //by bai
#include <mach/irqs.h>       //用到writel和ioremap类的头文件
#include <mach/hardware.h>
/*******************************/


unsigned char ne_def_eth_mac_addr[]={0x00,0x12,0x34,0x56,0x80,0x49}; //定义的mac地址


/* ------------------------------------------------------------------------ */
    static void *bwscon;
    static void *gpfcon;
    static void *extint0;
    static void *intmsk;
    #define BWSCON           (0x48000000)//总线宽度和等待控制寄存器
    #define GPFCON           (0x56000050)//配置io口为中断引脚
    #define EXTINT0          (0x56000088)//外部中断控制寄存器 0 上升沿触发还是下降沿触发
    #define INTMSK           (0x4A000008)//决定屏蔽哪个中断源。被屏蔽的中断源将不会服务  0 = 中断服务可用  1 = 屏蔽中断服务

bwscon=ioremap_nocache(BWSCON,0x0000004);//决定 SRAM 是否对 Bank 4 使用 UB/LB   0 = 未使用 UB/LB(引脚对应 nWBE[3:0]) 1 = 
使用 UB/LB(引脚对应 nBE[3:0])决定 Bank 4 的WAIT 状态   0 = WAIT 禁止  1 = WAIT 使能 

gpfcon=ioremap_nocache(GPFCON,0x0000004);
extint0=ioremap_nocache(EXTINT0,0x0000004);
intmsk=ioremap_nocache(INTMSK,0x0000004);
              
writel(readl(bwscon)|0xc0000,bwscon);
writel( (readl(gpfcon) & ~(0x3 << 14)) | (0x2 << 14), gpfcon); //配置成中断引脚
writel( readl(gpfcon) | (0x1 << 7), gpfcon); // Disable pull-up
writel( (readl(extint0) & ~(0xf << 28)) | (0x4 << 28), extint0); //rising edge
writel( (readl(intmsk))  & ~0x80, intmsk);    
/* ------------------------------------------------------------------------ */


//ndev->dev_addr[i] = ior(db, i+DM9000_PAR);   // by bai

ndev->dev_addr[i] = ne_def_eth_mac_addr[i];

总结:不管你用什么内核版本的网卡驱动程序,自己移植网卡驱动的时候主要配置两项,
一:设置mac地址,基地址或者中断引脚,配置成中断,基本的模式就是这样

目录
相关文章
|
4月前
|
监控 网络协议 Linux
在Linux中,如何查看某个网卡是否连接着交换机?
在Linux中,如何查看某个网卡是否连接着交换机?
|
4月前
|
Java Linux API
Linux设备驱动开发详解2
Linux设备驱动开发详解
47 6
|
4月前
|
消息中间件 算法 Unix
Linux设备驱动开发详解1
Linux设备驱动开发详解
52 5
|
4月前
|
Ubuntu NoSQL Linux
Linux内核和驱动
Linux内核和驱动
31 2
|
4月前
|
数据采集 Linux
Linux源码阅读笔记20-PCI设备驱动详解
Linux源码阅读笔记20-PCI设备驱动详解
|
5月前
|
存储 JSON Linux
|
5月前
|
Oracle 关系型数据库 Linux
讲解linux下的Qt如何编译oracle的驱动库libqsqloci.so
通过这一连串的步骤,可以专业且有效地在Linux下为Qt编译Oracle驱动库 `libqsqloci.so`,使得Qt应用能够通过OCI与Oracle数据库进行交互。这些步骤适用于具备一定Linux和Qt经验的开发者,并且能够为需要使用Qt开发数据库应用的专业人士提供指导。
158 1
讲解linux下的Qt如何编译oracle的驱动库libqsqloci.so
|
3月前
|
Linux API
Linux里的高精度时间计时器(HPET)驱动 【ChatGPT】
Linux里的高精度时间计时器(HPET)驱动 【ChatGPT】
|
4月前
|
网络协议 Ubuntu Linux
在Linux中,如何将本地80端口的请求转发到8080端口,当前主机IP为192.168.16.1,其中本地网卡eth0。
在Linux中,如何将本地80端口的请求转发到8080端口,当前主机IP为192.168.16.1,其中本地网卡eth0。
|
4月前
|
Ubuntu Linux 网络安全
在Linux中,能否给⼀个网卡配置多个IP? 如果能,怎么配置?
在Linux中,能否给⼀个网卡配置多个IP? 如果能,怎么配置?