RK3568 网络远程唤醒技术

本文详细介绍了网络远程唤醒(WOL)技术,包括其起源、幻数据包的工作原理,以及AMD的Magic Packet唤醒方式。针对RK3568平台,讨论了硬件支持、软件调试步骤,如启用Linux系统的WOL功能,并提供了测试和唤醒目标机的两种方法。文章还提到了中断配置和GPIO唤醒的重要性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

RK3568网络远程唤醒技术(WOL)使用指南

第一节 网络远程唤醒技术介绍
网络唤醒(Wake-on-LAN,WOL)是一种计算机局域网唤醒技术,使局域网内处于关机或休眠状态的计算机,将状态转换成引导(Boot Loader)或运行状态。无线唤醒(Wake-on-Wireless-LAN,WoWLAN)作为WOL的补充技术,使用无线网卡去唤醒计算机。网络唤醒在一般的局域网环境里使用有限广播地址(255.255.255.255)即可,由于路由器都不转发目的地址为有限广播地址的数据报,因此在复杂网络情况下通常使用子网定向广播地址。在局域网外唤醒局域网内特定计算机,可以使用路由器的DDNS与端口转发。

​ 在1996年10月,英特尔和IBM成立了Advanced Manageability Alliance。1997年4月,联盟提出了WOL技术。这是WOL技术的起源,随后各大厂商纷纷推出了自己的WOL技术标准。本文所讨论的WOL技术是由AMD公司提出的Magic Packet(幻数据包,魔术包)唤醒方式,这里给出AMD关于此技术的[白皮书。

幻数据包(Magic Packet)
幻数据包是一个广播帧,包含目标计算机的MAC地址。由于MAC地址的唯一性,使数据包可以在网络中被唯一的识别。幻数据包发送通常使用无连接的传输协议,如UDP,发送端口为7或9,这只是通常做法,没有限制。

​ WOL技术被提出了将近20年,绝大多数的现代网卡都支持在超低功耗下监听特定的报文,如ARP。如果设备网卡接收到一个与自己 MAC 地址相同的幻数据包,则网卡会向计算机的电源或主板发出信号以唤醒计算机。大部分的幻数据包在数据链路层(OSI模型第2层)上发送,当发送时,使用广播地址广播到给定的网络上,不使用IP地址(OSI模型第3层)。当然这是绝大部分情况,幻数据包也可以使用特定的IP地址进行发送。

​ 幻数据包最简单的构成是6字节的255(FF FF FF FF FF FF FF),紧接着为目标计算机的48位MAC地址,重复16次,数据包共计102字节。有时数据包内还会紧接着4-6字节的密码信息。这个帧片段可以包含在任何协议中,最常见的是包含在UDP中。

格式
FF FF FF FF FF FF FF MAC地址 × 16 4-6字节的密码(可空)
例如MAC地址为11 22 33 44 55 66的目标计算机,幻数据包的格式为:

​ FFFFFFFFFFFF 112233445566 112233445566
​ 112233445566 112233445566 112233445566
​ 112233445566 112233445566 112233445566
​ 112233445566 112233445566 112233445566
​ 112233445566 112233445566 112233445566
​ 112233445566 112233445566
​ [ABABABABABAB(这里为6个字节的密码)]

重点:网络远程唤醒条件

幻数据包还有一些基本限制条件:

​ 需要知道目标计算机MAC地址
​ 不提供送达确认
​ 可能无法在局域网之外工作
​ 需要硬件进行支持

第二节 RK3568以太网远程唤醒调试

1.确定硬件支持情况

硬件上使用YT8531C以太网芯片,通过这个芯片的数据手册了解到拉低中断脚可以唤醒系统:

	 The INT_N/PME_N pin (pin 31) is designed to notify both interrupt and WOL events. The default mode of this pin is INT_N (Ext_0xa00a, bit[6]=0). For general use, indication of a WOL event is also integrated into one of the interrupt events which is triggered when any specified WOL event occurs. However, the ‘Pulse Low’ waveform format is not supported during this mode; only the Active Low, level-triggered waveform is provided.If PME_N mode is selected (Ext_0xa00a, bit[6]=1), pin 31 becomes a fully functional PME_N pin. Note that the interrupt function is disabled in this mode.  

英文描述的这一段配置YT8531C phy驱动中已经有配置:需要使能对应宏开启WOL功能配置

在这里插入图片描述

2.软件调试(linux平台)

调试前在系统安装调试用到的工具:

​ sudo apt-get update

​ sudo apt-get install ethtool

​ sudo apt install wakeonlan

在控制台执行ethtool eth0 确认网卡wake-on 功能是否打开

如果wake-on:d 表示禁止远程唤醒 g 表示打开了远程唤醒
在这里插入图片描述

打开wake-on可以执行如下命令:ethtool -s eth0 wol g

当然如果想不执行这个命令开机直接打开此功能也是可行的,前提是需要修改代码:

修改如下:

在这里插入图片描述

stmmac_ethtool.c做出如下修改:

在这里插入图片描述

修改后需要在stmmac_main.c中调用stmmac_set_wol打开wol功能
在这里插入图片描述

通过以上的修改已经打开了系统WOL功能,那么是否能够唤醒系统呢,经过测试不能唤醒。通过分析要唤醒系统需要硬件支持,中断IO就需要配置GPIO中断唤醒,平台需要支持GPIO唤醒功能.

&gmac1 {
phy-mode = “rgmii”;
clock_in_out = “output”;
interrupt-parent = <&gpio0>;
interrupts = <RK_PB3 IRQ_TYPE_LEVEL_LOW>;</

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值