cancel
Showing results for 
Search instead for 
Did you mean: 

[STM32F769] Hang-up inside setLanguage function in flashing(burning) mode, but working ok in debug mode.(with flash : M29W128GL)

Phyo .1
Associate II

My board(custom board) hang-up while init(setLanguage function) after burning image to flash. In debug mode(debug->run target), board is working ok.

Here's the hang-up point:

//Texts.cpp

currentLanguageIndices = staticLanguageIndices[id];

sprintf(dbgbuf, "setLanguage[6] \r\n");

HAL_UART_Transmit(&huart7, (uint8_t *)dbgbuf, strlen(dbgbuf), 10); //--> pass without problem

currentLanguageTypedText = typedTextDatabaseArray[id]; // --> board hang-up here in burning mode (in debug, have no problem)

sprintf(dbgbuf, "setLanguage[7] \r\n");

HAL_UART_Transmit(&huart7, (uint8_t *)dbgbuf, strlen(dbgbuf), 10);

1) both typedTextDatabaseArray & texts_all_language is located in external flash

2) here's the map file for 2 variable           

 TextFlashSection

               0x0000000060b91680    0x119c TouchGFX/generated/texts/src/Texts.o

               0x0000000060b91680               texts_all_languages

 TextFlashSection

               0x0000000060b9281c     0x33c TouchGFX/generated/texts/src/TypedTextDatabase.o

               0x0000000060b9281c               typedText_database_DEFAULT

               0x0000000060b92b54               typedTextDatabaseArray

3) ld file

 ExtFlashSection :

 {

   *(ExtFlashSection ExtFlashSection.*)

   *(.gnu.linkonce.r.*)

   . = ALIGN(0x4);

 } >NOR

 FontFlashSection :

   {

      *(FontFlashSection FontFlashSection.*)

      *(.gnu.linkonce.r.*)

   . = ALIGN(0x4);

   } >NOR

 TextFlashSection :

   {

      *(TextFlashSection TextFlashSection.*)

      *(.gnu.linkonce.r.*)

   . = ALIGN(0x4);

   } >NOR

please hele me why that function fail to boot.

1 REPLY 1
Phyo .1
Associate II

For testing, I tried to move TextFlashSection into another area(internal flash which is FLASH in ld file) and here's the symptom.

In debug mode, it works without problem.

in burning mode:

TextFlashSection in NOR area(0x6000 0000): box hang-up inside setLanguage function

TextFlashSection in Flash(0x8000 0000) : box do not hang-up but on screen, nothing is display.

I did set MCU config SDRAM & NOR Flash.

 MPU_InitStruct.Enable = MPU_REGION_ENABLE;

 MPU_InitStruct.Number = MPU_REGION_NUMBER0;

 MPU_InitStruct.BaseAddress = 0xC0000000;

 MPU_InitStruct.Size = MPU_REGION_SIZE_512MB;

 MPU_InitStruct.SubRegionDisable = 0x0;

 MPU_InitStruct.TypeExtField = MPU_TEX_LEVEL0;

 MPU_InitStruct.AccessPermission = MPU_REGION_NO_ACCESS;

 MPU_InitStruct.DisableExec = MPU_INSTRUCTION_ACCESS_DISABLE;

 MPU_InitStruct.IsShareable = MPU_ACCESS_NOT_SHAREABLE;

 MPU_InitStruct.IsCacheable = MPU_ACCESS_NOT_CACHEABLE;

 MPU_InitStruct.IsBufferable = MPU_ACCESS_NOT_BUFFERABLE;

 HAL_MPU_ConfigRegion(&MPU_InitStruct);

 /** Initializes and configures the Region and the memory to be protected

 */

 MPU_InitStruct.Enable = MPU_REGION_ENABLE;

 MPU_InitStruct.Number = MPU_REGION_NUMBER1;

 MPU_InitStruct.BaseAddress = 0xC0000000;

 MPU_InitStruct.Size = MPU_REGION_SIZE_32MB;

 MPU_InitStruct.SubRegionDisable = 0x0;

 MPU_InitStruct.TypeExtField = MPU_TEX_LEVEL0;

 MPU_InitStruct.AccessPermission = MPU_REGION_FULL_ACCESS;

 MPU_InitStruct.DisableExec = MPU_INSTRUCTION_ACCESS_DISABLE;

 MPU_InitStruct.IsShareable = MPU_ACCESS_NOT_SHAREABLE;

 MPU_InitStruct.IsCacheable = MPU_ACCESS_CACHEABLE;

 MPU_InitStruct.IsBufferable = MPU_ACCESS_BUFFERABLE;

 HAL_MPU_ConfigRegion(&MPU_InitStruct);

 /** Initializes and configures the Region and the memory to be protected

 */

 MPU_InitStruct.Enable = MPU_REGION_ENABLE;

 MPU_InitStruct.Number = MPU_REGION_NUMBER2;

 MPU_InitStruct.BaseAddress = 0x60000000;

 MPU_InitStruct.Size = MPU_REGION_SIZE_512MB;

 MPU_InitStruct.SubRegionDisable = 0x0;

 MPU_InitStruct.TypeExtField = MPU_TEX_LEVEL0;

 MPU_InitStruct.AccessPermission = MPU_REGION_NO_ACCESS;

 MPU_InitStruct.DisableExec = MPU_INSTRUCTION_ACCESS_DISABLE;

 MPU_InitStruct.IsShareable = MPU_ACCESS_NOT_SHAREABLE;

 MPU_InitStruct.IsCacheable = MPU_ACCESS_NOT_CACHEABLE;

 MPU_InitStruct.IsBufferable = MPU_ACCESS_NOT_BUFFERABLE;

 HAL_MPU_ConfigRegion(&MPU_InitStruct);

 /** Initializes and configures the Region and the memory to be protected

 */

 MPU_InitStruct.Enable = MPU_REGION_ENABLE;

 MPU_InitStruct.Number = MPU_REGION_NUMBER3;

 MPU_InitStruct.BaseAddress = 0x60000000;

 MPU_InitStruct.Size = MPU_REGION_SIZE_16MB;

 MPU_InitStruct.SubRegionDisable = 0x0;

 MPU_InitStruct.TypeExtField = MPU_TEX_LEVEL0;

 MPU_InitStruct.AccessPermission = MPU_REGION_FULL_ACCESS;

 MPU_InitStruct.DisableExec = MPU_INSTRUCTION_ACCESS_DISABLE;

 MPU_InitStruct.IsShareable = MPU_ACCESS_NOT_SHAREABLE;

 MPU_InitStruct.IsCacheable = MPU_ACCESS_CACHEABLE;

 MPU_InitStruct.IsBufferable = MPU_ACCESS_BUFFERABLE;

plz help me..