1 概述

以太网高速稳定的特性比Wifi无线传输有一定的优势,当无线传输无法满足一些智能设备,需要开发设计以太网模块。Linux支持以太网系统,结合4412开发板,重点学习dm9000驱动的设计与实现。

2 硬件资源分析

2.1 4412开发板以太网方案

UT4412BV02 评估板板载100M/10M 自适应网口,网口芯片采用DM9000芯片。接口采用具有Link / Active 指示灯和隔离变压器的RJ45 插座。如下图所示:

图 2 1 以太网接口图

开发板以太网的硬件连接图如下所示:

图 2 2 硬件连接图

SD[0-15]为数据接口(与PCU的DATA[15:0]对应连接);

INT为中断信号(与CPU的EINT5接口相连);

地址线ADDR2,由于DM9000的地址信号和数据信号复用,使用CMD引脚来区分它们(CMD为低时数据总线上传输的是地址信号,CMD为高时数据总线上传输的是数据信号)。访问DM9000内部寄存器时,需要先将CMD置为低电平,发出地址信号,然后将CMD置为高电平,读写数据;

其它外围电路控制接口暂不需要驱动配置管理。

2.2 DM9000网卡

DM9000是一款高度集成的、低成本的单片快递以太网MAC控制器,含有通用处理器接口、10M/100M物理层和16kB的SRAM。DM9000的特点:

 支持的处理接口类型:以字节/字/双字的I/O指令访问DM9000内部数据。

 集成的10M/100M收发器。

 支持MII/RMII接口。

 支持半双工背压流量控制模式。

 IEEE802.3x全双工流量控制模式。

 支持远端唤醒和连接状态变化。

 集成4KB的双字SRAM。

 支持4个GPIO管脚。

 低功耗模式。

 I/O管脚3.3V和5V兼容。

 100-pinCMOS工艺LQFP封装。

3 驱动代码设计

3.1 驱动代码设计

1) 初始化数据结构

define S5P_PA_DM9000 EXYNOS4_PA_SROM_BANK(3)

static struct resource smdkv210_dm9000_resources[] = {

[0] = {

.start = S5P_PA_DM9000,

.end = S5P_PA_DM9000 + 0x3,

.flags = IORESOURCE_MEM,

},

[1] = {

.start = S5P_PA_DM9000 + 0x4,

.end = S5P_PA_DM9000 + 0x7,

.flags = IORESOURCE_MEM,

},

[2] = {

.start = IRQ_EINT(5),

.end = IRQ_EINT(5),

.flags = IORESOURCE_IRQ | IORESOURCE_IRQ_HIGHLEVEL,

},

};

static struct dm9000_plat_data smdkv210_dm9000_platdata = {

.flags=DM9000_PLATF_16BITONLY|DM9000_PLATF_NO_EEPROM,

.dev_addr = { 0x00, 0x09, 0xc0, 0xff, 0xec, 0x48 },

};

struct platform_device smdkv210_dm9000 = {

.name = "dm9000",

.id = -1,

.num_resources = ARRAY_SIZE(smdkv210_dm9000_resources),

.resource = smdkv210_dm9000_resources,

.dev = {.platform_data = &smdkv210_dm9000_platdata,

},

};

3.2 测试驱动

查看以太网口(ifconfig),如下图所示,出现“eth0”设备,则网卡正常加载成功。

将编译好的内核镜像烧写到开发板上,利用PC机进行测试,用网线连接PC和开发板接口,分别设置PC和开发板的IP地址,利用ping命令测试网络可通性,则证明开发板的以太网驱动可行。

具体步骤如下:

1设置开发板的IP地址。

ifconfig eth0 192.168.1.10 netmask 255.255.255.0(设置开发板的IP地址)

2设置PC机的IP地址。

设置PC机的IP地址为192.168.1.11,子网掩码255.255.255.0。

3用网线将开发板与PC机相连。

4测试连通性,在主机上运行ping命令,观察是否丢包及网速。

ping 192.168.1.10

对嵌入式物联网感兴趣的小伙伴,可以多了解一下相关信息。(看过来)

基于4412的dm9000驱动移植相关推荐

  1. DM9000驱动移植在mini2440(linux2.6.29)和FS4412(linux3.14.78)上的实现(deep dive)

    关于dm9000的驱动移植分为两篇,第一篇在mini2440上实现,基于linux2.6.29,也成功在在6410上移植了一遍,和2440非常类似,第二篇在fs4412(Cortex A9)上实现,基 ...

  2. Y410P用虚拟机装Linux系统,OK6410、Linux2.6.36内核移植,DM9000 驱动移植

    对照这个结构体  将那些进行修改,注意  by  acanoe   的语句为修改重点. // add by acanoe 2 &s3c_device_nand,//这一语句为添加nand  设 ...

  3. X210开发板(S5PV210芯片)uboot移植DM9000驱动移植

    前言 本文是介绍在uboot中如何移植DM9000的驱动,并不深入去讲解DM9000芯片的操作时序和内部寄存器,想要读懂驱动代码要仔细阅读DM9000芯片的数据手册.移植的基础是手里有DM9000芯片 ...

  4. 以太网卡驱动程序移植linux,基于S3C2440的DM9000网卡驱动的移植

    摘  要: 主要研究了基于Linux内核的网卡驱动的移植.Linux网络设备驱动程序的体系结构可以分为4层,首先分析了各层的具体功能实现,并在此基础上充分利用S3C2440开发板完成DM9000网卡驱 ...

  5. 基于MT6752/32平台 Android L版本驱动移植步骤

    基于MT6752/32平台 Android L版本驱动移植步骤 根据MK官网所述,在Android L 版本上Turnkey ABS 架构将会phase out,而Mediatek Turnkey架构 ...

  6. 移植基于linux-2.6.26.5内核s3c2410触摸屏驱动移植

    移植基于linux-2.6.26.5内核s3c2410触摸屏驱动移植的过程记录下来: (1)首先打一个补丁:s3c2410_touchscreen.patch, 在内核解压的根目录下 patch -N ...

  7. 博通蓝牙驱动linux,基于Android8.1的博通bcm89342蓝牙驱动的驱动移植记录-Go语言中文社区...

    说明 本文档是基于Android 8.1版本的一款博通蓝牙的驱动移植全过程记录.本驱动是通过/dev/ttyS2和蓝牙进行通信.因为较android以前的版本有很大变化尤其是上层关于蓝牙协议栈的部分, ...

  8. 基于I.MX6UL平台的WIFI模块AP6214A 驱动移植

    基于I.MX6UL平台的WIFI模块AP6214A 驱动移植 IoT-6ULX简要介绍 IoT-6ULX,主要面向Internet Of Things应用,该产品集成了 ARM Cortex-A7 9 ...

  9. 基于rk3288平台的gt9xx 触摸驱动移植

                                              基于rk3288平台的gt9xx 触摸驱动移植 一.硬件介绍:     1 core-rk3288j 核心板     ...

最新文章

  1. Mongodb基本操作说明
  2. js showModalDialog参数的使用详解(转)
  3. css背景图片添加url_CSS背景图片–如何向您的Div添加图片URL
  4. 操作对象_有进取心的机器人学习对象操作的基本原理
  5. 有哪些产品被阿里巴巴收购导致质量下滑?
  6. 一、RabbitMQ安装
  7. stm32中断优先级_STM的中断系统
  8. Keil V4安装教程
  9. 苹果手机屏幕镜像搜索不到电视_康佳电视投屏不了,3个办法解决!
  10. 虚拟机ping百度失败:PING www.a.shifen.com (163.177.151.110) 56(84) bytes of data.光标就一直闪
  11. 静校正问题及其深度学习方法
  12. gc0329曝光时间设置
  13. P1564 膜拜 题解
  14. python-绘图与可视化
  15. 关于win10主机共享打印机,其他主机连接不上的解决方法①
  16. 「06」IDEA2019.3(最全-从入门到癫狂
  17. selenium java安装运行
  18. python主程序调用子程序_使用main.f90模块调用特定的.f文件运行f2py时出现问题?(未知的子程序?)...
  19. 怎么画动漫人物衣服衣纹
  20. Qt写的流量监控 and 网络延迟 and 自动隐藏

热门文章

  1. Dom对象和java
  2. C语言的三种参数传递方式
  3. 计算机中网络协议三要素,网络协议的三要素是什么?各有什么含义?
  4. 基于神经网络的系统辨识,神经网络与图像识别
  5. 《中英双解》leetCode Arranging Coins (排列硬币)
  6. 【windows版本】 db2数据库安装与使用
  7. C++多线程——CreateThread
  8. 数模学习第四天---回归系数假设检验
  9. 简洁版Featured Category/Shop by Category模块
  10. 通达信标记符号_通达信指标中赋值符号“:”、“=”、“:=”区别?