iihj 发表于 2024-4-6 21:50:23

STM32H743iit6发生内存冲突

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冲突了










eric2013 发表于 2024-4-7 07:40:16

把你LTDC的AT定义去掉,看map文件,不就知道另外那个地址占用0xC0000000了

iihj 发表于 2024-4-7 12:12:09

eric2013 发表于 2024-4-7 07:40
把你LTDC的AT定义去掉,看map文件,不就知道另外那个地址占用0xC0000000了

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

iihj 发表于 2024-4-7 12:12:39

eric2013 发表于 2024-4-7 07:40
把你LTDC的AT定义去掉,看map文件,不就知道另外那个地址占用0xC0000000了

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

iihj 发表于 2024-4-7 12:13:39

eric2013 发表于 2024-4-7 07:40
把你LTDC的AT定义去掉,看map文件,不就知道另外那个地址占用0xC0000000了

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

eric2013 发表于 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
(出处: 硬汉嵌入式论坛)

iihj 发表于 2024-4-8 23:35:15

eric2013 发表于 2024-4-8 07:38
你的MDK里面不应该这么勾选,你应该仅勾选128KB的0x2000 0000或者512KB的0x2400 0000地址空间即可。

...



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

eric2013 发表于 2024-4-10 08:17:51

iihj 发表于 2024-4-8 23:35
哥我看了一下你的那个例程也修改了.act文件呀,然后现在就是编译没有问题,然后会在systeminit函数里 ...
关键是你这个地方,你选择的什么




iihj 发表于 2024-4-10 08:40:28

eric2013 发表于 2024-4-10 08:17
关键是你这个地方,你选择的什么




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

eric2013 发表于 2024-4-10 09:48:13

iihj 发表于 2024-4-10 08:40
我感觉应该是在程序 的systeminit初始化的时候堆栈区不知道为什么到外部sdram里面了,所以导致会跳 ...
你当前的这个配置跟用不用自定义分散加载设置没区别了,必须指定用那个。




iihj 发表于 2024-4-10 23:46:48

eric2013 发表于 2024-4-10 09:48
你当前的这个配置跟用不用自定义分散加载设置没区别了,必须指定用那个。

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

eric2013 发表于 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?mod=viewthread&tid=98697&fromuid=58
(出处: 硬汉嵌入式论坛)

iihj 发表于 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发生重复定义,而且这些文件里面根本没有这些变量

eric2013 发表于 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即可。

iihj 发表于 2024-4-14 14:34:05



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

eric2013 发表于 2024-4-15 09:44:13

iihj 发表于 2024-4-14 14:34
是的我现在,将外部使用到的sdram地址的变量定义在了main.c里面,但是很奇怪,我在使用正点的malloc的 ...

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

iihj 发表于 2024-4-15 21:39:16

eric2013 发表于 2024-4-15 09:44
剩下这些问题都比较好弄了,可以自己再摸索下。

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

iihj 发表于 2024-4-16 11:09:55

eric2013 发表于 2024-4-15 09:44
剩下这些问题都比较好弄了,可以自己再摸索下。

佬为什么我这个程序在初始化lvgl的时候会卡在这个地方,无法访问这个lv_conf设置的地址?
页: [1]
查看完整版本: STM32H743iit6发生内存冲突