Toggle navigation
首页
问答
文章
积分商城
专家
专区
更多专区...
文档中心
返回主站
搜索
提问
会员
中心
登录
注册
DIY综合交流区
发现RealTouch的WIFI驱动的一个BUG。导致搜索时间太长![已修正]
发布于 2013-03-19 22:13:02 浏览:5329
订阅该版
移植了RealTouch的WIFI驱动,搜索一次需要几分钟的时间。觉得奇怪,安卓手机搜一次秒杀,电脑也只要5秒钟。研究了一天发现RealTouch的WIFI驱动的一个小BUG导致的。改了之后现在搜索秒杀了,(实际上是500ms)。 ```SCAN_RESP: Scanned 4 Scan: Chan( 2), Radio(0), Mode(0,0), Dur(100) Scan: Chan( 3), Radio(0), Mode(0,0), Dur(100) Scan: Chan( 4), Radio(0), Mode(0,0), Dur(100) Scan: Chan( 5), Radio(0), Mode(0,0), Dur(100) send CMD: 0x6, len 51, Number 8 send:0x06 0x00 0x33 0x00 0x08 0x00 0x00 0x00 0x01 0x00 0x00 0x00 0x00 0x00 0x00 0x01 0x01 0x20 0x00 0x00 0x02 0x00 0x00 0x00 0x00 0x64 0x00 0x00 0x03 0x00 0x00 0x00 0x00 0x64 0x00 0x00 0x04 0x00 0x00 0x00 0x00 0x64 0x00 0x00 0x05 0x00 0x00 0x00 0x00 0x64 0x00 0x06 0x00 0x33 0x00 0x08 0x00 0x00 0x00 _HostCmd_DS_COMMAND 0x01 CMD_BSS_TYPE_BSS 0x00 0x00 0x00 0x00 0x00 0x00 BSSID 0x01 0x01 CHANLIST 0x20 0x00 length 0x00 0x02 0x00 0x00 0x00 0x00 0x64 0x00 _ChanScanParamSet_t 0x00 0x03 0x00 0x00 0x00 0x00 0x64 0x00 _ChanScanParamSet_t 0x00 0x04 0x00 0x00 0x00 0x00 0x64 0x00 _ChanScanParamSet_t 0x00 0x05 0x00 0x00 0x00 0x00 0x64 0x00 _ChanScanParamSet_t``` ```typedef struct { u8 PassiveScan:1; u8 DisableChanFilt:1; u8 Reserved_2_7:6; } ChanScanMode_t; typedef struct _ChanScanParamSet_t { u8 RadioType; u8 ChanNumber; ChanScanMode_t ChanScanMode; u16 MinScanTime; u16 MaxScanTime; }ChanScanParamSet_t;``` 发现这个数据和结构体的长度不一样 ```0x00 0x02 0x00 0x00 0x00 0x00 0x64 0x00 _ChanScanParamSet_t``` 然后用sizeof测试一下,发现sizeof(_ChanScanParamSet_t)=8. 最后发现原来是结构体对齐的原因导致的。而实际上正确的命令应该是 -------------------------------|MaxScanTime| 0x00 0x02 0x00 0x00 0x00 ----0x64 0x00 对比错误的命令: 0x00 0x02 0x00 0x00 0x00 ----0x00 0x64 0x00 发现MaxScanTime由原来的0x0064(100ms)变成了0x6400(25.6s)。这才导致了每次的搜索时间长的上几分钟。(令我奇怪的是这条命令竟然还能被执行。) 解决方法就是加上__packed修饰,让结构体按照字节对齐就可以了。 ```typedef __packed struct { u8 PassiveScan:1; u8 DisableChanFilt:1; u8 Reserved_2_7:6; } ChanScanMode_t; /** ChanScanParamSet_t */ typedef __packed struct _ChanScanParamSet_t { u8 RadioType; u8 ChanNumber; ChanScanMode_t ChanScanMode; u16 MinScanTime; u16 MaxScanTime; } ChanScanParamSet_t;``` 现在搜索就是一眨眼的时间,连接也是这样快。
查看更多
8
个回答
默认排序
按发布时间排序
bernard
2013-03-19
这家伙很懒,什么也没写!
这个好!
aozima
2013-03-19
调网络不抓包,调I2C等时序不上逻辑分析仪,就像电工不用万用表!多用整理的好的文字,比截图更省流量,还能在整理过程中思考。
赞 [s:179]
wandersky
2013-03-21
这家伙很懒,什么也没写!
[s:154]
Rocky
2013-04-17
这家伙很懒,什么也没写!
aishiqi真是天才啊,我用了很久都没想过要改进它,惭愧 Bernard想办法把aishiqi吸收过来吧 [s:157]
bernard
2013-04-17
这家伙很懒,什么也没写!
是的,这个补丁非常好。有的时候有些人对应不上,以后论坛得搞个什么勋章制度
nongxiaoming
2013-04-18
rt-thread大师兄
哈哈,不错~
sz_bearstar
2013-04-18
这家伙很懒,什么也没写!
这个不错
撰写答案
登录
注册新账号
关注者
0
被浏览
5.3k
关于作者
aishiqi
这家伙很懒,什么也没写!
提问
6
回答
20
被采纳
0
关注TA
发私信
相关问题
1
[项目]搞个开源的硬件项目
2
硬件计划贴,及时更新,欢迎提意见
3
软件计划贴,及时更新,欢迎提意见::WMA,MOUNT,LWIP等问题急需解决.
4
MMS协议
5
定点的wma解压库-libwma
6
QQ群记录 [20090821]
7
STM32网络收音机PCB报名征集
8
第一版调试记录
9
第二版硬件讨论
10
RADIO项目相关模块规格--欢迎大家自己做板时规格与此兼容,减少重复劳动
推荐文章
1
RT-Thread应用项目汇总
2
玩转RT-Thread系列教程
3
国产MCU移植系列教程汇总,欢迎查看!
4
机器人操作系统 (ROS2) 和 RT-Thread 通信
5
五分钟玩转RT-Thread新社区
6
【技术三千问】之《玩转ART-Pi》,看这篇就够了!干货汇总
7
关于STM32H7开发板上使用SDIO接口驱动SD卡挂载文件系统的问题总结
8
STM32的“GPU”——DMA2D实例详解
9
RT-Thread隐藏的宝藏之completion
10
【ART-PI】RT-Thread 开启RTC 与 Alarm组件
最新文章
1
ART-Pi2快速上手--点灯
2
ART-Pi2移植CMSIS-DAP(基于CherryUSB协议栈)
3
RT-thred的stm32h723对应bsp包CubeMX添加其他外设报错
4
RT-Thread中的time溢出问题,时间戳溢出,解决方法
5
ART-PI使用env驱动ETH网卡,pc和板子可以ping通
热门标签
RT-Thread Studio
串口
Env
LWIP
SPI
AT
Bootloader
Hardfault
CAN总线
FinSH
ART-Pi
DMA
USB
文件系统
RT-Thread
SCons
RT-Thread Nano
线程
MQTT
STM32
RTC
rt-smart
FAL
I2C_IIC
UART
ESP8266
cubemx
WIZnet_W5500
ota在线升级
PWM
BSP
flash
freemodbus
packages_软件包
潘多拉开发板_Pandora
定时器
ADC
GD32
flashDB
socket
编译报错
中断
Debug
rt_mq_消息队列_msg_queue
keil_MDK
ulog
SFUD
msh
C++_cpp
MicroPython
本月问答贡献
RTT_逍遥
9
个答案
2
次被采纳
xiaorui
3
个答案
2
次被采纳
winfeng
2
个答案
2
次被采纳
三世执戟
8
个答案
1
次被采纳
KunYi
8
个答案
1
次被采纳
本月文章贡献
lizimu
2
篇文章
7
次点赞
catcatbing
2
篇文章
5
次点赞
swet123
1
篇文章
4
次点赞
Days
1
篇文章
4
次点赞
YZRD
1
篇文章
2
次点赞
回到
顶部
发布
问题
分享
好友
手机
浏览
扫码手机浏览
投诉
建议
回到
底部