"); //-->
作者:下家山(转载,请注明作者,请尊重原创)
在marvell文档里面把睡眠与省电放在一起讲的(其实睡眠就是一种省电),我这里特意把他们挑出来,有便于更清晰的去理解。
在marvell8686(marvell其他芯片)中,我把其睡眠分成如下类:
1 Host睡眠
这里的host有点不好理解,也可以理解成卡片里面的那个CPU(ARM9核),本人认为是说我们的驱动,host driver,host睡眠就是驱动可以不管marvell8686,去做其他的事情。
① 对应的命令CMD_802_11_HOST_SLEEP_CFG(0x43)
在marvell 驱动中属于私有命令,例:
iwpriv ethX hscfg Condition [GPIO# [Gap]]
(也有这种形式 iwpriv ethX hostsleepcfg Condition [GPIO# [Gap]])
命令解析
●Condition必选,[]里的参数可选;
●如果只有Condition
bit 0 = 1 -- broadcast data
bit 1 = 1 -- unicast data
bit 2 = 1 -- mac event
bit 3 = 1 -- multicast packet
iwpriv eth1 hscfg 1 # broadcast data
iwpriv eth1 hscfg 2 # unicast data
iwpriv eth1 hscfg 3 # broadcast and unicast data
●如果带GPIO#
iwpriv eth1 hscfg 2 0x3 # unicast data
# use GPIO 3
注意:GPIO# 参数也可以为0xff,此时表示使用界面(如:SDIO谁能告诉我是什么意思)
iwpriv eth1 hscfg 2 0xff # unicast data
# use Interface (e.g. SDIO)
●如果带Gap(睡眠间隙)
iwpriv eth1 hscfg 2 1 0xa0 # unicast data
# use GPIO 1
# gap: 160 ms
注意:Gap 参数也可以为0xff,此时表示特定的host sleep mode,谁能告诉我是什么意思)
iwpriv eth1 hscfg 0x2 0x3 0xff # unicast data
# use GPIO 3
# special host sleep mode
iwpriv eth1 hscfg 0x2 0xff 0xff # unicast data
# use Interface (e.g. SDIO)
# special host sleep mode
iwpriv eth1 hscfg -1 # cancel host sleep mode(删除host sleep配置,或者说disable host sleep)
(也有这种形式iwpriv eth1 hscfg 0xffffff)
本命令主义点:
GPIO[5]置低160ms
假设我们执行iwpriv eth1 hscfg 2 5 0xa0
当firmware从其他PC处接收到一个ping包,则GPIO[5]将会有一个160ms的低跳变。Host将会根据这个跳变得到唤醒。
问题:如果只有一个参数是如何唤醒iwpriv eth1 hscfg 2 **?
③.如何激活此命令仅仅是配置,他还需要激活。那么如何激活呢?
Firmware在任何时候接收到CMD_802_11WAKEUP_CONFIRM或CMD_802_11_DEEP_SLEEP时将激活hostsleep 配置命令。
2.Firmware睡眠 ①.Firmware连上AP状态下睡眠参见上面。
②.Firmware没有连上AP状态下的睡眠参见上面。
结束
转载:请注明,作者,下家山 请尊重原创!
*博客内容为网友个人发布,仅代表博主个人观点,如有侵权请联系工作人员删除。
eleaction01 阅读:4524