Hello @NguyenAnhHieu_ ,
Since your board is not working yet, we recommend you to disable the DCache for the moment and to set it up once you have a working project.
It is also recommended to keep the buffer location as "By allocation" to let TouchGFX choose where to put it.
Then, in your linker script you can tell that you want the framebuffer in the internal RAM.
We put the framebuffer in internal RAM on the STM32U5G9J-DK2 TBS so you can look how we did that :
MEMORY
{
RAM (xrw) : ORIGIN = 0x20000000, LENGTH = 3008K
FLASH (rx) : ORIGIN = 0x08000000, LENGTH = 4096K
EXT_FLASH (r) : ORIGIN = 0xA0000000, LENGTH = 128M
}
/* Sections */
SECTIONS
{
.
.
.
.
.
.
FramebufferSection (NOLOAD) :
{
*(TouchGFX_Framebuffer TouchGFX_Framebuffer.*)
*(.gnu.linkonce.r.*)
. = ALIGN(0x4);
*(Nemagfx_Stencil_Buffer Nemagfx_Stencil_Buffer.*)
*(.gnu.linkonce.r.*)
. = ALIGN(0x4);
*(Nemagfx_Memory_Pool_Buffer Nemagfx_Memory_Pool_Buffer.*)
*(.gnu.linkonce.r.*)
. = ALIGN(0x4);
} >RAM
.
.
.
.
.
.
}
The STM32H745BI has 2MBytes of internal flash so you have enough to put a full framebuffer in it, maybe enough for a double depending on your display resolution and color precision:

We also have a STM32H750-DK TBS that you could look at but we use external memory for this one.
Regards,