打印

针对stm32f407zet6,keil下面的编译结果是否会导致问题?

[复制链接]
440|7
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
keer_zu|  楼主 | 2022-7-11 11:11 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 keer_zu 于 2022-7-11 11:19 编辑

针对stm32f407zet6,keil下面的编译结果是否会导致问题?



这里zi-data是否太大?之前我自己的也就10K-20K。

现在这份代码已经出了很多莫名奇妙的问题,比如:
  • 在一个全局结构体变量里面加上一个成员,导致其他两外一个成员初现很奇怪的值,这个值在代码里面不可能被设置。声明成volatile成员变量又正常了。
  • 在一个任务修改的全局变量,在另一个任务里得不到期望的值(系统使用freertos)
  • 在一个函数里面添加局部数组(200个字节),导致程序根本没有办法安装原有意图执行(只改了这一个地方)


stm32f407zet6的存储空间如下:
Memories
   – Up to 1 Mbyte of Flash memory
   – Up to 192+4 Kbytes of SRAM including 64-
      Kbyte of CCM (core coupled memory) data
      RAM
   – Flexible static memory controller
      supporting Compact Flash, SRAM,
      PSRAM, NOR and NAND memories


使用特权

评论回复

相关帖子

沙发
keer_zu|  楼主 | 2022-7-11 11:22 | 只看该作者
目前看ZI-data确实不小,但是RAM也有194K,不知道这个结果和mcu的存储资源是否存在匹配的问题。

使用特权

评论回复
板凳
keer_zu|  楼主 | 2022-7-11 16:22 | 只看该作者
还有CCM这部分怎么使用?
在keil的 target中怎么设置?

使用特权

评论回复
地板
icecut| | 2022-7-11 16:31 | 只看该作者
看起来你的程序比较大.
问题表象看来,内存空闲的时候功能少的时候, 问题的确不容易暴露.
你也要考虑栈空间多次callback之后还有没有那么多字节.

你可以用调试器进行内存访问断点来查看异常访问. 但是栈空间比较难跟踪.全局变量可以

使用特权

评论回复
5
keer_zu|  楼主 | 2022-7-11 16:52 | 只看该作者
icecut 发表于 2022-7-11 16:31
看起来你的程序比较大.
问题表象看来,内存空闲的时候功能少的时候, 问题的确不容易暴露.
你也要考虑栈空 ...

别人的程序,写得极差,有不能不救。这个内存访问断点确实不错,我试一试好不好用。

使用特权

评论回复
6
icecut| | 2022-7-11 17:58 | 只看该作者
keer_zu 发表于 2022-7-11 16:52
别人的程序,写得极差,有不能不救。这个内存访问断点确实不错,我试一试好不好用。
...

其实bug一直都在, 你让bug暴露出来了,所以你救火却伤了自己

使用特权

评论回复
7
keer_zu|  楼主 | 2022-7-12 08:24 | 只看该作者
icecut 发表于 2022-7-11 17:58
其实bug一直都在, 你让bug暴露出来了,所以你救火却伤了自己

可不是嘛,和mcu打交道有时候更麻烦。不如全部都加载到内存来得直接。

使用特权

评论回复
8
keer_zu|  楼主 | 2022-7-12 11:14 | 只看该作者
icecut 发表于 2022-7-11 17:58
其实bug一直都在, 你让bug暴露出来了,所以你救火却伤了自己

问题貌似解决了:


把IRAM2勾掉。不用CCM,一下子就清爽了。

使用特权

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

本版积分规则

个人签名:qq群:49734243 Email:zukeqiang@gmail.com

1349

主题

12426

帖子

53

粉丝