打印
[其他ST产品]

基于STM32的程序换个IDE就不运行了?

[复制链接]
661|18
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
laocuo1142|  楼主 | 2023-7-26 09:07 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 laocuo1142 于 2023-7-26 09:09 编辑

有人使用STM32H743芯片做应用开发,遇到个比较奇怪的事情。事情是这样的,他使用ST公司的图形化配置工具STM32CubeMx进行基本配置后,如果基于ARM MDK IDE创建工程并组织代码,编译除错后运行一切正常。但如果他基于IAR IDE创建工程并使用相同的用户代码时,发现程序没法正常运行,同时还没有任何报错。颇为奇怪。
经进一步了解。他的代码要实现的一个主要功能就是ADC,并利用通用DMA将ADC结果搬运到内存。现在最明显的问题就是,当把IDE从MDK切换到IAR后,ADC的结果没有被搬运到内存。借助调试可以确认,ADC外设确实启动了、DMA配置也没有问题,那到底怎么回事呢?两个环境下的外设配置及用户应用代码是完全一样的。
借助调试,在调试过程中无意发现了一点点差异。那就是两个IDE分别为存放ADC结果的内存安排的地址不一样。下面两幅截图来自ARM MDK和IAR环境下存放ADC结果的内存地址。
不难看到,在MDK环境下,内存地址安排在0x2400008c开始的地方,而在IAR环境下内存地址被安排在0x20000084开始的地方。难道问题就出在这个地方?
------正是!
我们先查看STMH7参考手册,看看上面2个地址位于哪些内存区。
也就是说,IAR默认将存放ADC结果的内存安排在DTCM区,而MDK将其安排在AXI SRAM区。我们可以查看手册得知,H7系列的通用DMA1或DMA2是没法访问DTCM的。DTCM只能被内核或MDMA访问。

上图中的短横杠表示不可访问。原来是这样,难怪编译过程中没有任何报错提示,只是所选DMA硬件上不支持对DTCM的访问而已。
既然知道了原因,问题就好解决了。我们可以在IAR环境里直接给定存储地址,能让DMA访问到就行。或者在IAR调试环境下修改内存使用的默认地址于AXI SRAM区【参考下面截图示意操作】。


如有侵权请联系删除

使用特权

评论回复
沙发
香水城| | 2023-7-26 10:07 | 只看该作者
既然是转载,告知转载地址无妨,也是应该的。程序换个IDE就不运行了?

使用特权

评论回复
板凳
在曼谷的春| | 2023-8-14 21:08 | 只看该作者
换个IDE就不行了?那不可能的,IDE就是个编译链而已

使用特权

评论回复
地板
Undshing| | 2023-8-14 22:54 | 只看该作者
换个ide就不行了?这不应该啊

使用特权

评论回复
5
月亮一键变蓝| | 2023-8-14 23:11 | 只看该作者
你是不是IDE的配置又不一样的地方啊?

使用特权

评论回复
6
将爱藏于深海| | 2023-8-15 01:24 | 只看该作者
看来还是cubemx对两家的IDE的支持力度不一样哦

使用特权

评论回复
7
捧一束彼岸花| | 2023-8-15 03:42 | 只看该作者
这种问题还没遇到过,感觉cubemx虽然便利,但是出问题的话不好找

使用特权

评论回复
8
未说出口的像你| | 2023-8-15 05:06 | 只看该作者
之前就遇到过cubemx配置生成的功能,因为初始化的顺序导致程序不好用

使用特权

评论回复
9
我吃小朋友| | 2023-8-15 07:02 | 只看该作者
为啥你这个用keil还能编译出错?是哪里配置不对吗?

使用特权

评论回复
10
一只眠羊| | 2023-8-15 07:13 | 只看该作者
还是能用库函数,就用库函数吧,太便捷的东西,也不一定是好事儿

使用特权

评论回复
11
失物招領| | 2023-8-15 09:33 | 只看该作者
你可以给IAR的配置也检查一下,也许就是IDE的不一样导致

使用特权

评论回复
12
春日负喧| | 2023-8-15 11:45 | 只看该作者
这是因为DMA的差异吗?

使用特权

评论回复
13
温室雏菊| | 2023-8-15 13:42 | 只看该作者
这个环境存放地址是全局变量还是局部变量?是不是因为优化等级的事儿呢?

使用特权

评论回复
14
Henryko| | 2023-8-19 23:42 | 只看该作者
不同ide配置也不太一样吧

使用特权

评论回复
15
Bowclad| | 2023-8-21 22:56 | 只看该作者
cubeMX直接生成的应该会同时支持两家啊

使用特权

评论回复
16
spark周| | 2023-8-22 21:58 | 只看该作者
开始的地方不一致

使用特权

评论回复
17
MessageRing| | 2023-8-23 20:50 | 只看该作者
两款软件的编译器不同吧

使用特权

评论回复
18
Mowergy| | 2023-10-20 09:27 | 只看该作者
检查一下IAR的配置

使用特权

评论回复
19
Bowclad| | 2023-10-20 12:54 | 只看该作者
用的编译器不同吧

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

1047

主题

4329

帖子

11

粉丝