lub 发表于 2024-4-12 20:07:11

STM32H723 USB只有优化为-O0才工作

平台和应用:STM32H723 USB、VCP虚拟串口
代码生成和编译器:使用cubeMX生成makefile,使用gcc编译
细节:只有makefile改优化选项-O0   USB才工作,默认的-Og以及-O3 2 1都不能成功识别USB COM口



-Og 优化时,编译,运行都没报错,就是设备管理器没有显示 串行设备(COMx)。程序运行过程中,设备管理器会重新刷新(但是没有任何新设备出现)没有黄色感叹号,没有“未知USB设备”单纯就是没有显示。

只有-O0编译之后一切正常。

还有-Og优化时,程序初始化过程在USB中断打断点然后手动一直下一步。会出现COM口,但是还带有黄色感叹号。

请问有什么调试思路吗?

eric2013 发表于 2024-4-13 08:51:58

可以通过局部优化锁定问题,不过我这里的GCC是用的Embedded Studio做的。

实战技能分享,如何让工程代码各种优化等级通吃,含MDK AC5,AC6,IAR和GCC
https://www.armbbs.cn/forum.php?mod=viewthread&tid=109749

lub 发表于 2024-4-13 10:26:18

eric2013 发表于 2024-4-13 08:51
可以通过局部优化锁定问题,不过我这里的GCC是用的Embedded Studio做的。

实战技能分享,如何让工程代码 ...

十分感谢,我尝试一下,有结果回贴

lub 发表于 2024-4-15 10:07:06

感谢提供的思路,定位到这段代码:
#pragma GCC push_options
#pragma GCC optimize ("O0")
static void Get_SerialNum(void)
{
uint32_t deviceserial0;
uint32_t deviceserial1;
uint32_t deviceserial2;

deviceserial0 += deviceserial2;

if (deviceserial0 != 0)
{
    IntToUnicode(deviceserial0, &USBD_StringSerial, 8);
    IntToUnicode(deviceserial1, &USBD_StringSerial, 4);
}
}
#pragma GCC pop_options
这个函数不优化就可以了。
开发人员应该是想利用未初始化的变量来生成随机序列号?
然后这种操作会被编译器优化掉就生成不了了。我查到st官方论坛有人建议将这个函数变为用户自定义函数就可以方便使用用户指定的UID作为序列号
在这里:https://community.st.com/t5/stm32cubemx-mcus/cubemx-feature-request-add-user-code-section-to-the-get/td-p/376504
https://community.st.com/t5/stm32-mcus-embedded-software/cube-mx-usbd-dec-c-unique-serial-number/td-p/618338

morning_enr6U 发表于 2024-4-15 22:42:20

{:34:}{:8:}

lub 发表于 2024-4-17 12:07:12

现在windows识别没有问题,通信也没有问题。变成了mac和ubuntu不识别,插进去一点反应都没有。开发板却没问题,我看原理图没有区别,因为用的typec,cc1,cc2 5k1接地,因为h7内置阻抗匹配 我的板和开发板都没有22R(焊上过也不行)或者33R直接连到typec但是就是同样的代码开发板可以我的板不行(linux系统不识别):(

lub 发表于 2024-4-17 13:54:31

lub 发表于 2024-4-17 12:07
现在windows识别没有问题,通信也没有问题。变成了mac和ubuntu不识别,插进去一点反应都没有。开发板却没问 ...

解决了,示波器检查发现DM引脚没有正确下拉,仔细看发现DM引脚跟旁边引脚短接了导致有弱上拉。应该是windows的检测没那么严格,导致除了windows系统(MAC和Linux)都不识别,比较具有迷惑性

eric2013 发表于 2024-4-18 08:46:05

lub 发表于 2024-4-17 13:54
解决了,示波器检查发现DM引脚没有正确下拉,仔细看发现DM引脚跟旁边引脚短接了导致有弱上拉。应该是wind ...

谢谢告知最终问题原因。

fswyt 发表于 2024-4-18 09:01:23

{:8:}
页: [1]
查看完整版本: STM32H723 USB只有优化为-O0才工作