完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
现象:
1. M453, 使用 APROM + IAP方式. flash 布局共三块分区. 为 bootloader / APP / Backup . 系统开机加载bootloader, 然后bootloader 在引导App. App 为主应用区, 可以通过USB实现在线升级, 升级时吧固件内容烧写在Backup 区, 烧写完毕后, 软复位到 bootloader bootloader程序检测到backup的内容有效, 则把backup的内容复制到 App区, 然后再加载App内容. /* Bootloader的代码 */ SYS_UnlockReg(); SYS_Init(); /* Enable FMC ISP function */ FMC_Open(); set_iap_aprom_boot(); FMC_ENABLE_AP_UPDATE(); fw_update_info_t info = {0}; info.fw_addr = FMC_Read(NDADDR_FACTORY); info.page_cnt = FMC_Read(NDADDR_FACTORY + 4); if ((info.fw_addr == NDADDR_BAK) && (info.page_cnt > 0x0ul)) { update_fw_config_area(); //把backup的内容复制到 App区 update_fw_data(info.page_cnt); //更新配置区 } /* Mask all interrupt before changing VECMAP to avoid wrong interrupt handler fetched */ __set_PRIMASK(1); /* Change VECMAP for booting to APROM */ FMC_SetVectorPageAddr(NDADDR_APP); //引导App区 OK /* Lock protected Register */ SYS_LockReg(); /* Software reset to boot to APROM */ NVIC_SystemReset(); while (1); App区代码. ============================ 开机部分 USBD_Open(&gsInfo, VCOM_ClassRequest, NULL); //内部实现 包括 SE0 置 1, 即 D+-断电操作 /* Endpoint configuration */ VCOM_Init(); USBD_Start(); //内部实现有 先延迟 100ms, 然后 SE0 清零, 即 要求 host 端 重新枚举的动作 NVIC_EnableIRQ(USBD_IRQn); Question: 1. 根据以上流程, bootloader引导App没有问题, App升级固件没有问题, App升级完毕后. 引导bootloader也 OK, 然后bootloader再次引导更新后的App时, 发现 主机端不能识别VCOM了. 2. 通过对M453断电再开机, 主机能识别VCOM了,而且确认新固件能运行. 或者M453不复位, 主机端的usb口拔插一下, 主机端也能识别VCOM了. 从上述现象, 应该是主机端的USB口没有进行usb设备的重枚举, 解决方法我觉得应该是a. 想办法让主机端linux进行设备重枚举 b. 让M453端进行设备重枚举. 经不断试验, 结果如下. a. 让主机端linux进行设备重枚举. (有方法, 但不是最好的处理方式, 因为主机端要知道何时复位设备所在的USB总线, 而且如果总线挂甚多设备时不合适) b. 让M453端进行设备重枚举. (看官网资料, 说是USB控制支持软件断开连接功能, 即SE0先置位, 延时后再清零即可. 但看代码USBD_Open/USBD_Start已经做了, 我在App最初的时候也做了一次, 也没有效果) 所以问问群内大牛门, Why and How 让固件更新后M453做什么操作可以让主机端识别到VCOM? |
|
相关推荐
1个回答
|
|
可能是以下原因导致M451 USB设备不能再Host被识别:
1. USB驱动程序问题:检查USB驱动程序是否正确安装或是否需要更新。 2. USB线路问题:检查USB线路是否正确连接,或更换USB线路。 3. USB硬件问题:检查USB设备是否损坏或需要更换。 4. USB固件问题:检查M451的USB固件是否存在问题,如是否正确配置了USB协议等。 5. 控制器问题:检查M451的控制器是否存在问题,如是否正确识别USB设备等。 6. 代码问题:检查M451的Bootloader和App代码是否存在问题,如是否正确处理USB协议等。 |
|
|
|
只有小组成员才能发言,加入小组>>
795 浏览 0 评论
1154 浏览 1 评论
2530 浏览 5 评论
2863 浏览 9 评论
移植了freeRTOS到STMf103之后显示没有定义的原因?
2713 浏览 6 评论
keil5中manage run-time environment怎么是灰色,不可以操作吗?
1078浏览 3评论
195浏览 2评论
461浏览 2评论
374浏览 2评论
M0518 PWM的电压输出只有2V左右,没有3.3V是怎么回事?
455浏览 1评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-12-23 15:04 , Processed in 1.011961 second(s), Total 77, Slave 58 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号