Toggle navigation
首页
问答
文章
积分商城
专家
专区
更多专区...
文档中心
返回主站
搜索
提问
会员
中心
登录
注册
DIY综合交流区
发现RealTouch的WIFI驱动的一个BUG。导致搜索时间太长![已修正]
发布于 2013-03-19 22:13:02 浏览:5322
订阅该版
移植了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
在RT-Thread Studio中构建前执行python命令
2
研究一了一段时间RTT,直接标准版上手太难,想用nano,但又舍不得组件
3
CherryUSB开发笔记(一):FSDEV USB IP核的 HID Remote WakeUp (USB HID 远程唤醒) 2025-01-18 V1.1
4
RT-thread 缩写字典
5
RT Thread 源码分析笔记 :线程和调度器
热门标签
RT-Thread Studio
串口
Env
LWIP
SPI
AT
Bootloader
Hardfault
CAN总线
FinSH
ART-Pi
USB
DMA
文件系统
RT-Thread
SCons
RT-Thread Nano
线程
MQTT
STM32
RTC
FAL
rt-smart
I2C_IIC
ESP8266
UART
WIZnet_W5500
ota在线升级
PWM
cubemx
flash
freemodbus
BSP
packages_软件包
潘多拉开发板_Pandora
定时器
ADC
flashDB
GD32
socket
编译报错
中断
Debug
rt_mq_消息队列_msg_queue
SFUD
msh
keil_MDK
ulog
MicroPython
C++_cpp
本月问答贡献
出出啊
1517
个答案
342
次被采纳
小小李sunny
1444
个答案
290
次被采纳
张世争
813
个答案
177
次被采纳
crystal266
547
个答案
161
次被采纳
whj467467222
1222
个答案
149
次被采纳
本月文章贡献
聚散无由
2
篇文章
14
次点赞
catcatbing
2
篇文章
4
次点赞
Wade
2
篇文章
2
次点赞
Ghost_Girls
1
篇文章
4
次点赞
xiaorui
1
篇文章
1
次点赞
回到
顶部
发布
问题
分享
好友
手机
浏览
扫码手机浏览
投诉
建议
回到
底部