《嵌入式Linux软硬件开发详解——基于S5PV210处理器》——2.4 DM9000A以太网控制器

简介:

本节书摘来自异步社区《嵌入式Linux软硬件开发详解——基于S5PV210处理器》一书中的第2章,第2.4节,作者 刘龙,更多章节内容可以访问云栖社区“异步社区”公众号查看。

2.4 DM9000A以太网控制器

为了实现以太网通信功能,Smart210开发板搭载了一片以太网芯片DM9000A,它是一款高度集成、低成本的单片快速以太网MAC控制器,含有通用的处理器接口、10M/ 100M物理层和16KB的SRAM。

该芯片具有如下特点。

  • 支持处理器读写内部存储器的数据操作,命令以字节/字/双字的长度进行。
  • 集成10/100M自适应收发器。
  • 支持背压模式半双工流量控制模式。
  • IEEE802.3x流量控制的全双工模式。
  • 支持唤醒帧,链路状态改变和远程的唤醒。
  • 内部具有4K双字SRAM。
  • 支持自动加载EEPROM里面生产商ID和产品ID。
  • 支持4个通用输入输出口。
  • 兼容3.3V和5.0V输入输出电压。
  • 100脚LQFP封装工艺。

2.4.1 DM9000A引脚及功能

DM9000A的引脚排列如图2-13所示,各个引脚的功能如表2-8所示。


screenshot


screenshot


screenshot


screenshot

2.4.2 DM9000A硬件设计

如图2-14所示,DM9000A的读信号线IOR#、写信号线IOW#分别与S5PV210的读信号控制线XmoOEn、写信号控制线Xm0WEn相连;由于其片选信号CS#与S5PV210微处理器的SROM_BANK1片选信号Xm0CSn1相连,因此DM9000A网络控制器的端口地址的基址(IOAddr)可以为0x88000000开始的0x88000000 ~08FFFFFF空间的任一地址。DM9000的地址信号和数据信号复用,使用CMD引脚来区分,CMD引脚为低的时候总线上传输的是地址信号,引脚为高的时候总线上传输的是数据信号,S5PV210的地址线Xm0ADDR2连接至CMD引脚,通过控制Xm0ADDR2引脚的高低电平来区分S5PV210传输的是地址还是数据。访问DM9000A内部寄存器时,我们需要先将CMD置为低电平,发出地址信号,然后将CMD置为高电平,读写数据。

通过以上分析,DM9000A的地址与数据端口地址分别为如下所示。

ADDR端口地址 = IOAddr + 0x00  
DATA端口地址 = IOAddr + 0x04 

DATA端口加上0x04是因为DM9000A的CMD引脚连在了CPU的Xm0ADDR2地址线上,当写数据时,此引脚必须为高,所以地址为IOAddr加上0x04,这样既可以选择访问不同的端口,同时也能将端口数据写在两块不同的存储空间。


screenshot

相关文章
|
7月前
|
Ubuntu 搜索推荐 Linux
详解Ubuntu的strings与grep命令:Linux开发的实用工具。
这就是Ubuntu中的strings和grep命令,透明且强大。我希望你喜欢这个神奇的世界,并能在你的Linux开发旅程上,通过它们找到你的方向。记住,你的电脑是你的舞台,在上面你可以做任何你想做的事,只要你敢于尝试。
407 32
|
9月前
|
JavaScript Linux 网络安全
Termux安卓终端美化与开发实战:从下载到插件优化,小白也能玩转Linux
Termux是一款安卓平台上的开源终端模拟器,支持apt包管理、SSH连接及Python/Node.js/C++开发环境搭建,被誉为“手机上的Linux系统”。其特点包括零ROOT权限、跨平台开发和强大扩展性。本文详细介绍其安装准备、基础与高级环境配置、必备插件推荐、常见问题解决方法以及延伸学习资源,帮助用户充分利用Termux进行开发与学习。适用于Android 7+设备,原创内容转载请注明来源。
2453 77
|
10月前
|
缓存 网络协议 Linux
PCIe 以太网芯片 RTL8125B 的 spec 和 Linux driver 分析备忘
本文详细介绍了 Realtek RTL8125B PCIe 以太网芯片的规格以及在 Linux 中的驱动安装和配置方法。通过深入分析驱动源码,可以更好地理解其工作原理和优化方法。在实际应用中,合理配置和优化驱动程序可以显著提升网络性能和稳定性。希望本文能帮助您更好地使用和管理 RTL8125B,以满足各种网络应用需求。
1157 33
|
存储 网络协议 Ubuntu
【Linux开发实战指南】基于UDP协议的即时聊天室:快速构建登陆、聊天与退出功能
UDP 是一种无连接的、不可靠的传输层协议,位于IP协议之上。它提供了最基本的数据传输服务,不保证数据包的顺序、可靠到达或无重复。与TCP(传输控制协议)相比,UDP具有较低的传输延迟,因为省去了建立连接和确认接收等过程,适用于对实时性要求较高、但能容忍一定数据丢失的场景,如在线视频、语音通话、DNS查询等。 链表 链表是一种动态数据结构,用于存储一系列元素(节点),每个节点包含数据字段和指向下一个节点的引用(指针)。链表分为单向链表、双向链表和循环链表等类型。与数组相比,链表在插入和删除操作上更为高效,因为它不需要移动元素,只需修改节点间的指针即可。但访问链表中的元素不如数组直接,通常需要从
607 2
|
11月前
|
Ubuntu Linux 开发者
Ubuntu20.04搭建嵌入式linux网络加载内核、设备树和根文件系统
使用上述U-Boot命令配置并启动嵌入式设备。如果配置正确,设备将通过TFTP加载内核和设备树,并通过NFS挂载根文件系统。
622 15
|
存储 监控 Linux
嵌入式Linux系统编程 — 5.3 times、clock函数获取进程时间
在嵌入式Linux系统编程中,`times`和 `clock`函数是获取进程时间的两个重要工具。`times`函数提供了更详细的进程和子进程时间信息,而 `clock`函数则提供了更简单的处理器时间获取方法。根据具体需求选择合适的函数,可以更有效地进行性能分析和资源管理。通过本文的介绍,希望能帮助您更好地理解和使用这两个函数,提高嵌入式系统编程的效率和效果。
556 13
|
Linux API 开发工具
FFmpeg开发笔记(五十九)Linux编译ijkplayer的Android平台so库
ijkplayer是由B站研发的移动端播放器,基于FFmpeg 3.4,支持Android和iOS。其源码托管于GitHub,截至2024年9月15日,获得了3.24万星标和0.81万分支,尽管已停止更新6年。本文档介绍了如何在Linux环境下编译ijkplayer的so库,以便在较新的开发环境中使用。首先需安装编译工具并调整/tmp分区大小,接着下载并安装Android SDK和NDK,最后下载ijkplayer源码并编译。详细步骤包括环境准备、工具安装及库编译等。更多FFmpeg开发知识可参考相关书籍。
497 0
FFmpeg开发笔记(五十九)Linux编译ijkplayer的Android平台so库
|
Web App开发 缓存 Linux
FFmpeg开发笔记(三十六)Linux环境安装SRS实现视频直播推流
《FFmpeg开发实战》书中第10章提及轻量级流媒体服务器MediaMTX,适合测试RTSP/RTMP协议,但不适合生产环境。推荐使用SRS或ZLMediaKit,其中SRS是国产开源实时视频服务器,支持多种流媒体协议。本文简述在华为欧拉系统上编译安装SRS和FFmpeg的步骤,包括安装依赖、下载源码、配置、编译以及启动SRS服务。此外,还展示了如何通过FFmpeg进行RTMP推流,并使用VLC播放器测试拉流。更多FFmpeg开发内容可参考相关书籍。
907 2
FFmpeg开发笔记(三十六)Linux环境安装SRS实现视频直播推流
|
Java Linux API
Linux设备驱动开发详解2
Linux设备驱动开发详解
256 6
|
消息中间件 算法 Unix
Linux设备驱动开发详解1
Linux设备驱动开发详解
286 5