在Windows平台编译开源逻辑分析仪软件DSView,因官方没有公布DSView Windows平台源码,主要解决Windows平台以下问题:
- libusb_get_pollfds不支持Windows平台,导致无法采集数据
- 插入设备后,无法自动识别设备,USB热插拔问题
- 采集数据溢出问题
编译环境
编译环境基于MSYS2 + MingW环境;
通过MSYS2中的pacman.exe命令下载以下依赖项
- gcc (>= 4.0)
- make
- cmake >= 2.6
- Qt >= 5.0
- libglib >= 2.32.0
- zlib
- libusb-1.0 >= 1.0.16 On FreeBSD, this is an integral part of the FreeBSD libc, not an extra package/library. This is part of the standard OpenBSD install (not an extra package), apparently.
- libboost >= 1.42
- libfftw3 >= 3.3
- libpython > 3.2
- libtool
- pkg-config >= 0.22
- ninja
例如:
pacman -S mingw-w64-x86_64-gcc
pacman -S mingw-w64-x86_64-make
pacman -S mingw-w64-x86_64-cmake
pacman -S mingw-w64-x86_64-qt5-static
......
执行以下命令进行Build:
cd DSView
cmake .
ninja
以上编译的源码基于DSView v1.3.1版本编译,编译出来的exe在Windows平台是功能缺失的,即上面提到的借个问题。
解决方案
通过逆向官方Windows程序得到如下伪代码:
该方法解决Windows平台下无法采集到数据的问题,绕过libusb_get_pollfds的限制;同时dsl_get_timeout解决高频下采集数据溢出问题。
该方法解决Windows平台下的热插拔问题。