张伟,马亚辉,吴凡,邓浩然,李林
(中电科蓉威电子技术有限责任公司,成都610031)
摘要:本文首先概述了一般的热插拔网络功能设计依据及方法,继而进一步阐述了基于L A N8720A采用异步中断方式的热插拔网络设计原理㊂随后在移植L w I P的环境下,分别采用轮询方式和异步中断方式,从硬件及软件两方面详细介绍了热插拔网络功能,并对两种设计方法进行了全面的对比分析㊂
关键词:热插拔;轮询;异步中断;L w I P;状态机;S TM32F417;L A N8720A
中图分类号:T P311.1文献标识码:A
A s y n c h r o n o u s I n t e r r u p t H o t S w a p N e t w o r k D e s i g n P r i n c i p l e a n d M e t h o d
B a s e d o n L A N8720A
Z h a n g W e i,M a Y a h u i,W u F a n,D e n g H a o r a n,L i L i n
(C E T C R o n g w e i E l e c t r o n i c T e c h n o l o g y C o.,L t d.,C h e n g d u610031,C h i n a)
A b s t r a c t:F i r s t l y,t h i s p a p e r o v e r v i e w s t h e g e n e r a l d e s i g n b a s i s a n d m e t h o d o f h o t-s w a p n e t w o r k f u n c t i o n,a n d f u r t h e r d e s c r i b e s t h e a s y n-c h r o n o u s i n t e r r u p t b a s e d o n L A N8720A h o t-s w a p n e t w o r k d e s i g n p r i n c i p l e.T h e n,i n L w I P t r a n s p l a n t e n v i r o n m e n t,t h e h o t-s w a p n e t-w o r k f u n c t i o n i s d e s i g n e d f r o m h a r d w a r e a n d s o f t w a r e a s p e c t s i n p o l l i n g m o d e a n d a s y n c h r o n o u s i n t e r r u p t m o d e,a n d t h e t w o d e s i g n m e t h o d s a r e c o m p a r e d a n d a n a l y z e d c o m p r e h e n s i v e l y.
K e y w o r d s:h o t-s w a p;p o l l;a s y n c h r o n o u s i n t e r r u p t;L w I P;F S M;S TM32F417;L A N8720A
0引言
随着嵌入式技术的发展,以太网(E t h e r n e t)技术凭借其传输速度高㊁能耗低㊁兼容性好和便于安装等优势,在数据信息系统中得到了广泛应用㊂而热插拔技术对于以太网也非常重要,它使得以太网能够快速㊁准确地获取连接状态,以确保网络通信的稳定可靠㊂
通常的网络热插拔设计是通过串行管理接口(S e r i a l M a n a g e m e n t I n t e r f a c e,S M I)不断轮询物理接口收发器(P H Y)来获取以太网的连接状态,从而通过媒体独立接口(M I I)来控制P H Y芯片的断线重连及网络通信㊂而这种设计方法既无法做到实时获取㊁处理网络连接状态,又需要在嵌入式软件设计中不断轮询较为低速的S M I接口,以致影响系统其他任务的处理㊂因此,使用异步中断方式替代常用的轮询方式实现网络的热插拔设计是有实用意义的㊂
1设计原理
在I E E E802.3标准中,将P H Y定义为一个可通过S M I接口对其状态㊁行为进行管理㊁控制的管理实体(S t a-t i o n M a n a g e m e n t E n t i t y),而具体的操作是通过读写P H Y 内部的寄存器来实现的㊂P H Y寄存器的地址空间为5位,因此最多可定义32个寄存器,每个寄存器共有16位㊂而在该标准中已定义了0~15这16个寄存器的功能,地址16~31的寄存器预留给芯片制造厂商自由定义㊂其中寄存器1为状态寄存器(B a s i c S t a t u s R e g i s t e r,B S R),该内容包含了全双工/半双工模式㊁自协商以及连接状态等信息,通常的热插拔设计是通过不断轮询状态寄存器的连接状态(L i n k S t a t u s)位来实现的㊂
而在本网络嵌入式系统设计中,P H Y芯片选用L A N8720A,该芯片符合I E E E802.32005标准,支持通过R M I I接口与以太网媒体接入控制器(MA C)通信㊂同时该芯片还设计有中断功能,可对厂家自定义的寄存器29(I n t e r r u p t S o u r c e F l a g)㊁30(I n t e r r u p t M a s k)进行配置,从而使用L A N8720A
通过n I N T/R E F C L K O功能复用引脚产生低有效的异步中断信号,实现网络热插拔功能㊂L A N8720A的S M I寄存器地址如表1所列㊂
2热插拔功能详细设计
主控芯片选用S TM32F417,其内部集成了MA C,采用R M I I接口与P H Y芯片进行通信,在裸机环境下通过移植网络协议栈L w I P来实现热插拔软件设计㊂
表1 L A N 8720A 的S M I 寄存器地址
寄存器#
描 述组 别0B a s i c C o n t r o l R e g
i s t e r B a s i c 1B a s i c S t a t u s R e g
i s t e r B a s i c
2P H Y l d e n t i f i e r 1
E x t e n d e d
3P H Y l d e n t i f i e r 2
E x t e n d e d 4A u t o -N e g o t i a t i o n A d v e r t i s e m e n t R e g
i s t e r E x t e n d e d 5A u t o -N e g
o t i a t i o n L i n k P a r t h e r A b i l -l i t y R e g
i s t e r E x t e n d e d 6
A u t o -N e g o t i a t i o n E x p a n s i o n R e g i s t e r E x t e n d e d
16S i l i c o n R e v i s i o n R e g
i s t e r V e n d o r -s p e c i f i c 17M o d e C o n t r o l /S t a t u s R e g
i s t e r V e n d o r -s p e c i f i c 18S p e c i a l M o d e s V e n d o r -s p e c i f i c 20R e s e r v e d V e n d o r -s p e c i f i c 21R e s e r v e d V e n d o r -s p e c i f i c 22R e s e r v e d V e n d o r -s p e c i f i c 23R e s e r v e d
V e n d o r -s p e c i f i c 26S y m b o l E r r o r C o u n t e r R e g
i s t e r V e n d o r -s p e c i f i c 27C o n t r o l /S t a t u s l n d i c a t i o n R e g
i s t e r V e n d o r -s p e c i f i c 28S p e c i a l i n t e m a l t e s t a b i l i y c
o n t r o l s V e n d o r -s p e c i f i c 29l n t e r u p t S o u r c e R e g
i s t e r V e n d o r -s p e c i f i c 30l n t e r u p t M a s k R e g
i s t e r V e n d o r -s p e c i f i c 31
P H Y S p e c i a l C o n t r o l /S t a t u s R e g
i s t e r V e n d o r -s p
e c i
f i c 2.1 采用轮询方式的设计方法
图1 在参考时钟输出工作模式下的信号流图
2.1.1 硬件设计
此时P H Y 芯片无需输出中断信号,
因此可将模式选择引脚L E D 2/n I N T S E L 通过下拉电阻设置为低,P H Y 芯片工作于参考时钟输出模式(R E F _C L K O u t M o d e
),即在上电或外部复位过程中将n I N T /R E F C L K O 引脚配置为参考时钟输出(R E F C L K O )功能引脚㊂此时R M I I 的参考时钟(R E F _C L K )可通过X T A L 1和X T A L 2引脚连接一个低成本的外部25MH z 晶体作为输入,在P H Y 芯片内
部自动将参考时钟倍频至50MH z 后,由R E F C L K O 引脚
输出至R M I I 的R E F _C L K ,用于时钟同步㊂在参考时钟输出工作模式下的信号流图如图1所示㊂同时,P H Y 芯
片的MO D E [2:0
]复用引脚默认内部上拉,则每次上电或硬复位缺省值全为1,即使能了自协商功能㊂
2.1.2 软件设计
在使能自协商功能而网络未连接情况下,P H Y 芯片
将控制网络端口一直发送快速连接脉冲(F a s t L i n k
P u l s e
),以根据双方的最大连接能力选择最好的连接方式㊂目前,通常的P H Y 芯片基本都已支持自协商功能,即便不支持自协商或是禁用了该功能,通过标准的并行检
测机制仍可建立通用的网络连接,且在完成时会将B S R
的第5位自协商完成标志位(A u t o N e g o t i a t e C o m p l e t e )置高㊂因此,为了获得最佳的网络连接能力且适应性更强,在进行M A C 初始化时使能自协商功能,而调用S T 公
司提供的标准网络库函数(s t m 32f 4x 7_e t h .c )E T H _I n i t (),以控制S M I 接口对网络外设进行初始化配置时,会等待自协商结束位有效后,根据自协商的结果来进行初始化㊂因此在网络断开情况下,周期地查询B S R 时采用自协商完成标志位判断更为准确,既可跳过MA C 配置时的自协商等待时间,又可避免在网络无连接情况下,调用E T H _
I n i t
()函数时一直重复查询至超时的阻塞时间㊂因此,根据L w I P 结合MA C 及P H Y 芯片的网络初始化过程,出于 谁申请谁释放 的内存管理原则,采用逆向释放的设计思路优化设计了热插拔网络状态机㊂在连接断开和恢复的状态下,通过不断轮询P H Y 芯片B S R 的方式来周期性地感知网络连接状态,从而控制网络状态机切换状态,动态地释放㊁申请内存及配置E T H 接口,实现断线重连功能㊂采用轮询方式设计的热插拔网络状态机可划分为 动态I P ㊁ 正常连接 ㊁ 内存释放 ㊁ 内存申请 ㊁ 定时查询 及 网络重连 这6个状态,采用轮询方式的热插拔网络状态机设计如图2所示㊂
2.2 采用异步中断的设计方法
2.2.1 硬件设计
此时P H Y 芯片需要输出中断信号至主控芯片,
因此需将模式选择引脚L E D 2/n I N T S E L 悬空或上拉至V D D 2A 电压,P H Y 芯片工作于参考时钟输入模式(R E F _
C L K I n M o d e ),即在上电或外部复位过程中n I N T /R E F -C L K O 引脚配置为低有效中断输出(n I N T )功能引脚㊂R M I I 的参考时钟(R E F _C L K )则需要由外部50MH z 晶振同步输出至主控及P H Y 芯片,
而为了避免时钟信号分叉所带来的阻抗不连续等信号完整性的问题,选用了
C Y 2305S I 时钟缓冲器驱动两个参考时钟信号,
用于时钟同步㊂该芯片输出时钟之间的时钟偏移典型值为85p s ,满足R M I I 的参考时钟要求㊂同时由于S TM 32芯片外部中断机制配置相当灵活,因此可将n I N T 信号就近接
入任意空闲G P I O ,用于接收P H Y 芯片产生的外部中断㊂
图2 采用轮询的热插拔网络的状态机设计
在参考时钟输入工作模式下的信号流图如图3所示
㊂
图3 在参考时钟输入工作模式下的信号流图
2.2.2 软件设计
L A N 8720A 所支持的中断管理配置功能并不涵盖
网线原理I E E E 802.3规范,需要通过配置其中断屏蔽寄存器使n I N T 引脚输出异步低有效中断信号㊂L A N 8720A 支持
两种中断模式:一种为基础中断模式(P r i m a r y I n t e r r u p
t M o d e ),另一种为交替中断模式(A l t e r n a t i v e I n t e r r u p
t M o d e )㊂两种中断模式均在对应屏蔽位置时使n I N T 发出低有效中断信号,而两者的主要不同为它们解除n I N T
中断信号输出的方式:在基础中断模式下需要中断源无效或是读中断源标志寄存器;而交替中断模式下则需要在中断源无效后将对应中断源标志位置1或是直接清除对应的中断屏蔽位㊂由于在网络动态地断线重连过程中,需要根据不同的连接状态多次更改中断屏蔽位的配置以产生中断信号,因此采用交替中断模式设计㊂而基础中断模式为上电或硬件复位后的默认缺省状态,则需在每次上电或
硬复位后对模式控制/状态寄存器17的第6位
(A L T I N T )置1,以将P H Y 芯片配置为交替中断模式㊂L A N 8720A 的替代中断系统管理表如表2所列㊂
在异步中断方式下网络断开等待重连时的中断源同样地选择为中断屏蔽寄存器的第2位自协商结束标志,而非第1位网线插入标志(E N E R G -
Y O N )
㊂在网络连接状态下使用中断屏蔽寄存器的第4位连接断开标志(L i n k D o w n
)来快速准确捕捉网络断开信息㊂通过将连接n I N T 中断信号的G P I O 配置为下降沿触发中断模式,即可快速准确地获取网络状态变化信息,采用异步中断方式的热插拔网络状态机设计如图4所示㊂
与采用轮询方式设计的热插拔网络状态机对
比可知,虽然采用异步中断方式设计的状态机仍
有6个状态,但将原来需要不断查询B S R ㊁较为占用系统处理时间的等待连接状态和正常连接状态
改为空操作,通过n I N T 的异步中断触发㊂同时可将n I N T 中断优先级设置为最高,
以快速响应网络状态变化,并在中断处理函数中仅根据当前网络状态控制状态跳转并清除中断标志位,以作最简短的中断处理,避免影响其他中断的响应,即图4中方框标识所示㊂
3 轮询及异步中断方式的对比分析
基于L A N 8720A 采用轮询方式的热插拔网络
硬件设计相对简单,只通过价格相对低廉的外部晶
振即可产生同步参考时钟信号,但一般晶振在宽温工作条件(-55~+85ħ)
下频率稳定性通常表现不佳,且信号质量相对较差,可能会导致网络通信不稳定的情况发生㊂同时由于P H Y 芯片无异步中断输入至主控芯片,因此主控芯片无法直接准确地获取当前P H Y 芯片工作状态,只有不断地轮询B S R ,
使得热插拔状态机软件设计相对复杂,需调用定时器资源,且轮询处理相对较为占用系统处理时间㊂
表2
替代中断系统管理表
图4 采用异步中断的热插拔网络的状态机设计
基于L A N 8720A 采用异步中断方式的热插拔网络硬
件设计相对复杂,需在外部使用成本相对较高的晶振,并经过时钟缓冲器产生同步参考时钟,以确保信号完整性,而晶振及时钟缓冲器工作温度适应性较强,适合于宽温工作应用场景,且P H Y 芯片可产生异步中断信号至主控芯片,主控芯片即可快速准确地获取当前P H Y 芯片的工作状态,无需轮询操作,使得热插拔状态机软件设计相对简单,不占用系统处理时间㊂两种方式下的热插拔网络设计对比汇总如表3所列㊂
表3 两种方式下的热插拔网络设计对比
采用方式通用性硬件
设计软件设计工作温度系统占用成 本轮询方式通用简单复杂商用较多低异步中断方式
定制
复杂
简单
宽温
少
较高
可以看出,采用轮询方式的热插拔网络设计具有通用性,适用于成本受限且工作条件良好的一般应用场景;而采用异步中,断方式的热插拔网络设计具有芯片定制性,适用于对网络通信稳定性及工作条件要求较高,且对于成本不敏感的特殊应用场景㊂
4 测试验证
在P C 机端使用网络调试助手对U D P 协议通信进行对发对收测试验证:P C 机端以网络调试助手所支持的最小发送间隔为1m s ,6K B 包长进行数据流循环发送;
嵌入式软件在接收到U D P 数据后,依次将数据切割为定长数据包和不足定长的尾包数据,分多包返回发送,以突破最
大允许传输单元(M a x i m u m
T r a n s m i s s i o n U n i t
)限制,模拟大数据量㊁快速收发的应用场景㊂
在测试过程中,任意时刻断开网络连接再恢复,断线重连测试50次,采用轮询方式和异步中断方式的热插拔设计均能够快速地恢复收发计数累加,且恢
复后的收发计数始终保持相等,不存在数据掉包现象㊂通过断点调试发现,每次读B S R 大约需耗时20μs
,因此采用轮询方式进行断线重连操作时,在网络连
接后等待时间约为轮询周期加20μs
,而轮询周期即为定时查询状态下既考虑轮询B S R 处理对系统整体的影响,又结合上位机软件对网络连接后通信响
应时
间的要求,统筹考虑设计㊂
由此可知,采用轮询方式设计的断线重连等待时间相对采用异步中断方式设计的较长,且可能存在U D P 分包
发送过程中网络断开
而无法感知的情况㊂采用异步中断方式设计的测试验证情况如图5所示㊂
图5 采用异步中断方式设计的测试验证情况
5 结 语
本文对采用轮询方式和异步中断方式设计的网络热
插拔功能进行了详细的原理论述及全面地对比分析,对相关的网络嵌入式系统设计具有一定的指导意义㊂
参考文献
[1]A d a m D u n k e l s .D e s i g n a n d I m p
l e m e n t a t i o n o f t h e L w I P T C P /I P S t a c k [M ].S t o c k h o l m :S w e d i s h I n s t i t u t e o f C o m p u t -e r S c i e n c e ,2001.
[2]马亚辉,吴凡,李林,等.基于L w I P 的热插拔网络嵌入式设计方
法[J ].单片机与嵌入式系统应用,2020,20(4):1013,17.
[3]张超,王志超,林岩,等.基于L w I P 协议栈的嵌入式网络控制系
统设计[J ].单片机与嵌入式系统应用,2019(2):3440.6
图6 新一代外置断路器控制模块电机位置检测电路
能表接收的蓝牙广播特征码对比一致时,随机生成特征码二,通过蓝牙发送给蓝牙断路器模组编码生成电流指纹,通过电力线发送给电能表,电能表接收电流指纹继续解析出特征码二,如果同自己发送的特征码二一致,就确认此蓝牙断路器为该电能表下的蓝牙断路器,自动配对完成后,业务流程上就实现了电能表蓝牙主控模块外置断路器的数据通信,蓝牙主控模块接收电能表D L /T 698协议加密指令,经过协议转换后控制断路器开合闸,另外蓝牙模组也可以接收断路器的状态上报,经过协议转换并加密后上传给电能表㊂同时,蓝牙断路器支持通过手机A p p
对蓝牙断路器模组和蓝牙模块进行O T A 远程升级㊂软
件组成框图如图7所示㊂
3 结 语
本文通过对电能表外置蓝牙断路器模组的需求分析,
研制了新一代外置蓝牙断路器模组,解决了有线连接断路器存在的诸多问题:安装接线复杂㊁现场施工难度大;
控制
图7 新一代外置蓝牙断路器软件组成框图
信号和反馈信号均为220V 交流电压,
存在用电安全隐患;控制信号和反馈信号均为简单的电平信号,容易人为模拟操作,存在断路器被非法控制的隐患㊂,配合国家电网进行新一代电能表(带蓝牙功能)的推广,现场安装接线更便捷,提高了安装效率,同时通过加密传输和控制,保证了用电的安全和可靠,降低了电网公司运营成本,居民用电也更方便快捷,该模组的研制成功对于国网公司具有重要的社会和经济效益
㊂
参考文献
[1]电工基本术语G B /T 2900.1,2008.
[2
]
电气附件家用及类似场所用过电流保护断路器第1部分:用于交流的断路器G B 10963.1,2005.
[3]低压开关设备和控制设备第2部分:断路器G B 14048.2,2008.
[4]设备用断路器G B 17701,2008.
[5]电能表外置断路器技术规范Q /G DW 11421,2015.
黄波㊁唐玉建(初级工程师),李明㊁秦晓敏(中级工程师):主要研究方向为嵌入式系统㊁
智能用电应用㊂
(责任编辑:薛士然 收稿日期:2020-07-08
) [4]孙乐鸣,江来,代鑫.嵌入式T C P /I P 协议栈L w I P 的
内部结构探索与研究[J ].电子元器件应用,2008(3)
:7982.
[5
]徐天纬,郁汉琪,顾思远.两种网络之间的热备冗余实时通信接口设计[J ].单片机与嵌入式系统应用,2020,20(2):7779,83.[6]吴云龙,程武山.基于S TM 32的语音识别机械手智能系统设
计[J ].单片机与嵌入式系统应用,2020,20(1):3741.[7]李晨,蒋林,刘思平.基于S TM 32与L w I P 协议栈的高效通
信技术[J ].电子技术与软件工程,2019(19):2728.
[8]周航慈.基于嵌入式实时操作系统的程序设计技术[M ].2
版.北京:北京航空航天大学出版社,2011.
[9]韩兴会.基于S TM 32和L w I P 的无线传感器网络网关研究
与应用[D ].西安:西安工程大学,2018.
[10]索朝举,沈沛雨,刘静波,等.S TM 32的调频无线发射与接
收系统设计[J ].单片机与嵌入式系统应用,2019,19(12)
:8183.
马亚辉㊁吴凡㊁邓浩然㊁李林(工程师),主要研究方向为高速可靠存储系统研发㊂
(责任编辑:薛士然 收稿日期:2020-06-28
)
发布评论