1、利用Cypress提供的USB通用驱动程序CyUSB.sys and CyUSB.inf,是稳妥的做法,因为驱动程序的编程比较繁琐,可尽力规避。可简单修改sys文件名、inf文件中的ID码、inf文件中出现的sys文件的文件名;
2、在一个EZUSB固件工程中,一般只需要修改两个文件:Periph.c(用户调度函数,不同工程取名不同,如官方例程中的BulkLoop.c), DSCR.A51(USB描述符列表,通常是汇编语言编写的,读起来简单直接);
3、实际固件编程中一般只需要修改fw.c中出现的两个子函数:
(1)TD_Init():可进行全局变量、FX2LP寄存器初始化;
(2)TD_Poll():在这里添加需要实现的功能,因为它会被main函数重复执行;
4、有事,用户会抛弃TD_Poll()函数,而只是利用" BOOL DR_VendorCmnd(void) "在固件中定义自己的请求,利用控制传输发送用户自定义的请求:
(1)请求响应函数是fw.c中的void SetupCommand(void),其中对用户请求交给DR_VendorCmnd(void)处理,DR_VendorCmnd(void)根据setupdata决定下一步动作;
(2)DR_VendorCmnd(void) 函数定义在Periph.c内,当设备接收到自定义控制命令时被fw.c调用;
PS:发现用Word重新发布一篇经过修改的、本地保存的博客文章,博客上会将之前的文章进行更新,而不是发布一篇新文章,即便更改的是文章标题。这很好,可以方便进行网上和本地的文章同步。
USB的固件和驱动的最简单用法,布布扣,bubuko.com
时间: 2024-10-23 22:14:14