cancel
Showing results for 
Search instead for 
Did you mean: 

Azure RTOS - Will there be full support (i.e. GUIX)?

NTipp.1
Associate II

I notice that ST has announced it's roll out of licenses for Azure RTOS on specific STM32 devices during 2021:

https://www.st.com/content/ccc/resource/sales_and_marketing/presentation/product_presentation/group1/5b/4f/89/bf/8f/18/4e/83/Microcontrollers_STM32Cube_AzureRTOS/files/Microcontrollers_STM32Cube_AzureRTOS.pdf/jcr:content/translations/en.Microcontrollers_STM32Cube_AzureRTOS.pdf

The limited documentation so far makes reference to ThreadX, FileX, NetX/NetX Duo and USBX. The only component not mentioned is GUIX. So my question is:

Will there be graphics driver support from ST for GUIX?

I know there is TouchGFX, but it would be a pity not to support the entire Azure infrastructure.

29 REPLIES 29

Thanks @CIsel.1  for the response.

The linker file is understood. What did you add from the GUIX repository? Did you add all the source files from the common directory?



I add guix as a git submodule

In practice it means a guix subdirectory of the Middlewares directory of my project

This subdirectory is a checkout of this github project: https://github.com/azure-rtos/guix 

Yes, I added the whole source

And I used the GUIX Studio app to design the interface

@CIsel.1 

My result is very different. I used GUIX studio to create an application with a button and textbox. Nothing fancy. Included the full GUIX library and the app. The build says RAM overrun .bss section of 271KB. see attached results. This is for a STM32F769I-DISCO platform. I get the same result for the STM32H747I-DISCO.

I am clearly doing something wrong. Looking at your project, it doesn't look like you move anything to external memories like SDRAM or QSPI.

SLimi.1
Associate III

@CIsel.1 I have had no success rebuilding your project.

It sounds as if you put the frame buffer in RAM

It should go in SDRAM, this is what I have in my code:
#define SDRAM_BANK_0 0xD0000000UL
#define SDRAM_BANK_1 0xD0800000UL
#define SDRAM_BANK_2 0xD1000000UL
#define SDRAM_BANK_3 0xD1800000UL
#define LCD_LAYER_0_ADDRESS SDRAM_BANK_0

And you need something like this to configure the LCD:

/* USER CODE END LTDC_Init 1 */
hltdc.Instance = LTDC;
hltdc.Init.HSPolarity = LTDC_HSPOLARITY_AL;
hltdc.Init.VSPolarity = LTDC_VSPOLARITY_AL;
hltdc.Init.DEPolarity = LTDC_DEPOLARITY_AL;
hltdc.Init.PCPolarity = LTDC_PCPOLARITY_IPC;
hltdc.Init.HorizontalSync = 63;
hltdc.Init.VerticalSync = 4;
hltdc.Init.AccumulatedHBP = 131;
hltdc.Init.AccumulatedVBP = 43;
hltdc.Init.AccumulatedActiveW = 851;
hltdc.Init.AccumulatedActiveH = 619;
hltdc.Init.TotalWidth = 863;
hltdc.Init.TotalHeigh = 624;
hltdc.Init.Backcolor.Blue = 0;
hltdc.Init.Backcolor.Green = 0;
hltdc.Init.Backcolor.Red = 0;
if (HAL_LTDC_Init(&hltdc) != HAL_OK)
{
Error_Handler();
}
pLayerCfg.WindowX0 = 0;
pLayerCfg.WindowX1 = 720;
pLayerCfg.WindowY0 = 0;
pLayerCfg.WindowY1 = 576;
pLayerCfg.PixelFormat = LTDC_PIXEL_FORMAT_ARGB8888;
pLayerCfg.Alpha = 255;
pLayerCfg.Alpha0 = 0;
pLayerCfg.BlendingFactor1 = LTDC_BLENDING_FACTOR1_PAxCA;
pLayerCfg.BlendingFactor2 = LTDC_BLENDING_FACTOR2_PAxCA;
pLayerCfg.FBStartAdress = LCD_LAYER_0_ADDRESS;
pLayerCfg.ImageWidth = 720;
pLayerCfg.ImageHeight = 576;
pLayerCfg.Backcolor.Blue = 0;
pLayerCfg.Backcolor.Green = 0;
pLayerCfg.Backcolor.Red = 0;
if (HAL_LTDC_ConfigLayer(&hltdc, &pLayerCfg, 0) != HAL_OK)
{
Error_Handler();
}

Any specific error message you could share ?

@CIsel.1 I thought I did, but I will look closer at your example.

something with the stm32h747i_discovery_lcd.h file. I am not going to worry about this too much.

I was looking at the H47-Test example. You also have a WeighingStation example. I will look at that one.

@CIsel.1 I was able to build your Weighing Station example. Trying to follow it closely to build my own with some difference. The same get the RAM overrun. I have isolated the problem to when I add the creation of the guix thread in app_thread.c. If I comment this out, the build is fine, but when added in the build blows up the RAM. I am just not seeing where the increase in memory is coming from. Project attached if anyone has time to look.

 

if(tx_thread_create(&guix_thread_ptr, "guix_thread", guix_thread_entry,0, pointer, DEFAULT_STACK_SIZE, TX_APP_THREAD_PRIO, TX_APP_THREAD_PREEMPTION_THRESHOLD, TX_APP_THREAD_TIME_SLICE, TX_APP_THREAD_AUTO_START) != TX_SUCCESS){

return TX_THREAD_ERROR;

}