硬汉嵌入式论坛

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

[STM32H7] STM32H743iit6发生内存冲突

[复制链接]

4

主题

19

回帖

31

积分

新手上路

积分
31
发表于 2024-4-6 21:50:23 | 显示全部楼层 |阅读模式
H743iit6_002\H743iit6_002.axf: Error: L6971E: freertos.o(.data) type RW incompatible with ltdc_1.o(.ARM.__AT_0xC0000000) type ZI in er RW_RAM1.

这个显示在RAM1的空间中freertos的数据和ltdc的地址冲突,但是我不知道freertos的哪个地方用到了这个地址
也不知道是不是lvgl的地址跟这个ltdc冲突了
lv_port_disp_template.c (6.98 KB, 下载次数: 1) freertos.c (25.27 KB, 下载次数: 0) FreeRTOSConfig.h (7.48 KB, 下载次数: 0)


ltdc.c (23.41 KB, 下载次数: 0)






回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
106739
QQ
发表于 2024-4-7 07:40:16 | 显示全部楼层
把你LTDC的AT定义去掉,看map文件,不就知道另外那个地址占用0xC0000000了
回复

使用道具 举报

4

主题

19

回帖

31

积分

新手上路

积分
31
 楼主| 发表于 2024-4-7 12:12:09 | 显示全部楼层
eric2013 发表于 2024-4-7 07:40
把你LTDC的AT定义去掉,看map文件,不就知道另外那个地址占用0xC0000000了

是的我现在调整了外部SDRAM的空间之后没有编译报错,但是运行会跳转到HardFualt中断里面,以下是我使用的芯片空间然后这个是我内存分配的情况,我感觉我这个问题跟这个很像https://shequ.stmicroelectronics.cn/thread-535442-1-1.html,但是小弟看不懂他这个是怎么解决的,还请硬汉哥答疑解惑
回复

使用道具 举报

4

主题

19

回帖

31

积分

新手上路

积分
31
 楼主| 发表于 2024-4-7 12:12:39 | 显示全部楼层
eric2013 发表于 2024-4-7 07:40
把你LTDC的AT定义去掉,看map文件,不就知道另外那个地址占用0xC0000000了

是的我现在调整了外部SDRAM的空间之后没有编译报错,但是运行会跳转到HardFualt中断里面,以下是我使用的芯片空间然后这个是我内存分配的情况,我感觉我这个问题跟这个很像https://shequ.stmicroelectronics.cn/thread-535442-1-1.html,但是小弟看不懂他这个是怎么解决的,还请硬汉哥答疑解惑
回复

使用道具 举报

4

主题

19

回帖

31

积分

新手上路

积分
31
 楼主| 发表于 2024-4-7 12:13:39 | 显示全部楼层
eric2013 发表于 2024-4-7 07:40
把你LTDC的AT定义去掉,看map文件,不就知道另外那个地址占用0xC0000000了

是的我现在调整了外部SDRAM的空间之后没有编译报错,但是运行会跳转到HardFualt中断里面,以下是我使用的芯片空间 e5fa1c37400f49dfaba167776ee7bd17.png 97f8440e9b4d484eb90a9dad8853345b.jpg 然后这个是我内存分配的情况 Snipaste_2024-04-07_12-04-11.png ,我感觉我这个问题跟这个很像https://shequ.stmicroelectronics.cn/thread-535442-1-1.html,但是小弟看不懂他这个是怎么解决的,还请硬汉哥答疑解惑
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
106739
QQ
发表于 2024-4-8 07:38:05 | 显示全部楼层
iihj 发表于 2024-4-7 12:13
是的我现在调整了外部SDRAM的空间之后没有编译报错,但是运行会跳转到HardFualt中断里面,以下是我使用的 ...

你的MDK里面不应该这么勾选,你应该仅勾选128KB的0x2000 0000或者512KB的0x2400 0000地址空间即可。

你这样成了混合分配内部和外部了,这样很容易出问题。

当然,也可以通过分散加载设置各种RAM一起使用,此贴。

【原创】像使用内部SRAM一样定义使用STM32H7的外部SDRAM,含MDK和IAR两版
https://www.armbbs.cn/forum.php? ... id=98697&fromuid=58
(出处: 硬汉嵌入式论坛)
回复

使用道具 举报

4

主题

19

回帖

31

积分

新手上路

积分
31
 楼主| 发表于 2024-4-8 23:35:15 | 显示全部楼层
eric2013 发表于 2024-4-8 07:38
你的MDK里面不应该这么勾选,你应该仅勾选128KB的0x2000 0000或者512KB的0x2400 0000地址空间即可。

...

Snipaste_2024-04-08_22-43-49.png Snipaste_2024-04-08_22-44-07.png Snipaste_2024-04-08_22-44-21.png Snipaste_2024-04-08_22-46-31.png

哥我看了一下你的那个例程也修改了.act文件呀,然后现在就是编译没有问题,然后会在systeminit函数里面就跳转到handfluat这个中断里面了
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
106739
QQ
发表于 2024-4-10 08:17:51 | 显示全部楼层
iihj 发表于 2024-4-8 23:35
哥我看了一下你的那个例程也修改了.act文件呀,然后现在就是编译没有问题,然后会在systeminit函数里 ...

关键是你这个地方,你选择的什么

127.jpg


回复

使用道具 举报

4

主题

19

回帖

31

积分

新手上路

积分
31
 楼主| 发表于 2024-4-10 08:40:28 | 显示全部楼层
eric2013 发表于 2024-4-10 08:17
关键是你这个地方,你选择的什么


Snipaste_2024-04-10_08-36-13.png

我感觉应该是在程序 的systeminit初始化的时候堆栈区不知道为什么到外部sdram里面了,所以导致会跳转到Handfualt这个中断里面,硬汉哥有什么好解决方法吗? Snipaste_2024-04-10_08-40-04.png
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
106739
QQ
发表于 2024-4-10 09:48:13 | 显示全部楼层
iihj 发表于 2024-4-10 08:40
我感觉应该是在程序 的systeminit初始化的时候堆栈区不知道为什么到外部sdram里面了,所以导致会跳 ...

你当前的这个配置跟用不用自定义分散加载设置没区别了,必须指定用那个。

12345.png


回复

使用道具 举报

4

主题

19

回帖

31

积分

新手上路

积分
31
 楼主| 发表于 2024-4-10 23:46:48 | 显示全部楼层
eric2013 发表于 2024-4-10 09:48
你当前的这个配置跟用不用自定义分散加载设置没区别了,必须指定用那个。

嗯....意思是把这些个.ANY (+RW +ZI)删除到只保留一个吗?
我现在把栈区指定到了内部的sram里面了,现在可以运行起来了,但是在访问到外部sdram的时候依然会跳转到HandFualt里面,可是我检查过了一遍引脚的设置和外部sdram的设置都没有问题
但是现在依然无法访问外部sdram
Snipaste_2024-04-10_23-46-06.png
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
106739
QQ
发表于 2024-4-11 10:22:24 | 显示全部楼层
iihj 发表于 2024-4-10 23:46
嗯....意思是把这些个.ANY (+RW +ZI)删除到只保留一个吗?
我现在把栈区指定到了内部的sram里面了,现在 ...

SDRAM的话,可以参考下我这个

【原创】像使用内部SRAM一样定义使用STM32H7的外部SDRAM,含MDK和IAR两版
https://www.armbbs.cn/forum.php? ... 8697&fromuid=58
(出处: 硬汉嵌入式论坛)
回复

使用道具 举报

4

主题

19

回帖

31

积分

新手上路

积分
31
 楼主| 发表于 2024-4-12 10:57:50 | 显示全部楼层
eric2013 发表于 2024-4-11 10:22
SDRAM的话,可以参考下我这个

【原创】像使用内部SRAM一样定义使用STM32H7的外部SDRAM,含MDK和IAR两 ...

嗯,是的,我找到了一个跟我的情况相同的人的帖子https://www.armbbs.cn/forum.php?mod=viewthread&tid=121655,在下面找到了,佬的解决方法
现在,我把用到外部SDRAM的变量都定义在main.h中了,可是不知道为何,所以包含了main.h的.c文件都会和main.c发生重复定义,而且这些文件里面根本没有这些变量
Snipaste_2024-04-12_10-54-51.png Snipaste_2024-04-12_10-55-00.png Snipaste_2024-04-12_10-55-17.png Snipaste_2024-04-12_10-54-24.png
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
106739
QQ
发表于 2024-4-13 08:35:44 | 显示全部楼层
iihj 发表于 2024-4-12 10:57
嗯,是的,我找到了一个跟我的情况相同的人的帖子https://www.armbbs.cn/forum.php?mod=viewthread&tid=1 ...

这样的话,变量定义可以放在C里面,其它C和H文件里面都是extern即可。
回复

使用道具 举报

4

主题

19

回帖

31

积分

新手上路

积分
31
 楼主| 发表于 2024-4-14 14:34:05 | 显示全部楼层
Snipaste_2024-04-14_13-55-04.png Snipaste_2024-04-14_13-55-34.png Snipaste_2024-04-14_14-31-52.png Snipaste_2024-04-14_14-32-44.png Snipaste_2024-04-14_14-33-25.png

是的我现在,将外部使用到的sdram地址的变量定义在了main.c里面,但是很奇怪,我在使用正点的malloc的函数时发现,这个外部sdram还是没有成功初始化,明明我在使用之前已经进行了初始化的函数
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
106739
QQ
发表于 2024-4-15 09:44:13 | 显示全部楼层
iihj 发表于 2024-4-14 14:34
是的我现在,将外部使用到的sdram地址的变量定义在了main.c里面,但是很奇怪,我在使用正点的malloc的 ...

剩下这些问题都比较好弄了,可以自己再摸索下。
回复

使用道具 举报

4

主题

19

回帖

31

积分

新手上路

积分
31
 楼主| 发表于 2024-4-15 21:39:16 | 显示全部楼层
eric2013 发表于 2024-4-15 09:44
剩下这些问题都比较好弄了,可以自己再摸索下。

佬为什么我这个程序在初始化lvgl的时候会卡在这个地方,无法访问这个lv_conf设置的地址?
回复

使用道具 举报

4

主题

19

回帖

31

积分

新手上路

积分
31
 楼主| 发表于 2024-4-16 11:09:55 | 显示全部楼层
eric2013 发表于 2024-4-15 09:44
剩下这些问题都比较好弄了,可以自己再摸索下。

Snipaste_2024-04-15_21-37-09.png Snipaste_2024-04-15_21-37-56.png 佬为什么我这个程序在初始化lvgl的时候会卡在这个地方,无法访问这个lv_conf设置的地址?
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-5-3 11:53 , Processed in 0.388894 second(s), 29 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2023, Tencent Cloud.

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