styleno1 发表于 2018-9-18 21:51:54

STM32F746跑freeRTOS设的断点表现不正常,时间不对。

现象是,明明os延时1秒,结果马上到断点,而且相应代码没有动作。
我最初以为是Cache作怪,关闭了也还有问题。
再试了下是不是STM32Cube问题,结果跑L452没问题。{:sweat:}
(PS:全速跑功能正常)

styleno1 发表于 2018-10-13 14:51:39

更新:将ST-Link烧J-Link模式,异常没有了。

hpdell 发表于 2018-9-18 22:09:00

是不是系统时钟频率没有配置对啊 ???????

styleno1 发表于 2018-9-18 22:10:59

hpdell 发表于 2018-9-18 22:09
是不是系统时钟频率没有配置对啊 ???????

应该不是,我设的216MHz。关闭断点,全速仿真或重启运行,现象是正常的。

hpdell 发表于 2018-9-18 22:13:48

styleno1 发表于 2018-9-18 22:10
应该不是,我设的216MHz。关闭断点,全速仿真或重启运行,现象是正常的。 ...

你把 配置后的时钟频率读出来看看是否是 216MHz ?

另外你有没有使用 stm32f7xx 系列单片机的 dwt 作为延时功能使用啊 ?

styleno1 发表于 2018-9-18 22:14:09

也没有产生异常,好像只是错误地触发了断点,断点处代码实际没有运行。(没有试过狂按F5,看什么时候真运行了)

hpdell 发表于 2018-9-18 22:17:01

styleno1 发表于 2018-9-18 22:14
也没有产生异常,好像只是错误地触发了断点,断点处代码实际没有运行。(没有试过狂按F5,看什么时候真运行 ...

printf("stm32F7xx HAL_RCC_GetHCLKFreq = %d MHz\r\n", HAL_RCC_GetHCLKFreq());
printf("stm32F7xx HAL_RCC_GetPCLK1Freq = %d MHz\r\n", HAL_RCC_GetPCLK1Freq());
printf("stm32F7xx HAL_RCC_GetPCLK2Freq = %d MHz\r\n\r\n", HAL_RCC_GetPCLK2Freq());


上述是 打印 系统时钟频率的,你试试看是否正确,如果正确再找其他原因

styleno1 发表于 2018-9-18 23:17:35

hpdell 发表于 2018-9-18 22:13
你把 配置后的时钟频率读出来看看是否是 216MHz ?

另外你有没有使用 stm32f7xx 系列单片机的 dwt ...

之前没有用DWT。不过你提到printf,我用的Event Recorder,会用到DWT。

styleno1 发表于 2018-9-18 23:19:10

本帖最后由 styleno1 于 2018-9-18 23:20 编辑

全速会有输出,正常,开断点有问题,没输出。(另外,试了不带OS的例程,没这个毛病)
希望有人用Cube建个工程也测下。{:handshake:}

hpdell 发表于 2018-9-18 23:58:29

styleno1 发表于 2018-9-18 23:19
全速会有输出,正常,开断点有问题,没输出。(另外,试了不带OS的例程,没这个毛病)
希望有人用Cube建个 ...

我使用 stm32f77的单片机,使用的也是 FreeRTOS 系统,打断点貌似都很好,没有你所说的情况发生啊

styleno1 发表于 2018-9-19 21:11:39

更新,换同事电脑试了跑例程,一样的现象,莫不是ST-Link带坑。

caixiuwen 发表于 2018-9-21 09:57:19

这个是Cortex M7 r0p0 r0p1的坑,www.keil.com/support/docs/3778.htm

caixiuwen 发表于 2018-9-18 21:51:55

hpdell 发表于 2018-9-18 23:58
我使用 stm32f77的单片机,使用的也是 FreeRTOS 系统,打断点貌似都很好,没有你所说的情况发生啊 ...



F77x是高版本的M7,断点没问题。

styleno1 发表于 2018-9-24 22:49:44

caixiuwen 发表于 2018-9-21 09:57
这个是Cortex M7 r0p0 r0p1的坑,www.keil.com/support/docs/3778.htm

看了这篇,写的是“ARM: single stepping Cortex-M7 enters pending exception handler”
按详细描述,跟我这的现象不太一样,它指的是单步会进中断响应。

caixiuwen 发表于 2018-9-25 22:00:05

styleno1 发表于 2018-9-24 22:49
看了这篇,写的是“ARM: single stepping Cortex-M7 enters pending exception handler”
按详细描述,跟 ...

确实不一样,不过应该都是调试的bug。网上也找不到详细的解释了。

caixiuwen 发表于 2018-10-13 15:18:55

styleno1 发表于 2018-10-13 14:51
更新:将ST-Link烧J-Link模式,异常没有了。

Segger有个workaround。https://forum.segger.com/index.php/Thread/2819-SOLVED-Interrupts-while-performing-single-step-CORTEX-M7/ 这个贴最下面提到了。

saccapanna 发表于 2018-10-13 15:35:49

是不是编译开了优化,导致代码段共享了?不开优化试试。一般来说,要短点debug,一般不开优化。

风过不留痕z 发表于 2023-5-4 15:15:50

styleno1 发表于 2018-9-24 22:49
看了这篇,写的是“ARM: single stepping Cortex-M7 enters pending exception handler”
按详细描述,跟 ...
(引用自13楼)

请教下,现在的m7 stm32f746还有这个问题吗?

qwe2231695 发表于 2023-5-4 19:34:08

如果不是上文提到的M7版本Bug,那就是STlink 没有下载最新代码进去。
页: [1]
查看完整版本: STM32F746跑freeRTOS设的断点表现不正常,时间不对。