最近在和小伙伴学习USB,末了打算把一颗新芯片的USB驱动给适配一下。
其USB控制器也是MUSB,估计难度不会太大(太天真)。
计划
准备1块或以上正常好用的板子,烧好boot,方便调试下载。
最好有原来的usb例程,这样方便验证硬件和基本软件环境。
开始尝试引入cherry和musb驱动,并适配好。
适配过程
适配前,需要先读懂关键位置,搞清MUSB寄存器地址在哪?
以及芯片本身的IO,时钟,中断在哪?
这些都是芯片厂家定制,与MUSB无关,需要从原来的例程中区分出来。
寄存器结构确认
MUSB驱动适配最大的挑战(混乱)可能是寄存器结构了,
从MUSB的手册上面来看,一般通用寄存器还是基本一样的。
后面的索引寄存器会有些小差异,一般都通过修改偏移量来解决。
但我这次适配的这个芯片改动就比较大了,把通用寄存器也给调整了,
原来有2个8位寄存器直接拼成16位的操作行不通了。
好在基本功能中,主要是配置低位,所以暂时通过改名来让其它工作正常。
后续计划
更多寄存器和功能还在适配中,估计要把寄存器结构的定义完全交给具体的芯片才行,默认示例完全按IP厂商的即可。
原作者:aozima