硬汉嵌入式论坛

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

[MDK] MDK5.39使用CMSIS-View和CMSIS-Compiler实现stdout重定向故障

[复制链接]

3

主题

62

回帖

71

积分

初级会员

积分
71
发表于 2024-4-18 23:06:15 | 显示全部楼层 |阅读模式
问题描述:最近看更新了新版MDK和一些新的组件,想试一试什么效果,用一些老工程直接切换,发现Event Recorder无法工作,因此直接使用MDK5.39创建全新工程,全部组件都用新的;发现虽然Event Recorder工作了,但程序却死机了。


1.使用新的组件(CMSIS-Compiler和CMSIS-View两个一起替代了ARM-Compiler)

使用最新的组件

使用最新的组件


2.配置运行环境,stdout使用Event Recorder

配置运行环境

配置运行环境


3.Event Recorder使用DWT为时钟

使用DWT为时钟

使用DWT为时钟


4.任务中增加打印,仿真发现printf后死机了,定位发现是EventRecorderTimerGetCount函数里出问题了,里面只是获取了一下DWT计数器

仿真打印异常死机

仿真打印异常死机


5.更改Event Recorder为RTOS时钟,重新仿真,故障消除

更改时钟故障消除

更改时钟故障消除


这样就很迷了,尝试了手动初始化DWT无效果,不知道咋回事,网友们帮忙看看 Blinky.zip (479.67 KB, 下载次数: 1)

回复

使用道具 举报

3

主题

62

回帖

71

积分

初级会员

积分
71
 楼主| 发表于 2024-4-18 23:16:19 | 显示全部楼层
安装5.39版本之前,看到很多网友说这个版本build跟rebuild一样。
我用新版打开老工程也是这个问题,但是编译这个完全用新版创建的工程后发现,修改单个文件后build只编译了这一个文件。
因此这个可能是向前兼容的问题
仅修改mian.c后编译.png
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
106875
QQ
发表于 2024-4-19 08:38:13 | 显示全部楼层
通过楼主的描述,这样的话就是DWT时钟周期计数器在MDK5.39的AC6.21下无法正常运行。回头我试试。
回复

使用道具 举报

3

主题

62

回帖

71

积分

初级会员

积分
71
 楼主| 发表于 2024-4-19 22:10:22 | 显示全部楼层
今晚用旧的组件创建工程,一点点往上加,最终发现是一个地方改变了默认值,导致程序运行死机,差别如下:
问题.png
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
106875
QQ
发表于 2024-4-20 08:39:02 | 显示全部楼层
ruboss 发表于 2024-4-19 22:10
今晚用旧的组件创建工程,一点点往上加,最终发现是一个地方改变了默认值,导致程序运行死机,差别如下:

谢谢告知最终原因。

非特权级模式不能访问内核寄存器,含DWT
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-5-8 11:18 , Processed in 0.174309 second(s), 29 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2023, Tencent Cloud.

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