cancel
Showing results for 
Search instead for 
Did you mean: 

QUAD SPI MT25QL128A with stm32H750Ibt6 controller.

Mani.V
Associate II

Hello all,

Currently i'm working over STM32H750IBT6 Controller with QUAD SPI MT25QL128A External flash. The objective is to boot from internal flash address which is 0x08000000 and jump to external flash address, as the internal flash memory is quite less because i'm using TFT with touchGFX so the memory usage is large. Now issue is i am unable to read and write external flash through any utility as it is custom board and i think i need to make a custom loader for flashing external flash through utility, which i tried and failed. Then i tried flashing through uart in which i get success and can read through uart the exact data as has to be. Now i tried executing it but unfortunately it still not working neither i can debug nor i can understand what to do next, also i did the same over STM32756NG-EVAL Board with MT25QL512A external flash, Its working exactly i wanted to. Please help me understand the process and where i am missing.

For more reference i include some points which i think is main -

SysTick->CTRL = 0;
	/* Initialize user application's Stack Pointer & Jump to user application */
	JumpToApplication = (pFunction) (*(__IO uint32_t*) (APPLICATION_ADDRESS));
	__set_MSP(*(__IO uint32_t*) APPLICATION_ADDRESS);
	JumpToApplication();
* Specify the memory areas */
MEMORY
{
  FLASH (rx)     : ORIGIN = 0x08000000, LENGTH = 128K
  RAM (xrw)      : ORIGIN = 0x20000000, LENGTH = 128K
  RAM_D1 (xrw)   : ORIGIN = 0x24000000, LENGTH = 512K
  RAM_D2 (xrw)   : ORIGIN = 0x30000000, LENGTH = 288K
  RAM_D3 (xrw)   : ORIGIN = 0x38000000, LENGTH = 64K
  ITCMRAM (xrw)  : ORIGIN = 0x00000000, LENGTH = 64K
}
uint32_t QSPI_Startup(void)
{
  if (BSP_QSPI_Init() != HAL_OK)
  {
    return MEMORY_ERROR;
  }
 
#if (CODE_AREA == USE_QSPI)
  /* Enable MemoryMapped mode */
  if( BSP_QSPI_EnableMemoryMappedMode()!= MEMORY_OK )
  {
    return MEMORY_ERROR;
  }
#elif (BINARY_AREA == USE_SPI_NOR)
  if (QSPI_Copy(APPLICATION_ADDRESS, BINARY_BASE_OFFSET, BINARY_SIZE) != MEMORY_OK)
  {
    return MEMORY_ERROR;
  }
 
  if (QSPI_Shutdown() != MEMORY_OK)
  {
    return MEMORY_ERROR;
  }
#endif /* (CODE_AREA == USE_QSPI) */
 
  return MEMORY_OK;
}

0 REPLIES 0