dnw应用程序以及驱动程序编译说明

1200阅读 0评论2013-05-23 sometimeixpub
分类:LINUX

一、修改ID号:

1.确定ID

在开发板上电进入UbootSuperboot情况下,将USB线插入主机U口上,并用dmesg查看USB设备的连接情况,如果有新的设备接入,表明开发板已经连接上,此时可用lsusb命令查看:

liwei@liwei:~$ lsusb

Bus 005 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub

Bus 004 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub

Bus 003 Device 002: ID 0403:6001 Future Technology Devices International, Ltd FT232 USB-Serial (UART) IC

Bus 003 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub

Bus 002 Device 003: ID 046d:c315 Logitech, Inc. Classic New Touch Keyboard

Bus 002 Device 002: ID 093a:2510 Pixart Imaging, Inc. Hama Optical Mouse

Bus 002 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub

Bus 001 Device 044: ID 5345:1234 Owon PDS6062T Oscilloscope

Bus 001 Device 042: ID 18e3:9103 Fitipower Integrated Technology Inc

Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub

liwei@liwei:~$

我们会发现如下一行:

Bus 001 Device 044: ID 5345:1234 Owon PDS6062T Oscilloscope

表明主机已经识别此设备,但我们关心的只是ID 5345:1234这一句,其中包含了我们所需要的VENDOR_ID0x5345PRODUCT_ID 0x1234.这正是我们在驱动中所要修改的。

2.修改ID

在驱动secbulk.c中,修改上述ID如下:

#define EZ6410_PRODUCT_ID static struct usb_device_id secbulk_table[]= {

{ USB_DEVICE(0x5345, 0x1234)},

{ }

};

3.安装usb-dev:


~# sudo apt-get install libusb-dev


二、添加CheckSum功能

在编译dnw.c后,运行时会出现CheckSum Error,那是因为我们的发送函数中没有完成校验过程。我们通过在写如函数之前加入如下内容来完成此功能:

//////////////////////// ADD BY WEI ///////////////////////


//添加CheckSum功能


file_buffer[file_stat.st_size+8] = sum;


file_buffer[file_stat.st_size+9] = sum>>8;


//////////////////////// END OF ADD ///////////////////////

至此,一个具有基本传输功能的dnw程序就可以使用了。


NOTE

最终程序目录中为最终的代码,只要执行代码中相应的make.sh文件即可完成编译:

~# ./make.sh

首先,需要使用:

~# sudo insmod secbulk

来插入我们的驱动程序,其次,还要在系统中使用如下命令建立用到的设备节点:

~# sudo mknod /dev/secbulk c 102 0

然后,就可以启动我们的dnw程序了。

上一篇:Linux下USB烧写uImage kernel
下一篇:编译所有子目录的makefile