打印
[AT32F415]

boot跳转到app后初始化usb会出现卡死异常

[复制链接]
1642|3
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
ccxzjz|  楼主 | 2021-12-21 09:15 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式
dc, CD, AC, AD, App, boot
1、单独跑APP,运行正常。2、把usb cdc初始化的函数去掉,boot跳转到app,运行也正常。
一旦初始化了usb,就直接卡死在usb那。

boot的跳转函数用的官方bsp里的升级demo里的代码:
void IAP_Jump(uint32_t dwAddr)
{
    uint32_t dwStkPtr, dwJumpAddr;
    uint32_t i = 0;
    dwStkPtr = *(UINT32 *)dwAddr;
    dwJumpAddr = *(UINT32 *)(dwAddr + sizeof(UINT32));
    if ((dwStkPtr < SRAM_BASE) || ((dwStkPtr & 0xFF000000) != SRAM_BASE || (dwJumpAddr < FLASH_APP1_ADDR) || ((dwJumpAddr & 0xFF000000) != FLASH_BASE)))
        return;
    for (i = 0; i < 1000000; i ++)
    {
        __NOP();
    }
    RCC->APB2RST = 0xFFFF;
    RCC->APB2RST = 0;
    RCC->APB1RST = 0xFFFF;
    RCC->APB1RST = 0;
    RCC->APB2EN = 0;
    RCC->APB1EN = 0;
    RCC->AHBRST = 0xFFFF;
    RCC->AHBRST = 0;
    BIT_SET(RCC->CTRL, RCC_CTRL_HSIEN);
    /* Reset SW, AHBPSC, APB1PSC, APB2PSC, ADCPSC and CLKOUT bits */
    BIT_CLEAR(RCC->CFG, RCC_CFG_SYSCLKSEL | RCC_CFG_AHBPSC | \
              RCC_CFG_APB1PSC | RCC_CFG_APB2PSC | \
              RCC_CFG_ADCPSC | RCC_CFG_CLKOUT);
    /* Reset HSEEN, HSECFDEN and PLLEN bits */
    BIT_CLEAR(RCC->CTRL, RCC_CTRL_HSEEN | RCC_CTRL_HSECFDEN | \
              RCC_CTRL_PLLEN);
    /* Reset HSEBYPS bit */
    BIT_CLEAR(RCC->CTRL, RCC_CTRL_HSEBYPS);

    /* Reset PLLRC, PLLHSEPSC, PLLMUL, USBPSC and PLLRANGE bits */
    BIT_CLEAR(RCC->CFG, RCC_CFG_PLLRC | RCC_CFG_PLLHSEPSC | \
              RCC_CFG_PLLMULT | RCC_CFG_USBPSC | RCC_CFG_PLLRANGE);
    /* Disable all interrupts and clear pending bits  */
    RCC->CLKINT = RCC_CLKINT_LSISTBLFC | RCC_CLKINT_LSESTBLFC | \
                  RCC_CLKINT_HSISTBLFC | RCC_CLKINT_HSESTBLFC | \
                  RCC_CLKINT_PLLSTBLFC | RCC_CLKINT_HSECFDFC;

    SET_MSP(dwStkPtr);
    pfTarget = (void (*)(void))dwJumpAddr;
    pfTarget();
}
boot跳转到app的地址是0x0800A000,
app里重定位向量表

请教大家,哪里有问题,提供个思路

使用特权

评论回复
沙发
muyichuan2012| | 2021-12-21 13:35 | 只看该作者
本帖最后由 muyichuan2012 于 2021-12-21 19:21 编辑

你好,415 BSP里  AT-START-F415\Examples\OTG_Device\VirturalMassStorage_IAP_Demo 有现成demo讲解如何跳转,可以参考一下
还有HID_IAP_Demo 也可以


使用特权

评论回复
板凳
ccxzjz|  楼主 | 2021-12-22 09:29 | 只看该作者
找到原因了,这里又设置了向量表


使用特权

评论回复
地板
084425| | 2021-12-22 23:46 | 只看该作者
跳转之前关闭中断等,另外进app之间拉低一段时间USB信号,保证PC有足够时间重新枚举

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

14

主题

37

帖子

1

粉丝