cancel
Showing results for 
Search instead for 
Did you mean: 

New hardware working problem.

Yunus ARI
Senior

Hi everyone,

We working on a project with touchgfx software. We designed a new hardware for this project. Our custom hardware has this components;

  • STM32F746BET processor
  • IS42S16800F-7TLI SDRAM (128Mb , 143MHz)
  • MT25QL128ABA1EW9 QUAD SPI NOR FLASH (128Mb, 133MHz)

We able to access flash and ram. Code able to work in processor.

When I want to draw a box or something that can be drawable with code, screen working fine.

But when I want to draw an image from flash, screen go crazy.

You can see an example this situation;

0690X00000BwmLWQAZ.jpg

What can you say about it? Is this can be fixed with software or we need to review our hardware?

Thanks in advance :).

26 REPLIES 26

It doesn't do that automatically, it depends on how you created the project. If from TouchGFX Designer then we have an idea of memory layout and have this configured linker script to place assets in external flash.

e.g. from a f746g-disco IAR project. Notice how we actively place ExtFlashSection in QSPI region. This ExtFlashSection is attached to every generated image, but you do not need to place it anywhere. Just remove the bottom line to place it in internal flash, or similar for your compiler.

define symbol __region_QSPI_start__ = 0x90000000;
define symbol __region_QSPI_end__   = 0x90FFFFFF;
 
define region QSPI_region   = mem:[from __region_QSPI_start__ to __region_QSPI_end__];
define region ITCMRAM_region  = mem:[from __ICFEDIT_region_ITCMRAM_start__ to __ICFEDIT_region_ITCMRAM_end__];
 
place in QSPI_region { section ExtFlashSection, section FontFlashSection, section TextFlashSection };

And now we're trying to debug on your NEW hardware platform.

Yes, I do everything on my new hardware now.

I do that now and it's working fine.

Okay. Try going back to External Flash, and then configuring your TouchGFX HAL to use NoDMA instead of STM32DMA. Then we can see if it's ChromARTs fault.

/Martin

How can I do this configuration? Is there any article for this?

I can guide you through it.

Do you have a BoardConfiguration.cpp file? Or TouchGFXConfiguration.cpp ?

I have a BoardConfiguration.cpp file.

Okay, replace the line

STM32DMA dma; 

with:

NoDMA dma;

And also add the following

#include <touchgfx/hal/NoDMA.hpp>

What this does is essentially just render everything using the CPU (including doing all the blending) which is a hit on performance, but can be a nice tool to rule out issues with DMA transfers,

/Martin