716 views
in Platform Packages by
Hi,

 I am trying to use embedded wizzard on a very simple board with STM32F767ZIT with RGB888 parallel interface (no DSI) and no external RAM.  

As Double buffering is not a requirement and the controller has a lot of internal RAM I would rather not use external RAM.

I have managed to figure out going through several examples of discovery boards that it is possible to use the platform without DSI, but trying to implement it I stumbled on the external SDRAM asummed by the examples.

Moreover it seems to me that the calls to the memory allocation module are from the graphic engine that is precompiled and as such I have no option to configure..

Is it possible to use the platform without external RAM?

If so, is there a different version of the libraries?

Thank you in advance for your response

1 Answer

0 votes
by

Hello,

to start with your (custom) board I would recommend to use a Build Environment for a ST board which also uses a parallel screen interface, for example the STM32F746 Discovery. At the end of the linked article you can find under 'Custom specific hardware' what you have to do to adapt this Build Environment to another board.

Of course, it is possible to use just internal RAM if this is big enough for the frame buffer and memory pool. To configure the frame buffer and memory pool address you need to adapt the defines in ewmain.c only. With these defines the Embedded Wizard memory manager gets the address information where the framebuffer and memory pool is located. By help of the memory map of your microcontroller, you will get the address of the internal RAM. this Address is what you have insert to avoid using the external SDRAM. See here the lines from ewmain.c to do this work:

/* loacate framebuffer at the beginning of first SDRAM bank */
#define FRAME_BUFFER_ADDR     (void*)(SDRAM_DEVICE_ADDR)
#define FRAME_BUFFER_SIZE     FRAME_BUFFER_WIDTH * FRAME_BUFFER_HEIGHT * FRAME_BUFFER_DEPTH

#ifdef EW_USE_DOUBLE_BUFFER
  /* locate double-buffer at the end of the last SDRAM bank - this ensures
     that front/back-buffer are located within different banks of the SDRAM */
  #define DOUBLE_BUFFER_ADDR  (void*)(SDRAM_DEVICE_ADDR + SDRAM_DEVICE_SIZE - FRAME_BUFFER_SIZE)
  #define DOUBLE_BUFFER_SIZE  FRAME_BUFFER_SIZE
#else
  #define DOUBLE_BUFFER_ADDR  (void*)(0)
  #define DOUBLE_BUFFER_SIZE  0
  #define NUMBER_OF_FIELDS    3
#endif

/* use remaining SDRAM area for memory pool */
#define MEMORY_POOL_ADDR      (void*)(SDRAM_DEVICE_ADDR + FRAME_BUFFER_SIZE)
#define MEMORY_POOL_SIZE      SDRAM_DEVICE_SIZE - FRAME_BUFFER_SIZE - DOUBLE_BUFFER_SIZE

You can see that that 'SDRAM_DEVICE_ADDR' itself is also a define from the BSP of this board. Just enter here another valid address of any RAM area.

In each project (GCC, TrueSTUDIO, etc.) is a global define (EW_USE_DOUBLE_BUFFER) to disable the double buffering mode. You said that your board has "a lot of internal RAM ", if your board has enough free RAM for double buffering there is no need to switch to single buffering.

The precompiled libraries that are in use for our free version do not have any dependencies to the external SDRAM/RAM respectively the address of the frame buffer and memory pool. All the necessary files to configure are just inside the "TargetSpecific' folder (and in your case the main.c).

 

If you have more question, feel free to ask again.

 

Kind regards

Tim

by

Thank you for your response,

I have downloaded the STM32F746-Discovery example, changed the microcontroller part number in IAR EW, and defined frame buffer and memory pool in the internal RAM. 

The built was succesfull. But I face a problem downloading the output to the microcontroller. From within the IAR EW  it flashes for ever with no progress, and directly from ST-link utility likewise. See image bellow 

 

If I replace the ew_bsp_display.c in the STM32769-Discovery example, with the one from the STM32F746-Discovery in order to get rid of the DSI, and I play a little with the code, I get code that I can download and follow it in the debugger to run until, and cycle through the  EwProcess() function with no errors. But I do not have image on the display. It is probably a hardware deffinitions issue. I know that the board works correctly, because I have managed to display a simple bitmap patched in the frame buffer in a very simple test program without the use of the embedded wizzard tool.  

What is the reason for not being able to download the STM32F746-Discovery example? I beleive I would have better luck with this example as you suggested..

Thank you once more for your support

Vassilis

by
Hi Vassilis,

the reasons that the STM32 ST-LINK utility cannot flash the controller can be extremely various. I also have and had similar problems with this tool. My way to fix that is to reconnect the board or restart the PC and make sure that no other flash process is open from any other program (Like TrueSTUDIO ord GCC makefile project).

 

The STM32F746-Discovery is a good base to start, but within this Project the LCD driver and other peripherals (probably) needs to adapt too.

 

Kind regards

Tim

Ask Embedded Wizard

Welcome to the question and answer site for Embedded Wizard users and UI developers.

Ask your question and receive answers from the Embedded Wizard support team or from other members of the community!

Embedded Wizard Website | Privacy Policy | Imprint

...