35.ETHERC——以太网通信—[野火]瑞萨RA系列FSP库开发实战指南——基于野火启明开发板文档

野火启明2L1开发板MCU:R7FA2L1AB3CFP(RA2L1)主频:48M野火启明4M2开发板MCU:R7FA4M2AD3CFP(RA4M2)主频:100M野火启明6M5开发板MCU:R7FA6M5BH3CFC(RA6M5)主频:200M野火启明6T2开发板MCU:R7FA6T2BD3CFP(RA6T2)主频:240M野火耀阳开发板MCU:RA8D1主频:480M

通信至少是两个设备的事,需要相互兼容的硬件和软件支持,我们称之为通信协议。以太网通信在结构比较复杂,国际标准组织将整个以太网通信结构制定了OSI模型,总共分层七个层,分别为应用层、表示层、会话层、传输层、网络层、数据链路层以及物理层,每个层功能不同,通信中各司其职,整个模型包括硬件和软件定义。OSI模型是理想分层,一般的网络系统只是涉及其中几层。

TCP/IP是互联网最基本的协议,是互联网通信使用的网络协议,由网络层的IP协议和传输层的TCP协议组成。TCP/IP只有四个分层,分别为应用层、传输层、网络层以及网络访问层。虽然TCP/IP分层少了,但与OSI模型是不冲突的,它把OSI模型一些层次整合一起的,本质上可以实现相同功能。

图34_1TCP/IP混合参考模型

设计网络时,为了降低网络设计的复杂性,对组成网络的硬件、软件进行封装、分层,这些分层即构成了网络体系模型。在两个设备相同层之间的对话、通信约定,构成了层级协议。设备中使用的所有协议加起来统称协议栈。在这个网络模型中,每一层完成不同的任务,都提供接口供上一层访问。而在每层的内部,可以使用不同的方式来实现接口,因而内部的改变不会影响其它层。

在TCP/IP混合参考模型中,数据链路层又被分为LLC层(逻辑链路层)和MAC层(媒体介质访问层)。目前,对于普通的接入网络终端的设备,LLC层和MAC层是软、硬件的分界线。如PC的网卡主要负责实现参考模型中的MAC子层和物理层,在PC的软件系统中则有一套庞大程序实现了LLC层及以上的所有网络层次的协议。

由硬件实现的物理层和MAC子层在不同的网络形式有很大的区别,如以太网和WiFi,这是由物理传输方式决定的。但由软件实现的其它网络层次通常不会有太大区别,在PC上也许能实现完整的功能,一般支持所有协议,而在嵌入式领域则按需要进行裁剪。

以太网(Ethernet)是互联网技术的一种,由于它是在组网技术中占的比例最高,很多人直接把以太网理解为互联网。

以太网是指遵守IEEE802.3标准组成的局域网,由IEEE802.3标准规定的主要是位于参考模型的物理层(PHY)和数据链路层中的介质访问控制子层(MAC)。在家庭、企业和学校所组建的PC局域网形式一般也是以太网,其标志是使用水晶头网线来连接(当然还有其它形式)。IEEE还有其它局域网标准,如IEEE802.11是无线局域网,俗称WiFi。IEEE802.15是个人域网,即蓝牙技术,其中的IEEE802.15.4标准则是ZigBee技术。

现阶段,工业控制、环境监测、智能家居的嵌入式设备产生了接入互联网的需求,利用以太网技术,嵌入式设备可以非常容易地接入到现有的计算机网络中。

在物理层,由IEEE802.3标准规定了以太网使用的传输介质、传输速度、数据编码方式和冲突检测机制,物理层一般是通过一个PHY芯片实现其功能的。

传输介质包括同轴电缆、双绞线(水晶头网线是一种双绞线)、光纤。根据不同的传输速度和距离要求,基于这三类介质的信号线又衍生出很多不同的种类。最常用的是“五类线”适用于100BASE-T和10BASE-T的网络,它们的网络速率分别为100Mbps和10Mbps。

为了让接收方在没有外部时钟参考的情况也能确定每一位的起始、结束和中间位置,在传输信号时不直接采用二进制编码。在10BASE-T的传输方式中采用曼彻斯特编码,在100BASE-T中则采用4B/5B编码。

图34_2曼彻斯特编码

采用曼彻斯特码在每个位周期都有电压变化,便于同步。但这样的编码方式效率太低,只有50%。

在100BASE-T采用的4B/5B编码是把待发送数据位流的每4位分为一组,以特定的5位编码来表示,这些特定的5位编码能使数据流有足够多的跳变,达到同步的目的,而且效率也从曼彻斯特编码的50%提高到了80%。

现在大多数局域网组建的时候很少采用总线型网络,大多是一个设备接入到一个独立的路由或交换机接口,组成星型网络,不会产生冲突。但为了兼容,新出的产品还是带有冲突检测机制。

MAC子层是属于数据链路层的下半部分,它主要负责与物理层进行数据交接,如是否可以发送数据,发送的数据是否正确,对数据流进行控制等。它自动对来自上层的数据包加上一些控制信号,交给物理层。接收方得到正常数据时,自动去除MAC控制信号,把该数据包交给上层。

图34_3MAC数据包格式

MAC数据包由前导字段、帧起始定界符、目标地址、源地址、数据包类型、数据域、填充域、校验和域组成。

以上是标准的MAC数据包,IEEE802.3同时还规定了扩展的MAC数据包,它是在标准的MAC数据包的SA和数据包类型之间添加4个字节的QTag前缀字段,用于获取标志的MAC帧。前2个字节固定为0x8100,用于识别QTag前缀的存在;后两个字节内容分别为3个位的用户优先级、1个位的标准格式指示符(CFI)和一个12位的VLAN标识符。

标准TCP/IP协议是用于计算机通信的一组协议,通常称为TCP/IP协议栈,通俗讲就是符合以太网通信要求的代码集合,一般要求它可以实现互联网模型中每个层对应的协议,比如应用层的HTTP、FTP、DNS、SMTP协议,传输层的TCP、UDP协议、网络层的IP、ICMP协议等等。关于TCP/IP协议详细内容推荐阅读《TCP-IP详解》和《用TCP/IP进行网际互连》理解。

Windows操作系统、UNIX类操作系统都有自己的一套方法来实现TCP/IP通信协议,它们都提供非常完整的TCP/IP协议。对于一般的嵌入式设备,受制于硬件条件没办法支持使用在Window或UNIX类操作系统的运行的TCP/IP协议栈,一般只能使用简化版本的TCP/IP协议栈,目前开源的适合嵌入式的有LwIP、FreeRTOS-Plus-TCP、uC/TCP-IP、uIP、TinyTCP等等,其中LwIP是目前在嵌入式网络领域被讨论和使用广泛的协议栈。

使用以太网接口的目的就是为了方便与其它设备互联,如果所有设备都约定使用一种互联方式,在软件上加一些层次来封装,这样不同系统、不同的设备通讯就变得相对容易了。而且只要新加入的设备也使用同一种方式,就可以直接与之前存在于网络上的其它设备通讯。这就是为什么产生了在MAC之上的其它层次的网络协议及为什么要使用协议栈的原因。又由于在各种协议栈中TCP/IP协议栈得到了最广泛使用,所有接入互联网的设备都遵守TCP/IP协议。所以,想方便地与其它设备互联通信,需要提供对TCP/IP协议的支持。

用以太网和WiFi作例子,它们的MAC子层和物理层有较大的区别,但在MAC之上的LLC层、网络层、传输层和应用层的协议,是基本相同的,这几层协议由软件实现,并对各层进行封装。根据TCP/IP协议,各层的要实现的功能如下:

实际上,在发送数据时,经过网络协议栈的每一层,都会给来自上层的数据添加上一个数据包的头,再传递给下一层。在接收方收到数据时,一层层地把所在层的数据包的头去掉,向上层递交数据,如图所示。

瑞萨RA6M5提供一个单通道以太网控制器(ETHERC),符合以太网或IEEE802.3媒体访问控制(MAC)层协议。每个ETHERC通道有一个MAC层接口通道,将MCU连接到物理层LSI(PHY-LSI),可以传输和接收符合以太网/IEEE802.3标准的帧。ETHERC连接到以太网专用DMA控制器(EDMAC),因此可以在不使用CPU的情况下传输数据。

ETHERC特性

RA6M5的ETHERC外设模块框图如下图所示。

见图中①处。

以太网总线(ETHERbus)向上连接到外部总线控制器和SRAM,向下连接到EDMAC仲裁器。

见图中②处。

EDMAC仲裁器用于在多个EDMAC通道之间进行仲裁,以确认要访问的EDMAC通道。而RA6M5只有一个ETHERC通道,因此只能访问ETHERC通道0(ETHERC0)。

见图中③处。

ETHERC0当中包含MDIO、接收电路(Receivecircuit)和发送电路(Transmitcircuit),它们都连接到了MII/RMII接口(MIIinterface)。

MII(MediaIndependentInterface)为介质独立接口。在IEEE802.3中规定的MII接口是一种用于将不同类型的PHY与相同MAC控制器相连接的通用总线。MAC控制器可以用同样的硬件接口与任何PHY进行连接。RMII(ReducedMediaIndependentInterface)为简化介质独立接口,也是标准的以太网接口之一。在数据的收发上RMII比MII接口少了一倍的信号线,所以RMII一般要求是50MHz的时钟。

MDIO(ManagementDataInput/Output)接口,即管理数据输入输出接口,也叫SMI(SerialManagementInterface)接口,即串行管理接口。MDIO或者SMI接口,是一个管理PHY的接口,用来读/写PHY的寄存器,以控制PHY的行为或获取PHY的状态。该接口包含MDC和MDIO两条信号线,MDIO属于双向数据线,而MDC是时钟线,为MDIO提供时钟。

引脚

方向

说明

ET0_TX_CLK

Input

发送时钟

作为ET0_TX_EN,ET0_ETXD[3:0],ET0_TX_ER的时序参考信号

标称速率为10Mbit/s时为2.5MHz;速率为100Mbit/s时为25MHz

ET0_RX_CLK

接收时钟

作为ET0_RX_EN,ET0_ERXD[3:0],ET0_RX_ER的时序参考信号

ET0_TX_EN

Output

发送数据有效

该信号指示ET0_ETXD[3:0]引脚上发送的数据有效

ET0_ETXD[3:0]

4位发送数据

ET0_TX_ER

发送错误

ET0_RX_DV

接收数据有效

该信号指示ET0_ERXD[3:0]引脚上接收的数据有效

ET0_ERXD[3:0]

4位接收数据

ET0_RX_ER

接收错误

由PHY驱动,向MAC控制器报告在帧某处检测到错误。

ET0_CRS

载波侦听信号

由PHY芯片负责驱动,当发送或接收介质处于非空闲状态时使能该信号

在全双工模式该信号线无效

ET0_COL

冲突检测信号

由PHY芯片负责驱动,检测到介质上存在冲突后该线被使能,

并且保持至冲突解除。在全双工模式该信号线无效

ET0_MDC

管理数据时钟(ET0_MDIO的参考时钟信号)

ET0_MDIO

I/O

管理数据输入输出(双向数据信号)

ET0_LINKSTA

PHY-LSI的连接状态

ET0_EXOUT

通用输出引脚

ET0_WOL

Wake-on-LAN信号(指示接收到一个魔术包)

REF50CK0

RMII0接口的参考时钟信号

RMII0_TXD_EN

该信号指示RMII0_TXD1和RMII0_TXD0引脚上发送的数据有效

RMII0_TXD1,RMII0_TXD0

2位发送数据

RMII0_CRS_DV

载波侦听信号/接收数据有效

该信号指示RMII0_RXD1和RMII0_RXD0引脚上接收的数据有效

在RMII接口中,CRS和RX_DV整合成了CRS_DV信号引脚

RMII0_RXD1,RMII0_RXD0

2位接收数据

RMII0_RX_ER

对比上面两张表格,可以发现当我们使用RMII接口时,会比使用MII接口时少了一些引脚。具体如下:

注解

在本章后面介绍的PHY芯片LAN8720A,它使用RMII接口连接,但是不需要使用到ET0_LINKSTA,ET0_EXOUT,ET0_WOL这三个引脚。

见图中④处。

EDMAC是以太网专用DMA控制器,就如ETHERC0表示的是ETHERC通道0一样,EDMAC0表示的是EDMAC通道0。如果在ETHERC0和EDMAC0中都使能了相应的中断,当ETHERC0触发该中断时,会先通知到EDMAC0,然后再通过EDMAC0发送一个ETHER_EINT0中断请求信号到CPU进行进一步的处理。

LAN8720A是SMSC公司(已被Microchip公司收购)设计的一个体积小、功耗低、全能型10/100Mbps的以太网物理层收发器。它是针对消费类电子和企业应用而设计的。LAN8720A总共只有24Pin,仅支持RMII接口。由LAN8720A组成的网络系统结构如图所示。

在上图中:

LAN8720A内部系统结构如图所示。

PHYAD0引脚用于配置SMI通信的LAN8720A地址,在芯片内部该引脚已经自带下拉电阻,默认认为0(即使外部悬空不接),在系统上电时会检测该引脚获取得到LAN8720A的地址为0或者1,并保存在特殊模式寄存器(R18)的PHYAD位中,该寄存器的PHYAD字段有5个位,在需要超过2个LAN8720A时可以通过软件设置不同SMI通信地址。PHYAD0是与RXER引脚共用。

MODE[2:0]引脚用于选择LAN8720A网络通信速率和工作模式,可选10Mbps或100Mbps通信速度,半双工或全双工工作模式,另外LAN8720A支持HPAuto-MDIX自动翻转功能,即可自动识别直连或交叉网线并自适应。一般将MODE引脚都设置为1,可以让LAN8720A启动自适应功能,它会自动寻找最优工作方式。MODE[0]与RXD0引脚共用、MODE[1]与RXD1引脚共用、MODE[2]与CRS_DV引脚共用。

nINT/REFCLKO引脚用于MCURMII接口中的REF50CK0信号线。

REGOFF引脚用于配置内部+1.2V电压源。LAN8720A内部需要+1.2V电压,可以通过VDDCR引脚输入+1.2V电压提供,也可以直接利用LAN8720A内部+1.2V稳压器提供。当REGOFF引脚为低电平时选择内部+1.2V稳压器。REGOFF与LED1引脚共用。

SMI支持寻址32个寄存器,LAN8720A只用到其中14个,参考下表。

表LAN8720A寄存器列表

序号

寄存器名称

分组

0

BasicControlRegister

Basic

1

BasicStatusRegister

2

PHYIdentifier1

Extended

3

PHYIdentifier2

4

Auto-NegotiationAdvertisementRegister

5

Auto-NegotiationLinkPartnerAbilityRegister

6

Auto-NegotiationExpansionRegister

17

ModeControl/StatusRegister

Vendor-specific

18

SpecialModes

26

SymbolErrorCounterRegister

27

Control/StatusIndicationRegister

29

InterruptSourceRegister

30

InterruptMaskRegister

31

PHYSpecialControl/StatusRegister

序号与SMI数据帧中的RADDR是对应的,这在编写驱动时非常重要,本文将它们标记为R0~R31。寄存器可规划为三个组:Basic、Extended和Vendor-specific。

注:本实验需要读者有一定的FreeRTOS基础知识,可以到FreeRTOS官网阅读FreeRTOS内核和FreeRTOS-Plus库的中文版入门文档。

本次实验需要用到FreeRTOS及其自带的TCP/IP网络协议栈:FreeRTOS-Plus-TCP,而前面所有章节的例程都是没有使用FreeRTOS的,因此不能直接拷贝以前的例程,需要重新新建一个带有FreeRTOS的工程。

参照本教程第5章和第6章的步骤,区别是在“RTOSSelection”下拉列表里选择RTOS时选择FreeRTOS即可。

在e2studio工作空间中新建工程,工程名为“34_Ethernet_FreeRTOS”。新建工程时要注意选择FreeRTOS。

首先在指定的路径新建文件夹:“34_Ethernet_FreeRTOS”,用于存放我们即将新建的Keil工程。打开RASC软件来新建工程,工程路径选到“34_Ethernet_FreeRTOS”文件夹下面,工程名为“EBF_RA6M5”。新建工程时要注意选择FreeRTOS。

工程新建好之后,在工程根目录的“src”文件夹下面新建源文件“ether_phy_target_lan8720.c”,该文件是LAN8720的底层驱动文件。再新建源文件和头文件:“net_user_app.c”和“net_user_app.h”。

由于调试需要,可将LED和串口的驱动文件拷贝过来:直接复制前面例程里面的“led”和“debug_uart”文件夹并粘贴到工程根目录的“src”文件夹下面。

工程文件结构如下。

34_Ethernet_FreeRTOS├─......└─src├─led│├─bsp_led.c│└─bsp_led.h├─debug_uart│├─bsp_debug_uart.c│└─bsp_debug_uart.h├─ether_phy_target_lan8720.c├─net_user_app.c├─net_user_app.h├─net_thread_entry.c└─hal_entry.c注:其中net_thread_entry.c该源文件若是不存在则会由软件自动生成,若存在,软件生成代码时该文件不会被覆盖。

按照前面的章节来配置LED的GPIO引脚和调试串口,此处不再赘述。

使用e2studio环境的用户使用printf注意需要对工程做如图所示的设置:

在FSP配置界面的BSP页面,分配主栈大小为0x1000、堆大小为0x2000,如下图所示:

根据硬件原理图,我们需要配置连接PHYLAN8720的RMII引脚,以及LAN8720复位引脚。LAN8720的复位引脚为P802,由于复位引脚是低电平有效,可直接配置为输出高电平模式即可,如下图所示。

RMII引脚配置如下图所示。

首先新建一个线程:NetThread(网络线程),该线程用于运行网络协议栈,然后向其中添加:FreeRTOSHeap4和FreeRTOS+TCP。步骤如下。

在Threads区域点击“NewThread”按钮,新建得到一个默认名为“NewThread”线程。

线程名“NewThread”会在后面对线程进行配置时更改为“NetThread”。现在让我们先在这个线程下面添加:FreeRTOSHeap4和FreeRTOS+TCP。

添加FreeRTOSHeap4步骤:“NewStack”→“RTOS”→“FreeRTOSHeap4”。

添加FreeRTOS+TCP步骤:“NewStack”→“Networking”→“FreeRTOS+TCP”。

添加完成后的结果如下图所示。

接下来继续设置该线程的参数。点击“NewThread”线程,如下图所示。

上图中出现两个区域的配置属性,其中①是FreeRTOS全局的配置属性,②是“NewThread”这个线程的配置属性。

首先,按照下表的描述来配置“NewThread”线程。

属性

描述

Symbol

net_thread

Symbol是指C语言符号,此处设置为net_thread,

生成代码时会自动生成一个源文件net_thread_entry.c,

其中包含了名为net_thread_entry的线程入口函数。

Name

NetThread

线程名。由于该线程运行网络协议栈,因此线程名设置为NetThread。

Stacksize(bytes)

1024

该线程栈大小设置为1024。

Priority

该线程的运行优先级设置为1。

ThreadContext

NULL

线程上下文参数指针设置为NULL。

MemoryAllocation

Static

线程的内存分配方式设置为Static。

AllocateSecureContext

Enable

分配安全上下文。

FreeRTOS全局的配置如下:

General>CustomFreeRTOSConfig.h

为自定义FreeRTOSConfig.h文件添加路径。

它可用于覆盖此处定义的部分或全部配置,并定义其他配置。

没有自定义文件FreeRTOSConfig.h的话留空即可。

General>UsePreemption

Enabled

General>UsePortOptimisedTaskSelection

Disabled

启用端口优化任务选择。

General>UseTicklessIdle

General>CpuClockHz

SystemCoreClock

CPU时钟频率。

General>TickRateHz

100

RTOS滴答中断的频率。

General>MaxPriorities

应用程序任务可用的优先级数。任意数量的任务可以共享相同的优先级。

General>MinimalStackSize

512

空闲任务使用的堆栈的大小。单位为字,而不是字节。

General>MaxTaskNameLen

16

任务名称的最大允许长度。该长度包括NULL终止字节。

General>Use16-bitTicks

使用16位Ticks将大大提高8位和16位架构的性能,

General>IdleShouldYield

General>UseTaskNotifications

使用任务通知。

General>UseMutexes

使用互斥量。

General>UseRecursiveMutexes

使用递归互斥量。

General>UseCountingSemaphores

使用计数信号量。

General>QueueRegistrySize

10

队列注册表大小。

General>UseQueueSets

使用队列集。

General>UseTimeSlicing

General>UseNewlibReentrant

使用Newlib可重入。

General>EnableBackwardCompatibility

使能向后兼容。

General>NumThreadLocalStoragePointers

设置每个任务的线程本地存储数组中的索引数。

General>StackDepthType

uint32_t

栈深度类型。

General>MessageBufferLengthType

size_t

FreeRTOS消息缓冲区使用消息缓冲区长度类型的变量来存储每条消息的长度。

如果没有定义消息缓冲区长度类型,那么它将默认为size_t。

General>LibraryMaxSyscallInterruptPriority

Priority1

General>Assert

if(!(x)){__BKPT(0);}

General>IncludeApplicationDefinedPrivilegedFunctions

Hooks>UseIdleHook

如果希望使用空闲钩子,则将其设置为“启用”,或者“禁用”以省略空闲钩子。

Hooks>UseMallocFailedHook

Hooks>UseDaemonTaskStartupHook

Hooks>UseTickHook

Hooks>CheckForStackOverflow

Stats>UseTraceFacility

Stats>UseStatsFormattingFunctions

Stats>GenerateRunTimeStats

MemoryAllocation>SupportStaticAllocation

支持静态内存分配。

MemoryAllocation>SupportDynamicAllocation

支持动态内存分配。

MemoryAllocation>TotalHeapSize

0x8000

FreeRTOS堆中可用的RAM总量。

MemoryAllocation>ApplicationAllocatedHeap

Timers>UseTimers

使用软件定时器功能。

Timers>TimerTaskPriority

定时器任务优先级。

Timers>TimerQueueLength

定时器队列长度。

Timers>TimerTaskStackDepth

128

定时器任务栈深度。

设置分配给软件计时器服务/守护进程任务的堆栈深度。

OptionalFunctions>vTaskPrioritySet()Function

包含vTaskPrioritySet()函数。

OptionalFunctions>uxTaskPriorityGet()Function

包含uxTaskPriorityGet()函数。

OptionalFunctions>vTaskDelete()Function

包含vTaskDelete()函数。

OptionalFunctions>vTaskSuspend()Function

包含vTaskSuspend()函数。

OptionalFunctions>xResumeFromISR()Function

OptionalFunctions>vTaskDelayUntil()Function

包含vTaskDelayUntil()函数。

OptionalFunctions>vTaskDelay()Function

包含vTaskDelay()函数。

OptionalFunctions>xTaskGetSchedulerState()Function

包含xTaskGetSchedulerState()函数。

OptionalFunctions>xTaskGetCurrentTaskHandle()Function

包含xTaskGetCurrentTaskHandle()函数。

OptionalFunctions>uxTaskGetStackHighWaterMark()Function

OptionalFunctions>xTaskGetIdleTaskHandle()Function

OptionalFunctions>eTaskGetState()Function

OptionalFunctions>xEventGroupSetBitFromISR()Function

包含xEventGroupSetBitFromISR()函数。

OptionalFunctions>xTimerPendFunctionCall()Function

OptionalFunctions>xTaskAbortDelay()Function

OptionalFunctions>xTaskGetHandle()Function

OptionalFunctions>xTaskResumeFromISR()Function

包含xTaskResumeFromISR()函数。

RA>HardwareStackMonitor

Logging>PrintStringFunction

printf(x)

Logging>LoggingMaxMessageLength

192

Logging>LoggingIncludeTimeandTaskName

点击“FreeRTOS+TCP”模块,如下图所示。

FreeRTOS+TCP的属性配置如下:

Printdebugmessages

打印调试信息。

Printinfomessages

打印info信息。

ByteorderofthetargetMCU

pdFREERTOS_LITTLE_ENDIAN

IP/TCP/UDPchecksums

计算IP/TCP/UDP校验和。

ReceiveBlockTime

2000

SendBlockTime

DNScaching

DNS缓存。

DNSRequestAttempts

DNS请求尝试。

IPstacktaskpriority

configMAX_PRIORITIES-1

设置执行IP栈任务的优先级。

Stacksizeinwords(notbytes)

configMINIMAL_STACK_SIZE*10

为FreeRTOS+TCP设置栈大小,单位为字。

NetworkEventscallvApplicationIPNetworkEventHook

当网络连接或断开时,vApplicationIPNetworkEventHook会被调用。

MaxUDPsendblocktime

15000/portTICK_PERIOD_MS

UseDHCP

使用DHCP。

DHCPRegisterHostname

使用DHCP时注册主机名。

DHCPUsesUnicast

DHCP使用单播。

DHCPSendDiscoverAfterAutoIP

DHCPcallbackfunction

需提供DHCP回调函数:xApplicationDHCPHook。

Intervalbetweentransmissions

120000/portTICK_PERIOD_MS

ARPCacheEntries

ARP缓存条目。

ARPRequestRetransmissions

ARP请求重传次数。

MaximumtimebeforeARPtableentrybecomesstale

150

UsestringforIPAddress

使用字符串表示IP地址。

Totalnumberofavailablenetworkbuffers

网络数据包缓冲的总数

Setthemaximumnumberofevents

ipconfigNUM_NETWORK_BUFFER_DESCRIPTORS+5

EnableFreeRTOS_sendto()withoutcallingBind

TTLvaluesforUDPpackets

TTLvaluesforTCPpackets

UseTCPandallitsfeatures

使用TCP及其所有特性。

LetTCPusewindowingmechanism

让TCP使用滑动窗口机制。

Maximumnumberofbytesthepayloadofanetworkframecancontain

1500

MTU大小。

BasicDNSclientorresolver

基本的DNS客户端/解析器。

ReplytoincomingICMPecho(ping)requests

应答ICMPecho(ping)请求。

FreeRTOS_SendPingRequest()isavailable

允许使用FreeRTOS_SendPingRequest()。

对应ipconfigREPLY_TO_INCOMING_PINGS宏配置。

FreeRTOS_select()(andassociated)APIfunctionisavailable

FilteroutnonEthernetIIframes.

过滤掉非以太网II格式的以太网帧。

ResponsibilityoftheEthernetinterfacetofilteroutpackets

SendRSTpackets,whenreceiveunknownpackets.

Access32-bitfieldsintheIPpackets

SizeofthepoolofTCPwindowdescriptors

240

SizeofRxbufferforTCPsockets

3000

SizeofTxbufferforTCPsockets

TCPkeep-alive

TCPkeep-aliveinterval

120

ThesocketsemaphoretounblocktheMQTTtask(USER_SEMAPHORE)

ThesocketsemaphoretounblocktheMQTTtask(WAKE_CALLBACK)

ThesocketsemaphoretounblocktheMQTTtask(USE_CALLBACKS)

ThesocketsemaphoretounblocktheMQTTtask(TX_DRIVER)

ThesocketsemaphoretounblocktheMQTTtask(RX_DRIVER)

Possibleoptimisationforexpertusers

点击“g_ether0”模块,如下图所示。

在左下角属性配置窗口进行配置,g_ether0的属性配置如下:

Common>ParameterChecking

Default(BSP)

Common>ET0_LINKSTAPinStatusFlag

Fall->Rise

设置LINKSTA状态变化。

Common>LinkSignalChangeFlag

Unused

使用LINKSTA信号检测链路状态变化。

General>Name

g_ether0

General>Channel

General>MACaddress

00:11:22:33:44:55

General>Zero-copyMode

General>Flowcontrolfunctionality

Filters>MulticastMode

Filters>PromiscuousMode

Filters>Broadcastfilter

Buffers>NumberofTXbuffer

Buffers>NumberofRXbuffer

Buffers>AllocateRXbuffer

Buffers>Buffersize

1514

Buffers>Paddingsize

自动插入到接收数据包中的填充大小。

Buffers>Paddingoffset

在接收缓冲区中插入填充字节的偏移量。

Interrupts>Interruptpriority

Priority12

选择EDMAC中断优先级。

Interrupts>Callback

vEtherISRCallback

该中断回调函数是固定的,无法变更。

点击“g_ether_phy0”模块,如下图所示。

在左下角属性配置窗口进行配置,PHY的属性配置如下:

ParameterChecking

Default

SelectPHY(DEPRECATED)

KSZ8091RNZTarget

KSZ8041Target

DP83620Target

ICS1894Target

ReferenceClock

g_ether_phy0

Channel

PHY-LSIAddress

PHY-LSIResetCompletionTimeout

0x00020000

SelectMIItype

RMII

PhyLSItype

KitComponent

MII/RMIIRegisterAccessWait-time

8

FlowControl

voidupdateDhcpResponseToUsr(void)eDHCPCallbackAnswer_txApplicationDHCPHook(eDHCPCallbackPhase_teDHCPPhase,uint32_tulIPAddress)constchar*pcApplicationHostnameHook(void)uint32_tulRand();uint32_tulApplicationGetNextSequenceNumber(uint32_tulSourceAddress,uint16_tusSourcePort,uint32_tulDestinationAddress,uint16_tusDestinationPort);uint32_tisNetworkUp(void);BaseType_tvSendPing(constchar*pcIPAddress);voidprint_ipconfig(void);voidprint_pingResult(void);voiddnsQuerryFunc(char*domain_name);限于篇幅,暂不对这些函数进行详细地讲解,读者可参考例程源代码。

在使用RTOS并新建了一个线程的情况下,hal_entry已经不再需要,并且网络线程的入口函数被设置为net_thread_entry。net_thread_entry入口函数如下所示。

运行此以太网例程需要先切换芯片DLM状态:从出厂的“CM”切换到“SSD”状态,然后重要的是要设置IDAU边界。否则,Ethernet和EDMAC将无法使用。

NOTE:OnRAMCUswithTrustZone,IDAUboundariesareprogrammedbythisprojectduetotheuseofEthernetandEDMACperipherals.Consequentially,itisnecessarytoconnecttheserialprogramminginterfacetomeetthisrequirement.

可按照以下两种方法当中的其中任意一种进行操作后,即可正常使用本实验的以太网例程:

首先编译程序,并按照上述方法设置IDAU边界,确保能正常使用Ethernet和EDMAC外设。

将程序下载到开发板后,连接串口并打开串口助手,复位板子让程序运行。

如下图所示,可以看到程序会首先打印提示信息:

当连接网线到路由器上之后,稍等片刻,可以看到正常的程序运行结果如下图所示:

THE END
1.千万别错过这个神级网站!懒人找资源Clibrary 平台:网站 早上群友求一本电子书,并反馈前几天推荐的Zhelper不好用,尽管小懒利用Zlibrary复活教程!这篇文章里的zlib机器人也帮忙下载了。 不过随后群友腿腿分享了这个更好用的zlibrary镜像网站。 还是值得安利给大家。 访问网址后,找书,下载,一气呵成。 https://www.shangyexinzhi.com/article/5458078.html
2.LoginZustimmung | Trusted. Communication. Always. Ob auf unserer Website oder in unseren Systemen, bis hin zu unserer Symphony Cloud, wir legen grten Wert auf den Schutz Ihrer Daten und der Daten unserer Kunden. Wir verwenden Cookies, die für den Betrieb unserer Website erforderlich sind.https://clibrary-online.commend.com/
3.clibrary中文图书馆,clibrary电子书下载别摸鱼导航标签:随意集c libraryclibrary cnclibrary.topclibrary中文图书馆https://clibrary.cnhttps://clibrary.top 00000 链接直达 ?>1.免费ai视频生成+写作(可联网)?>>2.免费ai视频神器推荐3.免费ai写作绘画 clibrary中文图书馆,c library电子书下载,镜像网址 https://biemoyu.com/sites/clibrary.html
4.CLibraryC Library - - The time.h header defines four variable types, two macro and various functions for manipulating date and time.https://www.tutorialspoint.com/c_standard_library/time_h.htm
5.Clibrary:基于Z去年11月份的时候“Zlibrary”被美国警方查封,一度关停。 Zlibrary被美国警方查封,现官方所有地址无法访问 后来陆续开放网址,现在基本恢复访问 在“Zlibrary”出问题的这段时间出现了不少电子书网站 今天推荐的这个电子书网站“Clibrary”成立于2022年9月, 图书资源都是https://www.xiaoxiangguan.cc/74960.html
6.工具Zlibrary图书馆,电子书大全(亲测可用)clibrary1、z-library和Clibrary简介 喜欢阅读的盆友多多少少可能都听过z-library,书籍库非常全,而且是免费的,但是在z-library国内下线后,就一直没有找到合适的平替书库。 Z-library是下载电子书籍的神器,但是随着Z-Library 创始人俄罗斯国民ANTON NAPOLSKY(安东-纳波尔斯基)和VALERIIA ERMAKOVAhttps://blog.csdn.net/qq_41539778/article/details/128833489
7.LibraryHow to Use SPSS? : A Step-By-Step Guide to Analysis and Interpretation / Brian C. Cronk INTEGRATED MARKETING COMMUNICATION : CREATIVE STRATEGY FROM IDEA TO IMPLEMENTATION[E-book] ISLAMIC FINANCIAL SYSTEM : PRINCIPLES & OPERATIONS Modelling Transport / Juan de Dios Ortu?zar, Luis G. Willumhttps://library.utar.edu.my/NB-2403H.php
8.「clibrary中文图书馆」Z「clibrary中文图书馆」 点击卡片进入网站 clibrary clibrary中文图书馆,2022年9月建立的中文数字图书馆,图书来自Z-Library 2022年9月建立的中文数字图书馆,图书来自Z-Library,拥有部分 Z-Library 的图书数据。 网站下载有限制,用户每24小时有10次下载机会。 https://toolsdar.cn/3830.html
9.Library学校描述https://admission.blcu.edu.cn/en/124/
10.LibraryLibrary Search books, articles, unit codes and more Advanced search Catalogue Google Scholar Newspapers and journals Resource guides Scheduled maintenance: Library Services Library services interruption between 2 am and 6 am Tuesday, December 10th. SeeService Statusfor more informationhttps://www.deakin.edu.au/library
11.clibrary中文图书馆–APP喵2022年9月建立的中文数字图书馆,图书来自Z-Library. Zlibrary挂了,clibrary来了。这个网站的书籍也是来自Zlibrary,资源数量有点少,将就用吧、 网站截图 网站地址https://www.appmiu.com/8380.html
12.library.skshu.com/yyys98714181.htm穿紧身牛仔裤被c到高潮 mmmm69xxxxx 操一下逼小说 美国什么意思三级片免费播放 先锋欧洲AV毛片电影 手机看片1024国产视频 看八光女人毛片 淫荡老骚逼导航 最大的黄色网站一级片 黄片wwAw 内射一边膜上面一边膜下面 早期台湾时装透露两点服装展 网页网址大全免费观看1区2区3区 必博bibo体育官网入口 后营http://library.skshu.com/yyys98714181.htm
13.ieeexploredigitallibrary<!IEEE Xplore, delivering full text access to the world's highest quality technical literature in engineering and technology. | IEEE Xplorehttps://ieeexplore.ieee.org/Xplore/home.jsp
14.iCloud登录iCloud 访问照片、邮件、备忘录、文稿等。通过 Apple 账户登录,或者创建新账户以开始使用 Apple 服务。https://www.icloud.com/
15.WebofScienceヘルプIFIP TRANS C IFLA ALP PROJECT REPORT IFLA ALP PROJ REP IFLA JOURNAL-INTERNATIONAL FEDERATION OF LIBRARY ASSOCIATIONS IFLA J-INT FED LIBR IFLA PUBLICATIONS IFLA PUBL IFMBE PROCEEDINGS IFMBE PROC IFO SURVEY DATA IN BUSINESS CYCLE AND MONETARY POLICY ANALYSIS CONTRIBUT ECON IFORMATION http://images.webofknowledge.com/WOK48B5/help/ja/WOS/I_abrvjt.html
16.clibraryclibrary中文图书馆,2022年9月建立的中文数字图书馆,图书来自Z-Libraryhttps://openi.cn/sites/9648.html
17.澳门大学O Governo da RAEM de Macau pede: Vamos todos persistir; Lembre-se de lavar as mos com frequência; Use uma máscara corretamente; Evite a https://www.um.edu.mo/
18.unsplash免费素材Beautiful, free images and photos that you can download and use for any project. Better than any royalty free or stock photos.https://unsplash.com/
19.simpledirectmedialayerlibrarySDL officially supports Windows, macOS, Linux, iOS, and Android. Support for other platforms may be found in the source code. SDL is written in C, works natively with C++, and there arebindings availablefor several other languages, including C# and Python. http://www.libsdl.org/
20.NationalCenterforBiotechnologyInformationWelcome to NCBI The National Center for Biotechnology Information advances science and health by providing access to biomedical and genomic information. About the NCBI| Mission| Organization| NCBI News & Blog Submit Deposit data or manuscripts into NCBI databases https://www.ncbi.nlm.nih.gov/
21.GoogleCodeGoogle Open Source Open source is good for everyone!Google believes that by being open and freely available, it enables and encourages collaboration and the development of technology, solving real world problems. Google Developers Looking for Google APIs and Tools?Google Developers is the place to http://code.google.com/
22.CodeCogsOpenSourceScientificLibrary(C/C++,.NET,Excel)Interactive Open Source Numerical Library of C/C++ functions for Engineering, Finance, Maths, Science and Statistics. With Online Calculators for Numerical Components and Excel Add-ins.https://www.codecogs.com/
23.pandaspandas pandasis a fast, powerful, flexible and easy to use open source data analysis and manipulation tool, built on top of thePythonprogramming language. Install pandas now! Getting started Install pandas Getting started Documentation User guidehttp://pandas.pydata.org/
24.web.yjsuoj.com/nodenews/045644.htm宝贝腿打开一点我进不去 敢提分手c哭你 三个徒弟强占师父 国产又爽又粗又硬跟舒服 T66Y最新2017地址1地址2 婉莹满足了十几个农民工 三个熟妇玩双飞38章 女被?c黄扒衣服网站 AV无码破解资源 含羞草电影免费看韩国 吃奶小女孩操逼 女の上司调教在线观看 福利su黑料正能量入口大豆 免费人欧美成又http://web.yjsuoj.com/nodenews/045644.htm
25.中国家谱知识服务平台家规家训 迁徙图 数字展览 姓氏浏览 时空浏览 A B C D E F G H J K L M N O P Q R S T W X Y Z 彭peng 878种 先祖名人2009 始于1368 潘pan 632种 先祖名人1865 始于1368 裴pei 97种 先祖名人169 始于1594 庞pang 51种 先祖名人95 https://jiapu.library.sh.cn/
26.AppleDiscover the innovative world of Apple and shop everything iPhone, iPad, Apple Watch, Mac, and Apple TV, plus explore accessories, entertainment, and expert device support.https://www.apple.com/
27.WelcometoPython.orgStart with our Beginner’s Guide Download Python source code and installers are available for download for all versions! Latest:Python 3.13.1 Docs Documentation for Python's standard library, along with tutorials and guides, are available online. https://www.python.org/
28.web.zhengshunboli.com/nodenews/632256.htm麻豆传媒_麻豆传煤入口麻豆_麻豆传煤入口免费进入2023_麻_齐鲁晚报网 草比亚洲 草莓+丝瓜+黄瓜+向日葵+榴莲 美女被 吸乳羞羞免费网站jk 村妇引诱我进她身子 狂野小农民免费观看完整版电影 欧美MV视频免费下载 阳台顶着岳刘晓莉的肥臀电影推荐 宝宝好久没C你了视频免费的视频 灌牛奶cao哭男男腐纯肉 嗯http://web.zhengshunboli.com/nodenews/632256.htm
29.Java调用Cdll指针java调用c#dll2. 创建读取c#类入口文件 创建文件入口,按如下图操作 编写代码,引入第三方dll链接库 #ifdef MYLIBAPI #else #define MYLIBAPI extern "C" __declspec(dllimport) #endif ### 声明构造方法 MYLIBAPI char* GetSignature(char* userID, char* password, char* sha1); https://blog.51cto.com/u_16099228/10526839
30.en.zoyon.com.cn/apldfe2946219.html11月4日电 据新加坡《联合早报》4日报道, 飓风“桑迪”近日吹袭美国,灾区“油荒”日渐严重。美国政府宣布了一系列应对措施,联邦政府释放200万加仑的战略原油储备,国防后勤局也将购买2200万加仑燃油,以缓解纽约和新泽西等灾区的油荒。政府还暂时解除了一项禁止外国船只运油的禁令;新泽西州则实行燃油配给。-- http://en.zoyon.com.cn/apldfe2946219.html
31.当当—网上购物中心:图书母婴美妆家居数码家电服装鞋包等,正品低价,货到付款全球领先的综合性网上购物中心。超过100万种商品在线热销!图书、音像、母婴、美妆、家居、数码3C、服装、鞋包等几十大类,正品行货,低至2折,700多城市货到付款,(全场购物满59元免运费。当当网一贯秉承提升顾客体验的承诺,自助https://www.dangdang.com/
32.nature官网Anthony C. Buzzai Thomas Tüting News & Views11 Dec 2024 Lipid-delivery system could treat life-threatening pregnancy complication Pre-eclampsia is a common and dangerous pregnancy-related illness. Using tiny lipid particles to deliver messenger RNA directly to the placenta to boost blood-vessel funhttps://www.nature.com/
33.html2canvaslibraryHello world! JavaScript html2canvas(document.querySelector("#capture")).then(canvas=>{document.body.appendChild(canvas)}); Try it outDocumentation Install NPM npm install --save html2canvas Install Yarn yarn add html2canvas html2canvas.jshtml2canvashttp://html2canvas.hertzen.com/
34.IMDb:Ratings,Reviews,andWheretoWatchtheBestMovies&IMDb is the world's most popular and authoritative source for movie, TV and celebrity content. Find ratings and reviews for the newest movie and TV shows. Get personalized recommendations, and learn where to watch across hundreds of streaming providers.https://www.imdb.com/
35.中国知网旧版入口 充值 会员 检索 AI增强检索 AI研究助手 主题▼ 问答 高级检索 >出版物检索 > 学术期刊 学位论文 会议 报纸 年鉴 专利 标准 成果 学术辑刊 图书 文库 工具书 中国引文库 学术图片 学术视频 音频 统计数据AI知数 法律法规 政府文件 科技报告 https://www.cnki.net/
36.LinkLibrary动态链接库文件的详细过程C语言这篇文章主要介绍了VisualStudio 制作Dynamic Link Library动态链接库文件的详细过程,本文给大家介绍的使用extern "C"时,上述的decorate不会发生,因为C没有函数重载,如此一来被extern"C"修饰的函数,就不方法是:用 LoadLibrary 函数加载动态链接库到内存,用 GetProcAddress函数动态获得 DLL 函数的入口地址。 https://www.jb51.net/article/257471.htm