我一直在Linux上使用LibUSB开发USB驱动程序,但现在我想为Windows编译我的一个驱动程序(这是我第一次这样做).
我正在使用MinGW编译器(也使用Dev-cpp IDE)在Windows 7上工作,我正在使用从此链接下载的预编译的libusb库.
我的设备:这是一款HID触控设备.因此Windows不需要驱动程序.我有一个额外的端点来获取某些调试数据.
我已编译代码列出连接到我的机器的所有设备和USB设备,代码可以工作.现在我添加代码来打开设备,以便获得设备句柄并开始通信.但是函数返回-12即LIBUSB_ERROR_NOT_SUPPORTED.
我该如何解决这个问题?
我在互联网上搜索并没有找到解决这个问题的明确方法.虽然它的代码在Linux上运行得很好.
PS:我在下面添加了整个代码.该DoList();函数工作正常,但GetTRSDevice();函数失败 libusb_open(dev, &handle);.
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <libusb.h>
libusb_device_handle* deviceHandle = NULL;
int DoList();
libusb_device_handle* GetTRSDevice(void);
int main()
{
int ret = libusb_init(NULL);
if (ret < 0) {
printf("Failed to init libusb");
return ret;
}
DoList();
deviceHandle = GetTRSDevice();
if(!deviceHandle) {
printf("Failed to locate device");
goto fail_dev_open;
}
printf("Device opened");
libusb_close(deviceHandle);
fail_dev_open:
libusb_exit(NULL);
return(ret); …Run Code Online (Sandbox Code Playgroud) 我已经在Windows 7的Qt5.1上开发了一个应用程序,现在我想分发它.由于我使用了MINGW编译器,因此无法将其构建为静态.我使用依赖walker找出所有的dll并打包它.当我在没有安装QT开发环境的机器上运行应用程序时,应用程序崩溃与Microsoft Visual C++运行时库错误.
有人可以指出我的问题吗?
我的系统是基于x86的内核和基于ramfs的根文件系统.我已经使用基于cpio存档的ramfs(它将使用boot =/dev/ram0作为RAM设备),并且我遇到了一些init问题.整个目的是将ramfs优化到最小,以适应一个非常小的系统.我试图在init中调试问题.我使用以下命令在Ubuntu 12.10(Quantal Quetzal)中启动QEMU:
qemu-system-x86_64 -kernel linux-3.9.2/arch/x86/boot/bzImage -serial stdio -append "root=/dev/ram0 console=tty1"
Run Code Online (Sandbox Code Playgroud)
正如预期的那样,系统进入了OOPS.
我想查看日志以调查崩溃的原因,但我无法使用Shift密钥和Page Up/ 在QEMU控制台中导航Page Down.所以我尝试使用curses命令将输出重定向到主机终端:
qemu-system-x86_64 -kernel linux-3.9.2/arch/x86/boot/bzImage -serial stdio -append "root=/dev/ram0 console=tty1" -curses
Run Code Online (Sandbox Code Playgroud)
但在这里,我无法导航并找到问题所在.
PS如果我的系统启动正常(使用正确的rootfs),那么我可以导航并查看消息.
如何将消息重定向到终端或文件?
我正在尝试为beaglebone black编译dts文件。我已经从此位置git://git.ti.com/ti-linux-kernel/ti-linux-kernel.git克隆了git存储库,并且出现以下错误:
对于beaglebone黑色:
$ dtc -I dts -O dtb -o am335x-boneblack.dtb am335x-boneblack.dts
Run Code Online (Sandbox Code Playgroud)
错误:am335x-boneblack.dts:10.1-9语法错误
致命错误:无法解析输入树
我尝试使用atmel sam9g20 ek-我收到相同的错误:
$ dtc -I dts -O dtb -o at91sam9g20ek_2mmc.dtb at91sam9g20ek_2mmc.dts
Run Code Online (Sandbox Code Playgroud)
错误:at91sam9g20ek_2mmc.dts:9.1-9语法错误
致命错误:无法解析输入树
但是,当我使用主线内核时,它们会进行编译。
我试过make ARCH=arm dtbs也是一个错误
有人可以指出我犯的错误吗?
背景
我在Python中有一些分析软件我必须将一个4096字节的列表(看起来像这样 [80, 56, 49, 50, 229, 55, 55, 0, 77, ......])传递给一个dll,以便dll将它写入设备.
必须从python调用的c函数(在dll中)是
int _DLL_BUILD_ IO_DataWrite(HANDLE hDevice, unsigned char* p_pBuff, unsigned char p_nByteCntInBuff);
我无权访问DLL代码
尝试了方法
我试图声明一种数据类型
data_tx = (ctypes.c_uint8 * len(data))(*data)
Run Code Online (Sandbox Code Playgroud)
并调用该函数
ret = self.sisdll.IO_DataWrite(self.handle, ctypes.byref(data_tx), ctypes.c_uint8(pending_bytes))
Run Code Online (Sandbox Code Playgroud)
问题
似乎没有错误,但它不起作用.API调用适用于C和C++.
我这样做是对的.谁能请我帮忙指出错误?
我正在尝试调试和优化内核启动时间.我正在使用QEMU来模拟内核.我用KERN_DEBUG放置了一些printk,但它们没有显示在任何终端上.我不得不将它们更改为KERN_INFO,然后我可以看到相同的内容.
我的调试日志级别是7.我在配置内核时更改了它.
有人可以告诉我,如果打印件被缓冲到任何其他终端吗?