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

相关文章
|
3天前
|
Linux 编译器 Android开发
FFmpeg开发笔记(九)Linux交叉编译Android的x265库
在Linux环境下,本文指导如何交叉编译x265的so库以适应Android。首先,需安装cmake和下载android-ndk-r21e。接着,下载x265源码,修改crosscompile.cmake的编译器设置。配置x265源码,使用指定的NDK路径,并在配置界面修改相关选项。随后,修改编译规则,编译并安装x265,调整pc描述文件并更新PKG_CONFIG_PATH。最后,修改FFmpeg配置脚本启用x265支持,编译安装FFmpeg,将生成的so文件导入Android工程,调整gradle配置以确保顺利运行。
24 1
FFmpeg开发笔记(九)Linux交叉编译Android的x265库
|
21天前
|
JSON 机器人 Linux
推荐一款嵌入式Linux开源框架与封装-cpp-tbox
推荐一款嵌入式Linux开源框架与封装-cpp-tbox
50 3
|
1月前
|
Linux 开发工具 git
Linux嵌入式系统中如何使用U-Boot实例
Linux嵌入式系统中如何使用U-Boot实例
26 0
|
1月前
|
Linux Android开发
嵌入式linux中Framebuffer 驱动程序框架分析
嵌入式linux中Framebuffer 驱动程序框架分析
27 0
|
9天前
|
Linux 编译器 测试技术
嵌入式 Linux 下的 LVGL 移植
嵌入式 Linux 下的 LVGL 移植
|
19天前
|
Linux API C语言
FFmpeg开发笔记(一)搭建Linux系统的开发环境
本文指导初学者如何在Linux上搭建FFmpeg开发环境。首先,由于FFmpeg依赖第三方库,可以免去编译源码的复杂过程,直接安装预编译的FFmpeg动态库。推荐网站<https://github.com/BtbN/FFmpeg-Builds/releases>提供适用于不同系统的FFmpeg包。但在安装前,需确保系统有不低于2.22版本的glibc库。详细步骤包括下载glibc-2.23源码,配置、编译和安装。接着,下载Linux版FFmpeg安装包,解压至/usr/local/ffmpeg,并设置环境变量。最后编写和编译简单的C或C++测试程序验证FFmpeg环境是否正确配置。
37 8
FFmpeg开发笔记(一)搭建Linux系统的开发环境
|
22天前
|
Linux
嵌入式Linux系统(NUC980)tf卡出错处理errors=remount-ro改为errors=continue
嵌入式Linux系统(NUC980)tf卡出错处理errors=remount-ro改为errors=continue
7 1
|
22天前
|
安全 Linux
嵌入式Linux系统关闭串口调试信息的输出
嵌入式Linux系统关闭串口调试信息的输出
13 1
|
22天前
|
Linux 编译器 网络安全
嵌入式Linux移植dropbear
嵌入式Linux移植dropbear
19 3
|
22天前
|
存储 Ubuntu Linux
制作一个嵌入式Linux的应用程序升级文件
制作一个嵌入式Linux的应用程序升级文件
12 2