欢迎来到天天文库
浏览记录
ID:37181119
大小:155.01 KB
页数:3页
时间:2019-05-21
《linux下基于python的usb通信程序开发》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、Linux下基于python的USB通信程序开发蒙卓(上海工程技术大学机械工程学院上海市松江区201620摘要:Linux操作系统通过libusb库完成各种和USB设备的通信,但其开发过程过于繁杂,以python语法简洁的特性调用libusb,可以极大减少对USB设备通信开发难度且无须编写特殊驱动。以CY7C68013芯片为例,在Linux下通过python调用libusb对CypressFx2LP系列芯片通信方法,并介绍了上传数据到芯片内RAM具体应用的方法。关键词:LinuxUSB设备通信libusbpythonCY7C68013芯片Th
2、eDevelopmentofcommunicationprogramforUSBdevicebasePythonunderLinuxMengZhuo(MechanicalEngineeringCollege,ShanghaiUniversityofEngineeringScience,Shanghai201620)Abstract:CommunicationsbetweenUSBdeviceandLinuxOperationSystembaseonlibrarynamedlibusb.Developedonpythonreducecyclet
3、ime,lesscomplexityonUSBdevicedriverbypython’sconciseandsimpleunderstandablestructure.ThearticlefocusonhowlibusbdynasticlibrarycallbackedbyusbmoduleinPython,speciallyhowtouploaddatatoon-chip-RAMofCY7C68013producedbyCypressSemiconductorCompany.Keywords:LinuxcommunicationUSBli
4、busbpythonCY7C680130引言Python语言是一种面向对象、内置高级数据结构、语法简洁严谨、可读性高、易于扩展的解释型脚本语言。最突出的特点是开发周期短和以模块的形式调用各种其他语言编写的库文件,因此Python受到越来越多科技人员的青睐。libusb是Linux操作系统的硬件支持库,主要负责操作系统与USB设备进行通信,使得开发者简化系统底层的依赖和减少重复编程,开发的强度下降、大大缩短开发周期。Fx2LP系列芯片是Cypress公司推出的USB2.0集成微处理芯片,USB收发器、增强型8051单片机及一个16KB片上RAM
5、、一个4KBFIFO存储器和一个通用可编程接口(GPIF)外部接口[2]封装于单一芯片中且使用USB接口进行数据交换,外围固件的开发简化。Python中的usb模块用C语言格式封装了libusb函数接口,鉴于Python开发上的高效性和Fx2LP系列芯片外围固件简单的特性,利用Python开发基于libusb的Fx2LP系列芯片的通信程序,可以缩短开发周期,而且同样能达到其他语言开发的性能和效果。1实现原理和背景1.1Linux下的USB系统体系结构简介USB是一种分层总线结构,USB设备和主机之间的信号传输通过USB控制器实现。图1.Lin
6、uxUSB驱动体系结构[3]Linux操作系统是通过libusb来完成各种与USB设备之间的信号传输,libusb向用户提供应用程序接口(API)控制各种USB信号传输,包括四种数据传输类型:控制传输,等时传输,中断传输,数据块传输四大类接口;两种传输模式:同步传输模式,异步传输模式。其中控制传输采用特定的方式使用控制数据来对设备进行设置,数据传输是无损性的[4]。1.2Fx2LP系列USB接口简介通过Cypress公司提供特定的USB控制指令,表(1)[4],Fx2LP内核能够直接编辑内16KBRAM和内部512字节便笺式RAM的数据内容,
7、使用此类指令进行程序的数据上传与下载。数据方向bmRequestbRequest上传至芯片0x400xa0从芯片下载0xc00xa0表(1)Fx2LP控制指令位1.1基于Python的USB通信使用Linux-python组件中的usb模块(以Ubuntu10.4发行版为例,包名称为pyusb),该模块以ctype格式调用libusb库中的动态接口链接函数[5],并提供了python化的接口。通过import指令调用此模块完成与libusb接口的通信从而到达与USB设备通信的目的。usb模块文件位于/usr/lib/pymodules/pyt
8、hon2.6/usb.so。图(2)pythonlibusb和linux信息结构图0程序实现2.1搜索芯片并加载加载usb模块后,python已可访问所有USB设备
此文档下载收益归作者所有