百科问答小站 logo
百科问答小站 font logo



如何用U盘代替开机键? 第1页

  

user avatar   bei-ji-85 网友的相关建议: 
      

重新整理我的答案:


如果是USB的设备,我认为不存在“任何情况”下都通过USB可以直接开机设备,至少现有USB规范是不支持的。

如果放宽要求,在一定条件下能通过USB设备开机,那么也是可能的,这些条件包括:

1. 主板、硬件都支持相关的特性。 2. USB设备必须是在系统关机前已经插在主机上的。

其中,第二条尤其重要,这也是我说的USB规范限制。

支持USB键盘开机的主板是有的,评论里就有人提到。但在关机状态下插上USB设备,然后通过这个设备开机,这种情况目前是不支持的。

原因在于:

USB协议与网络协议不同的地方在于,USB协议里,所有请求都是host(主机)发起的,而网络协议是对等的(谁发起都可以)。USB设备不会主动向host(主机)发起任何请求(不要被USB协议里的名字迷惑,即使interrupt传输,也是polling的),USB设备的所有行为都受到host(主机)的控制。

USB唤醒系统的本质,是通过USB设备里有一个remote wake up的特性。而要想使用这个特性,必须首先让host(主机)下发一个命令,告诉设备你可以这么做。之后USB设备才会通过remote wake up特性,触发一个USB中断给主机,让主机的USB控制器最终唤醒系统。

而主机要想下发命令,前提是设备先被枚举出来,并且处于可用状态。

于是,remote wake up的整个流程就是:

主机枚举到USB设备->主机使能设备->设备正常工作->主机使能remote wake up->设备断电挂起->设备被触发时发送wake up中断触发主机唤醒。

这里,所有的步骤都不能少,在设备断电挂起之前的几步中,主机必须处于工作状态。

那么,如果是断电状态下,前面几步就不可能完成了,因为主机断电,没办法枚举设备(枚举设备是一个复杂的过程,需要通过一系列指令完成,必须要CPU协助)。所以,如果在断电情况下新插上一个USB键盘,是不能通过这个键盘唤醒系统的。

所以,不存在一种在任何情况下都能唤醒主机的USB设备。

那么为什么网卡和PS/2键盘几乎可以在任何情况下唤醒主机?

因为网卡和PS/2键盘是能直接发送中断给中断控制器的,这类设备不需要像USB协议样采用polling(轮询)方式工作。PS/2键盘直接发送中断和scan code,网卡之前的配置信息是写在网卡的内部的存储设备里,不管是否断电过,这些配置和动作都是预先设计好的。所以网卡的WOL(wake on lan)和PS/2键盘的适应性更强。

当然实际情况中,在掉电再上电的情况下,网卡和PS/2键盘也有概率出现无法唤醒的情况。

--------------------------------------

补充:有人提到了WoC的特性,就是插入设备时唤醒,Windows休眠就有类似的机制。但这有个问题,WoC是不太能区分是什么设备的,那么有可能出现随便一个设备都唤醒的情况。




  

相关话题

  长城笔记本电脑飞腾芯片自主系列在京东卖8999元,长城自主笔记本电脑会超越联想吗? 
  如何评价首款搭载骁龙 8cx (Gen 3) 的 ARM 笔记本 ThinkPad X13s? 
  大一新生买电脑一般多少钱够用? 
  为什么thinkpad总喜欢用低色域屏幕? 
  如何看待华为时隔两年发布 MateBook E 二合一笔记本?有哪些亮点和不足? 
  联想官方是怎样评价网友对其美帝良心企业这称呼的? 
  如何看待联想对小米游戏本的评价与直呼“miboy”的行为? 
  为什么对于一些人来说笔记本电脑分辨率高反而是扣分项,他们只想用 1080P 屏幕? 
  如何看待所有携带雷电三接口的设备疑似存在漏洞且无法修复? 
  2021 推荐大学生买的笔记本电脑有哪些? 

前一个讨论
未来操作系统如何应对全 nvram 体系?
下一个讨论
如果说 RISC 的性能不如 CISC,那为什么很多超算是 RISC 架构的?





© 2024-11-24 - tinynew.org. All Rights Reserved.
© 2024-11-24 - tinynew.org. 保留所有权利