硬汉嵌入式论坛

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

[RL-RTX] RTX5中添加EventRecorder组件重定向printf无输出,裸机中有输出

  [复制链接]

1

主题

7

回帖

10

积分

新手上路

积分
10
发表于 2024-7-13 16:25:58 | 显示全部楼层 |阅读模式

RTX

RTX


芯片是STM32H7b0,调试器daplink,各组件版本均为最新,Eventrocorder的分散加载和No Init都做了,且裸机和RTX中保持一致,以下是我的工程,文件夹中共两个工程,还望大佬解惑。

QQ截图20240713161350.png

STM32_H7b0.7z

956.18 KB, 下载次数: 5

回复

使用道具 举报

22

主题

319

回帖

385

积分

高级会员

积分
385
发表于 2024-7-13 16:57:42 | 显示全部楼层
用的少,是不是第一个程序里面printf 没有 \n 导致数据还在输出缓冲区中没有输出
回复

使用道具 举报

1

主题

7

回帖

10

积分

新手上路

积分
10
 楼主| 发表于 2024-7-13 17:09:29 | 显示全部楼层
tovinz 发表于 2024-7-13 16:57
用的少,是不是第一个程序里面printf 没有 \n 导致数据还在输出缓冲区中没有输出

试了一下,并不是这个问题
回复

使用道具 举报

1万

主题

7万

回帖

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
115434
QQ
发表于 2024-7-14 09:41:39 | 显示全部楼层
把TCM RAM地址0x2000 0000分配给EVR使用试试。这个没有Cache问题。
回复

使用道具 举报

1

主题

7

回帖

10

积分

新手上路

积分
10
 楼主| 发表于 2024-7-14 10:47:54 | 显示全部楼层
eric2013 发表于 2024-7-14 09:41
把TCM RAM地址0x2000 0000分配给EVR使用试试。这个没有Cache问题。

我将EVR的.c文件和debug printf的重定向加载到了TCM RAM中,默认RAM使用AXI RAM,EVR的功能都是正常的system analyzer中也可以看到任务调度,全速运行也无问题,唯独printf没有输出,很奇怪
QQ截图20240714104215.png
QQ截图20240714104154.png
QQ截图20240714104124.png
回复

使用道具 举报

1万

主题

7万

回帖

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
115434
QQ
发表于 2024-7-15 08:18:39 | 显示全部楼层
SimonFishhh 发表于 2024-7-14 10:47
我将EVR的.c文件和debug printf的重定向加载到了TCM RAM中,默认RAM使用AXI RAM,EVR的功能都是正常的sys ...

那没问题了,该设置的都设置,另外这个界面展示正常不




回复

使用道具 举报

1

主题

7

回帖

10

积分

新手上路

积分
10
 楼主| 发表于 2024-7-16 19:25:18 | 显示全部楼层
eric2013 发表于 2024-7-15 08:18
那没问题了,该设置的都设置,另外这个界面展示正常不

也是正常的,就是printf无输出
回复

使用道具 举报

1万

主题

7万

回帖

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
115434
QQ
发表于 2024-7-17 09:34:56 | 显示全部楼层
SimonFishhh 发表于 2024-7-16 19:25
也是正常的,就是printf无输出

那确实有点诡异了,最后一个地方,当前MDK版本多少,是MDK5.3X吧
回复

使用道具 举报

1

主题

7

回帖

10

积分

新手上路

积分
10
 楼主| 发表于 2024-7-18 11:15:34 | 显示全部楼层
eric2013 发表于 2024-7-17 09:34
那确实有点诡异了,最后一个地方,当前MDK版本多少,是MDK5.3X吧

是最新的5.40
回复

使用道具 举报

6

主题

50

回帖

68

积分

初级会员

积分
68
发表于 2024-8-1 22:21:22 | 显示全部楼层
本人曾经也遇到同样问题。后来看到MDK例子,都是在分散加载中,是按下面方式写的,抄了一下,居然正常了。
  RW_DTCM 0x20000000 0x0001F800  {
   .ANY (+RW +ZI)                      ; RW data
   * (HEAP)                            ; Heap
   * (STACK)                           ; Stack
  }
  RW_DTCM_NOINIT 0x2001F800 UNINIT 0x00000800  {
    *(.bss.noinit)
  }
回复

使用道具 举报

2

主题

13

回帖

19

积分

新手上路

积分
19
发表于 2024-8-5 19:22:16 | 显示全部楼层
eric2013 发表于 2024-7-17 09:34
那确实有点诡异了,最后一个地方,当前MDK版本多少,是MDK5.3X吧

大佬,借楼问一下。之前是用RTX5有串口就串口输出了。这次串口没法用,就想到了EVR的重定向 print了,遇到了一点问题。
我按照论坛的,找了找一些问题,比如自己串口.c的要注释掉等等。关于要分散加载文件的改动,之前用EVR的时候已经有了。 现在是疯狂报错 cannot access memory。版本5.38,M0,system analyzer,ES,ER那些一切正常
回复

使用道具 举报

1万

主题

7万

回帖

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
115434
QQ
发表于 2024-8-6 08:34:24 | 显示全部楼层
Douby_Sama 发表于 2024-8-5 19:22
大佬,借楼问一下。之前是用RTX5有串口就串口输出了。这次串口没法用,就想到了EVR的重定向 print了,遇 ...

M0内核使用EVR,不制作DWT时钟周期计数器,这点要注意下,只能用滴答定时器这种了。
回复

使用道具 举报

2

主题

13

回帖

19

积分

新手上路

积分
19
发表于 2024-8-6 10:53:43 | 显示全部楼层
eric2013 发表于 2024-8-6 08:34
M0内核使用EVR,不制作DWT时钟周期计数器,这点要注意下,只能用滴答定时器这种了。

用的CMSIS-RTOS2 system timer。就,奥,我想到了,我print在内核初始化之前了,,就想PP看看的。我的,等等试一下,应该那个 cannot access 是这个原因
回复

使用道具 举报

2

主题

13

回帖

19

积分

新手上路

积分
19
发表于 2024-8-6 16:06:34 | 显示全部楼层
Douby_Sama 发表于 2024-8-6 10:53
用的CMSIS-RTOS2 system timer。就,奥,我想到了,我print在内核初始化之前了,,就想PP看看的。我的 ...

也不是,调整到thread中print,报错的地址看MAP是,EventFilter,EventStatus。can not access,有谁也遇到相同问题,求助一下
回复

使用道具 举报

1万

主题

7万

回帖

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
115434
QQ
发表于 2024-8-7 09:37:29 | 显示全部楼层
Douby_Sama 发表于 2024-8-6 16:06
也不是,调整到thread中print,报错的地址看MAP是,EventFilter,EventStatus。can not access,有谁也遇 ...

这种情况没遇到过了。
回复

使用道具 举报

2

主题

13

回帖

19

积分

新手上路

积分
19
发表于 2024-8-8 13:58:48 | 显示全部楼层
eric2013 发表于 2024-8-7 09:37
这种情况没遇到过了。

听了同事的,更新了CMSIS,5.+更新到6.1.然后折腾了半天,看提示文件里面IP改IPR,SVCCALL改SVC等等,compiler的EVR换成github的cmsis-view等等。终于到0错0警告了,发现回到了原点。不开EVR的print一切正常,打钩了,就开始can not access了。我再试试
回复

使用道具 举报

2

主题

13

回帖

19

积分

新手上路

积分
19
发表于 2024-8-8 18:32:35 | 显示全部楼层
eric2013 发表于 2024-8-7 09:37
这种情况没遇到过了。

好吧,大佬打扰了。平平无奇,没有在意到的炸RAM了。这M0就8K。因为之前OS那些炸都有提示,所以没在意。去研究分散加载的时候才发现,自己蠢了。在M3上试了试,没问题
回复

使用道具 举报

1万

主题

7万

回帖

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
115434
QQ
发表于 2024-8-9 10:16:14 | 显示全部楼层
Douby_Sama 发表于 2024-8-8 18:32
好吧,大佬打扰了。平平无奇,没有在意到的炸RAM了。这M0就8K。因为之前OS那些炸都有提示,所以没在意 ...

还别说,RAM超了,这个问题防不胜防。确实不容易察觉到。
回复

使用道具 举报

1

主题

7

回帖

10

积分

新手上路

积分
10
 楼主| 发表于 2024-8-23 18:10:55 | 显示全部楼层
njsssmq 发表于 2024-8-1 22:21
本人曾经也遇到同样问题。后来看到MDK例子,都是在分散加载中,是按下面方式写的,抄了一下,居然正常了。
...

就是说只用这一块DTCM,分成两部分,把EVR的文件分散加载到未初始化的那部分RAM,是这个意思吗
回复

使用道具 举报

1万

主题

7万

回帖

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
115434
QQ
发表于 2024-8-24 09:47:37 | 显示全部楼层
SimonFishhh 发表于 2024-8-23 18:10
就是说只用这一块DTCM,分成两部分,把EVR的文件分散加载到未初始化的那部分RAM,是这个意思吗

可以的。
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-4-25 20:34 , Processed in 0.574307 second(s), 28 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2023, Tencent Cloud.

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