从飞思卡尔网站下了个usb bootloader,是那个mass
storage的bootloader,原理是在pc上虚拟个u盘类的设备,直接把s19文件拷贝进去即可。
我直接用usb bootloader v2 with blink
led1这个工程测试。我的板子因为晶振的问题,外部晶振实际上是16mhz,所以我修改代码,让cpu跑在48mhz,然后修改usb初始化代码让它采用sysclk。其他的没改。但是发现一个问题,如果不进入bootloader模式,它工作的很好。但我按下sw1按键让它进入bootloader模式的时候(在启动时),结果pc无法检测到这个mass
storage设备。提示发现不认识的usb设备。看起来是枚举过程出错。
跟踪了下,最开始确实检测到reset,代码中进入了
void PollUSB(void) {
byte stat;
byte odd;
if(MCF_USB_OTG_INT_STAT &
MCF_USB_OTG_INT_STAT_USB_RST)
{
ICP_Reset_Handler();
}
执行了 ICP_Reset_Handler();但后续过程似乎就出错了。
我还没机会在飞思卡尔52259 evb上测试这个工程。等出差回去测试下。但我的板子跑cmx的usb
stack和mqx都ok,没出现usb方面的什么问题。不知道为什么这个bootloader怎么就出现问题。
请各位高人帮忙分析下问题