EZ-USB FX2 LP CY7C68013A 开发指南(4)--基于Linux的驱动编写

 CYPRESS的68013有个绝活就是可以省掉做USB固件的EPPROM,何解?他把固件放到主机驱动。

在windows端很完善,那么linux端如何做?你去Cypress网站上找,人家也说不提供linux驱动,毕竟linux不是主流啊,哎。。。

国外的人士就是比较热心,现在据我所知有2个方案,不过都是基于Cypress手册上说的下载固件方法:

1、fxload:老牌的,在sourceforge可以找到

2、Electronics -- USB-FX2 Board: Software:我最近发现的,网址在:http://www.triplespark.net/elec/periph/USB-FX2/software/

 

ok,说了半天,如果想知道怎么回事的话,就要仔细看看人家代码怎么写的了,最好对照Cypress的TRM手册来看,一会儿就明白了。

不过,因为USB是固定的协议,所以Linux下又有一堆懒人写了个libusb,提供了通用的控制传输、bulk传输函数。上面的第2个程序就是基于该库的。

 

如果在arm下面使用USB Host来控制68013,也是一样的方法,只要把hex往ep0写对应的格式数据即可。写完后也会像PC一样重新枚举。

 

如果68013用的是Slave FIFO模式,注意AutoIn寄存器的设置要和USB数据包大小一致。否则出现USB2.0和USB1.1不通用的情况。这个在USB固件里面判断一下是否为高速即可。

另外CPU端写USB的fifo一定要注意时钟,最好是用上FIFO的满、空标志,否则很容易丢包。

 

现在下了固件以后还必须有设备节点才能访问,这个问题可以仿照 drivers/usb/usb-skeleton.c写一个就行了,这个文件会自动创建设备节点。相信大家用的最多的是批量传输,里面的例子就是批量传输的。其他的api可以搜索看看。

 

你可能感兴趣的:(c,linux,windows,api,hex)