硬汉嵌入式论坛

 找回密码
 立即注册
查看: 3588|回复: 14
收起左侧

[RL-RTX] 问下RTX5做us级延时(阻塞)有好用的方法吗?

[复制链接]

15

主题

117

回帖

162

积分

初级会员

积分
162
发表于 2020-10-13 10:06:47 | 显示全部楼层 |阅读模式
现在用 数据观察点与跟踪(DWT)模块 做us级延时,但用EventRecorder测量延时不对,100us延时,测量只有20us,想问下有什么比较好用的方法做us级延时吗?


回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
106660
QQ
发表于 2020-10-13 10:30:48 | 显示全部楼层
100us延时,测量只有20us,这个锅DWT不被,因为EventRecoder 默认也是用那个的DWT,而你测试不准,大概率是你没有正常设置MDK Option的Core时钟与芯片主频匹配导致的。
回复

使用道具 举报

15

主题

117

回帖

162

积分

初级会员

积分
162
 楼主| 发表于 2020-10-13 10:51:56 | 显示全部楼层
我用示波器看了,100usdelay是准确的,但EventRecoder测量不对,core时钟设置的是对的,EventRecoder用了好久了,估计和bootloader有关,程序是bootloader后再运行app的,boot和app都用的rtx
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
106660
QQ
发表于 2020-10-13 16:07:17 | 显示全部楼层
lhaoyue 发表于 2020-10-13 10:51
我用示波器看了,100usdelay是准确的,但EventRecoder测量不对,core时钟设置的是对的,EventRecoder用了好 ...

他测量的时候有个最大值,最小值,平均值之类的,过一会后,看平均值比准。
回复

使用道具 举报

15

主题

117

回帖

162

积分

初级会员

积分
162
 楼主| 发表于 2020-10-15 09:20:20 | 显示全部楼层
eric2013 发表于 2020-10-13 16:07
他测量的时候有个最大值,最小值,平均值之类的,过一会后,看平均值比准。

找到问题了,是因为开了LTO优化,导致EventRecorder所在的内存区被init了,所以数据不对。取消LTO就可以了,但编译后的代码也变大了,不懂分散文件加载,暂时不知道怎么在LTO优化下保证加载正确。MDK 5.30
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
106660
QQ
发表于 2020-10-15 10:29:15 | 显示全部楼层
lhaoyue 发表于 2020-10-15 09:20
找到问题了,是因为开了LTO优化,导致EventRecorder所在的内存区被init了,所以数据不对。取消LTO就可以 ...

帮你测试了,确实是我前面说的,开启LTO后,过一会看平均值是正常的。
QQ截图20201015102852.png
回复

使用道具 举报

15

主题

117

回帖

162

积分

初级会员

积分
162
 楼主| 发表于 2020-10-15 10:56:55 | 显示全部楼层
eric2013 发表于 2020-10-15 10:29
帮你测试了,确实是我前面说的,开启LTO后,过一会看平均值是正常的。

还费心硬汉测试,多谢硬汉!
想问下硬汉,你这边开启LTO后会报下面这个警告吗?
.\APP\APP.sct(16): warning: L6314W: No section matches pattern EventRecorder.o(ZI).
我这编译会报这个警告,进入debug也会提示这个警告。
然后EventRecorder就不正常,有时候时间测试正常,有时候不正常,rtx监控也是显示不显示的。
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
106660
QQ
发表于 2020-10-16 10:25:47 | 显示全部楼层
lhaoyue 发表于 2020-10-15 10:56
还费心硬汉测试,多谢硬汉!
想问下硬汉,你这边开启LTO后会报下面这个警告吗?
.\APP\APP.sct(16): wa ...

没问题啊,你是不是做分散加载设置了
QQ截图20201016102543.png
回复

使用道具 举报

15

主题

117

回帖

162

积分

初级会员

积分
162
 楼主| 发表于 2020-10-16 15:22:03 | 显示全部楼层
eric2013 发表于 2020-10-16 10:25
没问题啊,你是不是做分散加载设置了

硬汉,你的Target这个页面是怎么配置的
回复

使用道具 举报

15

主题

117

回帖

162

积分

初级会员

积分
162
 楼主| 发表于 2020-10-16 15:33:14 | 显示全部楼层

我参考官方给EventRecorder单独开了一块ram,指定了EventRecorder.c在ram2中。
1602833457(1).png
回复

使用道具 举报

0

主题

29

回帖

29

积分

新手上路

积分
29
发表于 2020-10-16 18:21:34 | 显示全部楼层
lhaoyue 发表于 2020-10-16 15:33
我参考官方给EventRecorder单独开了一块ram,指定了EventRecorder.c在ram2中。

因为你开启了 LTO 导致的, 你可以把 SCT文件修改一下, 把 原先 的    EventRecorder.o (+ZI)  改为 *.o(.bss.noinit) 试试   
回复

使用道具 举报

0

主题

29

回帖

29

积分

新手上路

积分
29
发表于 2020-10-16 18:24:17 | 显示全部楼层
或者如下
  RW_IRAM3 0x24070000 UNINIT 0x00010000  {
   EventRecorder.o (+ZI)
   *.o(.bss.noinit)
  }
这样不管是否开启 LTO, 都能让 EventRecorder 正常, 但是告警始终存在, 可以不管
回复

使用道具 举报

15

主题

117

回帖

162

积分

初级会员

积分
162
 楼主| 发表于 2020-10-19 09:54:06 | 显示全部楼层
佛云猪 发表于 2020-10-16 18:24
或者如下
  RW_IRAM3 0x24070000 UNINIT 0x00010000  {
   EventRecorder.o (+ZI)

太感谢您了,这样修改确实可以,虽然编译会有警告,但调试没有警告,而且所有功能都正常,us级延时也能测量准确了,谢谢!
回复

使用道具 举报

15

主题

117

回帖

162

积分

初级会员

积分
162
 楼主| 发表于 2020-10-19 09:56:56 | 显示全部楼层
佛云猪 发表于 2020-10-16 18:21
因为你开启了 LTO 导致的, 你可以把 SCT文件修改一下, 把 原先 的    EventRecorder.o (+ZI)  改为 *.o(. ...

按照这样修改,编译也不会有警告,调试功能也正常,谢谢!
回复

使用道具 举报

15

主题

117

回帖

162

积分

初级会员

积分
162
 楼主| 发表于 2020-10-19 09:58:15 | 显示全部楼层
佛云猪 发表于 2020-10-16 18:24
或者如下
  RW_IRAM3 0x24070000 UNINIT 0x00010000  {
   EventRecorder.o (+ZI)

这些相关的知识是分散文件加载吗?我得学习学习
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|小黑屋|Archiver|手机版|硬汉嵌入式论坛

GMT+8, 2024-4-28 04:25 , Processed in 0.205705 second(s), 28 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2023, Tencent Cloud.

快速回复 返回顶部 返回列表