1.  网口硬件方案:

AT91SAM9G10 + DM9000CEP;

DM9000CEP为MAC+PHY解决方案,与MCU链接通过8位或16位数据总线。

内部SRAM为16Kbyte。

2. DM9000CEP硬件接口(略)。

3. DM9000CEP寄存器。

DM9000CEP包含两类寄存器:控制状态寄存器(CSRs)和PHY寄存器。

访问PHY寄存器是通过访问CSRs实现的,相关寄存器有:

1) EPCR:EEPROm&PHY Control Register.

2) EPAR : EEPROM & PHY Address Register.

3) EPDRL: EEPROM & PHY Low Byte Data Register.

4) EPDRH: EEPROM & PHY High Byte Data Register.

此外注意:CSRs中包含MAC地址寄存器:PAR:Physical Address Register.

要发送数据必须填写MAC地址。

4. DM9000CEP数据交互。

DM9000CEP数据和地址共用数据总线,通过CMD线选择。

更准确的说法是:

There are only two addressing ports through the access of the host interface.

One port is the INDEX port and the other is the DATA port.

The INDEX port is decoded by the pin CMD =0 and the DATA port by the pin CMD =1.

The contents of the INDEX port are the register address of the DATA port.

Before the access of any register, the address of the register must be saved in the INDEX port.

创意发生了:

数据(DATA port)或地址(INDEX port)都是通过8位或16位数据总线访问,

在操作总线时同时操作CMD,要把CMD当作普通GPIO控制吗?

CPU要访问网口DM9000CEP,首先要选中该芯片,通过SMC片选CS2或CS4,

CS2地址0x30000000,CS4地址0x50000000。

操作该芯片时,首先选中该芯片,然后控制CMD电平,然后操作数据总线。

这样明显增加了一步,访问速度变慢:我们可以在操作地址的同时操作CMD电平,

即操作地址总线,同时操作数据总线。如选择A2为CMD控制线,访问DATA port,

地址为0x30000004,访问INDEX port,地址为0x30000000。

地址线选取原则:>=A2,偶数地址线。

#define DM9000_IO  CONFIG_DM9000_BASE   //0x30000000   ;INDEX port

#define DM9000_DATA  (CONFIG_DM9000_BASE + 0x04)   //0x30000004  ;DATA port.

5. 数据收发。

The internal memory size is 16K bytes. The first location of 3K bytes is used for the data buffer of the
packet transmission. The other 13K bytes are used for the buffer of the receiving packets. So in the write
memory operation, when the bit 7 of IMR is set, the memory address increment will wrap to location 0 if
the end of address (i.e. 3K) is reached. In a similar way, in the read memory operation, when the bit 7 of
IMR is set, the memory address increment will wrap to location 0x0C00 if the end of address (i.e. 16K) is
reached.

数据发送:两包数据循环发送。
There are two packets, sequentially named as index I and index II, can be stored in the TX SRAM at the
same time. The index register 02h controls the insertion of CRC and pads. Their statuses are
recorded at index registers 03h and 04h respectively The start address of transmission is 00h and the
current packet is index I after software or hardware reset. Firstly write data to the TX SRAM using the
DMA port and then write the byte count to byte_ count register at index register 0fch and 0fdh. Set the bit 1 of
control register. The DM9000C starts to transmit the index I packet. Before the transmission of the index I
packet ends, the data of the next (index II) packet can be moved to TX SRAM. After the index I packet ends
the transmission, write the byte count data of the Index II to BYTE_COUNT register and then set the bit
1 of control register to transmit the index II packet. The following packets, named index I, II, I, II,..., use
the same way to be transmitted.

数据接收:循环发送

The RX SRAM is a ring data structure. The start address of RX SRAM is 0C00h after software or
hardware reset. Each packet has a 4-byte header followed with the data of the reception packet which
CRC field is included. The format of the 4-byte header is 01h, status, BYTE_COUNT low and
BYTE_COUNT high. It is noted that the start address of each packet is in the proper address boundary
which depends on the operation mode (the 8-bit or 16-bit ).

u-boot中网口处理--硬件部分的更多相关文章

  1. (转)Spring Boot 2 (十):Spring Boot 中的响应式编程和 WebFlux 入门

    http://www.ityouknow.com/springboot/2019/02/12/spring-boot-webflux.html Spring 5.0 中发布了重量级组件 Webflux ...

  2. Spring Boot 2 (十):Spring Boot 中的响应式编程和 WebFlux 入门

    Spring 5.0 中发布了重量级组件 Webflux,拉起了响应式编程的规模使用序幕. WebFlux 使用的场景是异步非阻塞的,使用 Webflux 作为系统解决方案,在大多数场景下可以提高系统 ...

  3. spring boot(三):Spring Boot中Redis的使用

    spring boot对常用的数据库支持外,对nosql 数据库也进行了封装自动化. redis介绍 Redis是目前业界使用最广泛的内存数据存储.相比memcached,Redis支持更丰富的数据结 ...

  4. Spring Boot中的事务管理

    原文  http://blog.didispace.com/springboottransactional/ 什么是事务? 我们在开发企业应用时,对于业务人员的一个操作实际是对数据读写的多步操作的结合 ...

  5. Spring Boot中的注解

    文章来源:http://www.tuicool.com/articles/bQnMra 在Spring Boot中几乎可以完全弃用xml配置文件,本文的主题是分析常用的注解. Spring最开始是为了 ...

  6. 在Spring Boot中使用Https

    本文介绍如何在Spring Boot中,使用Https提供服务,并将Http请求自动重定向到Https. Https证书 巧妇难为无米之炊,开始的开始,要先取得Https证书.你可以向证书机构申请证书 ...

  7. Spring Boot中使用Swagger2构建强大的RESTful API文档

    由于Spring Boot能够快速开发.便捷部署等特性,相信有很大一部分Spring Boot的用户会用来构建RESTful API.而我们构建RESTful API的目的通常都是由于多终端的原因,这 ...

  8. Dubbo在Spring和Spring Boot中的使用

    一.在Spring中使用Dubbo 1.Maven依赖 <dependency> <groupId>com.alibaba</groupId> <artifa ...

  9. springboot(十一):Spring boot中mongodb的使用

    mongodb是最早热门非关系数据库的之一,使用也比较普遍,一般会用做离线数据分析来使用,放到内网的居多.由于很多公司使用了云服务,服务器默认都开放了外网地址,导致前一阵子大批 MongoDB 因配置 ...

随机推荐

  1. YACC、LEX、JAVACC-------常用的编译工具

    CC(Compiler Compiler) CC的意思就是"编译器的编译器". 你可以定义一种上下文无关文法(CFG),然后针对这个特定的CFG你可以写出一个C程序来解释这种CFG ...

  2. JAvaScript:JS数组元素去重的方法

    在做javascript开发的时候,经常会遇到数组元素重复的问题,而javascript Array又没有直接提供方法解决此问题,还需要自己去实现. 方案一: 思路: 1.构建一个新的数组存放结果: ...

  3. java.sql.SQLException: 索引中丢失 IN 或 OUT 参数:: 1

    String sql1 = "insert into TEST_RELEVANCEEXPORT" +            " (ID, YYCSDM, YYCSMC, ...

  4. 谷歌地图地理解析和反解析geocode.geocoder详解(转)

    谷歌地图地理解析和反解析geocode.geocoder详解 谷歌Geocoder服务 实例代码 地址解析就是将地址(如:贵州省贵阳市)转换为地理坐标(如经度:106.71,纬度:26.57)的过程. ...

  5. A class file was not written. The project may be inconsistent, if so try refreshing this project and building it. eclipse提示错误

    感觉很奇怪,查看了一下磁盘,发现workspace所在磁盘已经满了,删除一些文件之后,选择项目->Project->Clean...->选择Clean all projects-&g ...

  6. Linux内核(9) - 精华版 之 方法论

    到目前为之,博客上分享的精华篇都可以归为方法论的范畴,在很多时候,都是方法论要比细节紧要得多.而这些精华篇又可细分为三个专题:Linux大史记:内核学习的方法论:驱动开发的方法论. Linux大史记 ...

  7. spring 中 AOP 功能

    1 PointCut 由 ClassFilter 和 MethodMatcher 构成,通过 ClassFilter 定位到类上,通过 MethodMatcher 定位到方法. 2 Spring 支持 ...

  8. shell case语法

    在阅读hadoop相关的脚本文件时,遇到case语句,好久不写shell,忘了不少,复习下shell的case语句:                             运行结果:         ...

  9. 批处理学习笔记3 - 变量声明和goto代替while循环

    批处理中没有while循环,只能用goto代替.下面是代码 @echo off set /a i = 0 :again echo %i% set /a i= %i% + 1 if %i% lss 10 ...

  10. ping域名和ping IP时速度不同的原因

    不知道大家在ping的时候有没有遇到过这样的问题:当你ping一个域名的时候,ping结果返回得很慢,但是如果直接ping这个域名的ip,结果却快很多. 直接ping ip的时候,每两次发包之间没有明 ...