《嵌入式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

相关文章
|
1月前
|
消息中间件 存储 缓存
【嵌入式软件工程师面经】Linux系统编程(线程进程)
【嵌入式软件工程师面经】Linux系统编程(线程进程)
57 1
|
10天前
|
存储 网络协议 Ubuntu
【Linux开发实战指南】基于UDP协议的即时聊天室:快速构建登陆、聊天与退出功能
UDP 是一种无连接的、不可靠的传输层协议,位于IP协议之上。它提供了最基本的数据传输服务,不保证数据包的顺序、可靠到达或无重复。与TCP(传输控制协议)相比,UDP具有较低的传输延迟,因为省去了建立连接和确认接收等过程,适用于对实时性要求较高、但能容忍一定数据丢失的场景,如在线视频、语音通话、DNS查询等。 链表 链表是一种动态数据结构,用于存储一系列元素(节点),每个节点包含数据字段和指向下一个节点的引用(指针)。链表分为单向链表、双向链表和循环链表等类型。与数组相比,链表在插入和删除操作上更为高效,因为它不需要移动元素,只需修改节点间的指针即可。但访问链表中的元素不如数组直接,通常需要从
|
1月前
|
网络协议 算法 Linux
【嵌入式软件工程师面经】Linux网络编程Socket
【嵌入式软件工程师面经】Linux网络编程Socket
48 1
|
2天前
|
Web App开发 缓存 Linux
FFmpeg开发笔记(三十六)Linux环境安装SRS实现视频直播推流
《FFmpeg开发实战》书中第10章提及轻量级流媒体服务器MediaMTX,适合测试RTSP/RTMP协议,但不适合生产环境。推荐使用SRS或ZLMediaKit,其中SRS是国产开源实时视频服务器,支持多种流媒体协议。本文简述在华为欧拉系统上编译安装SRS和FFmpeg的步骤,包括安装依赖、下载源码、配置、编译以及启动SRS服务。此外,还展示了如何通过FFmpeg进行RTMP推流,并使用VLC播放器测试拉流。更多FFmpeg开发内容可参考相关书籍。
11 2
FFmpeg开发笔记(三十六)Linux环境安装SRS实现视频直播推流
|
9天前
|
Linux
FFmpeg开发笔记(三十四)Linux环境给FFmpeg集成libsrt和librist
《FFmpeg开发实战》书中介绍了直播的RTSP和RTMP协议,以及新协议SRT和RIST。SRT是安全可靠传输协议,RIST是可靠的互联网流传输协议,两者于2017年发布。腾讯视频云采用SRT改善推流卡顿。以下是Linux环境下为FFmpeg集成libsrt和librist的步骤:下载安装源码,配置、编译和安装。要启用这些库,需重新配置FFmpeg,添加相关选项,然后编译和安装。成功后,通过`ffmpeg -version`检查版本信息以确认启用SRT和RIST支持。详细过程可参考书中相应章节。
16 1
FFmpeg开发笔记(三十四)Linux环境给FFmpeg集成libsrt和librist
|
1月前
|
编解码 Linux
FFmpeg开发笔记(二十八)Linux环境给FFmpeg集成libxvid
XviD是开源的MPEG-4视频编解码器,曾与DivX一起用于早期MP4视频编码,但现在已被H.264取代。要集成XviD到Linux上的FFmpeg,首先下载源码,解压后配置并编译安装libxvid。接着,在FFmpeg源码目录中,重新配置FFmpeg以启用libxvid,然后编译并安装。成功后,通过`ffmpeg -version`检查是否启用libxvid。详细步骤包括下载、解压libxvid,使用`configure`和`make`命令安装,以及更新FFmpeg配置并安装。
41 2
FFmpeg开发笔记(二十八)Linux环境给FFmpeg集成libxvid
|
10天前
|
SQL 自然语言处理 网络协议
【Linux开发实战指南】基于TCP、进程数据结构与SQL数据库:构建在线云词典系统(含注册、登录、查询、历史记录管理功能及源码分享)
TCP(Transmission Control Protocol)连接是互联网上最常用的一种面向连接、可靠的、基于字节流的传输层通信协议。建立TCP连接需要经过著名的“三次握手”过程: 1. SYN(同步序列编号):客户端发送一个SYN包给服务器,并进入SYN_SEND状态,等待服务器确认。 2. SYN-ACK:服务器收到SYN包后,回应一个SYN-ACK(SYN+ACKnowledgment)包,告诉客户端其接收到了请求,并同意建立连接,此时服务器进入SYN_RECV状态。 3. ACK(确认字符):客户端收到服务器的SYN-ACK包后,发送一个ACK包给服务器,确认收到了服务器的确
|
1月前
|
Web App开发 安全 Linux
FFmpeg开发笔记(二十六)Linux环境安装ZLMediaKit实现视频推流
《FFmpeg开发实战》书中介绍轻量级流媒体服务器MediaMTX,但其功能有限,不适合生产环境。推荐使用国产开源的ZLMediaKit,它支持多种流媒体协议和音视频编码标准。以下是华为欧拉系统下编译安装ZLMediaKit和FFmpeg的步骤,包括更新依赖、下载源码、配置、编译、安装以及启动MediaServer服务。此外,还提供了通过FFmpeg进行RTSP和RTMP推流,并使用VLC播放器拉流的示例。
57 3
FFmpeg开发笔记(二十六)Linux环境安装ZLMediaKit实现视频推流
|
1月前
|
编解码 Linux
FFmpeg开发笔记(二十五)Linux环境给FFmpeg集成libwebp
《FFmpeg开发实战》书中指导如何在Linux环境下为FFmpeg集成libwebp以支持WebP图片编解码。首先,从GitHub下载libwebp源码,解压后通过`libtoolize`,`autogen.sh`,`configure`,`make -j4`和`make install`步骤安装。接着,在FFmpeg源码目录中重新配置并添加`--enable-libwebp`选项,然后进行`make clean`,`make -j4`和`make install`以编译安装FFmpeg。最后,验证FFmpeg版本信息确认libwebp已启用。
45 1
FFmpeg开发笔记(二十五)Linux环境给FFmpeg集成libwebp
|
27天前
|
Unix Linux 异构计算
用于实时 Linux® 的 TwinCAT Runtime,基于 Linux® 的实时控制器开辟了新的应用可能性
**TwinCAT Runtime for Linux®** 打开了倍福实时控制的新领域,支持在同一PC上运行多个独立实例,促进硬件整合和效率提升。基于Debian的定制Linux发行版,内置实时内核,允许GPU驱动的高速应用如机器视觉。利用Docker等容器技术,实现模块化控制和资源优化,降低工程成本。此发行版将逐步扩展到更多倍福设备,为Linux用户提供熟悉的TwinCAT编程环境和增强的灵活性。