dnw应用程序以及驱动程序编译说明
一、修改ID号:
1.确定ID号
在开发板上电进入Uboot或Superboot情况下,将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_ID:0x5345和PRODUCT_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程序了。