基于4412的dm9000驱动移植

news2024/11/25 4:37:37

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

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/424387.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【Python】Python中的列表,元组,字典

文章目录列表创建列表获取元素修改元素添加元素查找元素删除元素列表拼接遍历列表切片操作元组创建元组元组中的操作字典创建字典添加/修改元素删除元素查找字典的遍历合法的key类型列表 列表是一种批量保存数据的方式,列表使用[]表示 创建列表 创建两个空列表 …

nginx优化及配置

nginx隐藏版本号 查看方法 浏览器F12 看network头部看server curl -i 192.168.232.7 获取头部(查版本号) 配置文件改 添加server_tokens off 改源码 cd /src/core vim nginx.h 修改 修改的IIS为window常用的软件服务 重新编译安装 cd nginx_1.2…

【C++】while 循环应用案例 - 猜数字游戏

目录 1、缘起 2、案例描述 3、代码 4、相关知识点 4.1、rand() 函数 4.2、srand() 函数 5、总结 1、缘起 猜数字游戏是一种简单而又有趣的游戏,在这个游戏中,计算机会生成一个随机数字,玩家需要通过不断猜测来猜出这个数字。在本篇博…

使用docker搭建lnmp环境+redis服务

lnmp搭建过程,前文已经写了传送门,本文主要写一下运行redis容器和php-fpm容器内安装redis扩展 redis 1.创建宿主机配置和数据文件夹 [rootlocalhost ~] mkdir -p /lnmp/redis/{data,conf}2.放置/lnmp/redis/conf/redis.conf文件 点我下载 3.启动容器 …

k8s+kubeedge+sedna安装全套流程+避坑指南+解决办法

最近在学习边缘计算要用到kubeedge,安装了好多次总会遇到各种各样的问题,因此在这里一一列出,以方便下次安装。则里面可能出错的地方太多,如果有问题,请私信联系。 一、环境准备 节点IP环境软件云端节点172.23.70.23…

Python|矿产卫片Excel经纬度坐标数据转换为shp点数据——OGR库实现

1.实验需求 基于Excel表格里面的经纬度坐标数据,自动生成点shp矢量文件,并添加属性信息。 2.编程思路详解 ①使用Pandas库读取原始矿产图斑列表表格; xlsx_path = uC:\\Users\\YaoJun\\Desktop\\矿产图斑列表.xlsx #sheet_name默认为0,即读取第一个sheet的数据 df = pd.…

TPM管理工作应该如何开展?

在制造行业,Total Productive Maintenance(TPM)管理被广泛认为是提高生产效率和设备可靠性的有效方式。然而,实施TPM管理需要深入的专业知识和经验。本文将探讨如何开展TPM管理工作,以确保制造企业的生产效率和设备可靠…

2023-Python实现烯牛数据采集

文章目录👉1、目标网址👉2、接口分析👉3、代码实现【JS 逆向百例】 1/100 学习记录:哈喽~ 前面我们接触了一些JS逆向的数据获取,如果前面的百度,有道翻译和正方教务系统的登录加密你已掌握,说明…

计组2.4——加法器的设计

计组:2.4算术逻辑单元异或门实现奇偶校验的原理串行加法器&&并行加法器并行加法器的优化算术逻辑单元 控制信号: 当M0时表示算术运算 当M1时表示逻辑运算 S0~ S3表示做什么运算,因此ALU可以表示16种算数运算和16种逻辑运算 Ai,Bi代表…

PL-VINS线特征处理部分源码阅读

PL-VINS线特征处理部分源码阅读1 linefeature_tracker2 三角化单目三角化双目三角化3 后端优化线特征状态量重投影误差本文主要阅读PL-VINS中引入线特征的代码实现,包括线特征表示方法(Plcker参数化方法、正交表示法)、前端线特征提取与匹配、…

遥感、GIS及GPS在土壤空间数据分析、适应性评价、制图及土壤普查中的应用

摸清我国当前土壤质量与完善土壤类型,可以为守住耕地红线、保护生态环境、优化农业生产布局、推进农业高质量发展奠定坚实基础,为此,2022年初国务院印发了《关于开展第三次全国土壤普查的通知》,决定自2022年起开展第三次全国土壤…

微信支付,JSAPI支付,APP支付,H5支付,Native支付,小程序支付功能详情以及回调处理

一.支付相关文档地址支付wiki:https://pay.weixin.qq.com/wiki/doc/apiv3/index.shtml支付api: https://pay.weixin.qq.com/wiki/doc/apiv3/apis/index.shtml开发工具包(SDK)下载:https://pay.weixin.qq.com/wiki/doc/apiv3/wechatpay/wechatpay6_0.shtm…

靶机精讲之CTF4

主机发现 靶机193 端口扫描 服务扫描 80,25(明确版本)攻击面更大 web渗透 blog是交互式的程序 发现index可进行手动爆破(地址包含) http://192.168.10.193/index.html?page../../../../../../../../etc/passwd 无发…

雨水情测报系统+智慧水库大坝安全监测系统

解决方案 雨水情测报系统智慧水库大坝安全监测系统,系统主要由降雨量监测站、水库水位监测站、大坝安全监测中的渗流量、渗流压力和变形监测站及视频和图像监测站等站点组成,同时建立规范、统一的监测平台,集数据传输、信息共享、数据储存于…

Git简单使用~下载、安装、命令行使用、IDEA使用

文章目录一、Git下载二、Git安装三、命令行操作四、IDEA使用gitee4. 查看Gitee仓库一、Git下载 官网下载地址:Git (git-scm.com) 点击"Download for Windows",跳转至详细下载页面。 以Windows64位安装版为例,点击"64-bit…

代码随想录算法训练营第42天| 416. 分割等和子集

代码随想录算法训练营第42天| 416. 分割等和子集416. 分割等和子集416. 分割等和子集 题目链接&#xff1a;416. 分割等和子集&#xff0c;难度&#xff1a;中等 【实现代码】 class Solution { public:bool canPartition(vector<int>& nums) {int sum 0;for (int…

抢鲜发布:Flutter 3.7更新详解

本文首发自「慕课网」(imooc.com)&#xff0c;想了解更多IT干货内容&#xff0c;程序员圈内热闻&#xff0c;欢迎关注"慕课网"&#xff01; 作者&#xff1a;CrazyCodeBoy|慕课网讲师 新年伊始&#xff0c;由 Flutter 3.7 正式版来「打头阵」&#xff01;我们与整个…

AI时代,重新理解阿里云

如果说&#xff0c;在数字化时代&#xff0c;阿里云给外界的标签是基于算力、数据等要素的基建角色&#xff0c;那么&#xff0c;在如今的智能化时代&#xff0c;基于自身强大的云计算能力和长期以往的AI技术积累&#xff0c;它的这种底座底色显然再一次被夯实、彰显。 作者|皮…

【Python_Scrapy学习笔记(六)】Scrapy框架基本使用流程

Scrapy框架基本使用流程 前言 本文中介绍 Scrapy 框架的基本使用流程&#xff0c;并以抓取汽车之家二手车数据为例进行讲解。 正文 1、Scrapy框架基本使用流程 创建爬虫项目&#xff1a;scrapy startprojecct 项目名 cd到项目文件夹&#xff1a;cd 项目名 创建爬虫文件&a…

PCB模块化设计06——HDMI接口PCB布局布线设计规范

目录PCB模块化设计06——HDMI接口PCB布局布线设计规范1、HDMI接口的定义2、HDMI管脚定义&#xff08;A型为例&#xff09;3、HDMI接口PCB布局要求4、HDMI接口布线要求PCB模块化设计06——HDMI接口PCB布局布线设计规范 1、HDMI接口的定义 高清晰度多媒体接口&#xff08;英文&…