作者:下家山(转载,请注明作者,请尊重原创)
在marvell文档里面把睡眠与省电放在一起讲的(其实睡眠就是一种省电),我这里特意把他们挑出来,有便于更清晰的去理解。
在marvell8686(marvell其他芯片)中,我把其睡眠分成如下类:
这里的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 配置命令。
参见上面。
参见上面。
转载:请注明,作者,下家山 请尊重原创!
文章评论(0条评论)
登录后参与讨论