2020-07-20 01:51 AM
Hello,
I am writing a project with STM32H7. The project contains RTC, SPI, USART, SD Card, timers, and I2C.
In order to have more RAM, I have brough the data and bss to RAM_D1.
As next steps I want to implement Ethernet. However, I realized that in order for Ethernet to work, I need to only use RAM_D1.
The problem is when I bring the heap and stack to RAM_D1, the project stops working.
Can someone please help?
I include the linker script before and after bringing everything to RAM_D1.
Thank you in advance for your help.
Solved! Go to Solution.
2020-07-20 07:56 AM
Single or dual core? If i needed extra ram for the m7 core i would use the axiram, not d2 sram. As you have found out, the peripherals might need the d2 sram.
2020-07-20 05:32 AM
Instrument code so you can identify where it stops working. Have Hard Fault and Error Handlers output actionable data.
Some memories require clocks to be enabled
2020-07-20 06:30 AM
You need to update _estack to point to the end of the stack. It's still pointing at DTCM space. Pretty sure some malloc implementations don't like when the stack is below the heap.
2020-07-20 07:15 AM
I am sorry but can you tell me what to exactly do? I am really new in this field.
Thank you very much
2020-07-20 07:16 AM
Thanks a lot Clive, I will sure check.
2020-07-20 07:25 AM
Change
_estack = 0x20020000;
to
_estack = 0x30000000;
2020-07-20 07:34 AM
thank you very much.
I did it but then everything stopped working. :(
2020-07-20 07:36 AM
2020-07-20 07:56 AM
Single or dual core? If i needed extra ram for the m7 core i would use the axiram, not d2 sram. As you have found out, the peripherals might need the d2 sram.
2020-07-20 07:59 AM