Memory config for Multi Layer support when using GUIDRV_Lin display driver

This site uses cookies. By continuing to browse this site, you are agreeing to our Cookie Policy.

  • Memory config for Multi Layer support when using GUIDRV_Lin display driver

    Hi,

    I met some problem when trying to use multi layer feature on my LPC1788 board.

    Basically I used three layers and I tested in the Simulator project (PC environment), it went on well
    When I try to port it to the board, only the first layer was displayed, upper ones are gone.

    I used GUIDRV_Lin_32_API for all layers.

    Following are some piece of config code

    Any help will be appreciated, thanks!

    zhiying

    C Source Code

    1. #define _COLORCONV_0 GUICC_M888
    2. #define _COLORCONV_1 GUICC_8888
    3. #define _COLORCONV_2 GUICC_8888
    4. #define VRAM_ADDR_PHYS (U32)&_aVRAM_0[0]
    5. #ifdef __ICCARM__
    6. #pragma data_alignment=8
    7. #pragma location="VRAM"
    8. static __no_init U32 _aVRAM_0[_XSIZE_PHYS_0 * _YSIZE_PHYS_0 * 32 * 3 / 8];
    9. #endif
    Display All

    C Source Code

    1. void LCD_X_Config(void) {
    2. const GUI_DEVICE_API * pDriver;
    3. int i, BitsPerPixel;
    4. U32 Addr;
    5. //
    6. // Check framebuffer size
    7. //
    8. #ifndef _WINDOWS
    9. if ((FB_XSIZE * FB_YSIZE) < (VXSIZE_PHYS * VYSIZE_PHYS)) {
    10. while (1); // Error, framebuffer too small
    11. }
    12. #endif
    13. // Video RAM start address.
    14. //
    15. // This address is only required for display drivers with memory
    16. // mapped video RAM like the LIN_xxx driver. It does not need to
    17. // be adapted for display controllers with a simple bus interface.
    18. //
    19. Addr = VRAM_ADDR_PHYS;
    20. //
    21. // Display driver configuration
    22. //
    23. for (i = 0; i < GUI_COUNTOF(_aConfigPara); i++) {
    24. //
    25. // Set display driver and color conversion for ith layer
    26. //
    27. GUI_DEVICE_CreateAndLink(_aConfigPara.pDisplayDriver, _aConfigPara.pColorConv, 0, i);
    28. //
    29. // Display driver configuration, required for Lin-driver
    30. //
    31. LCD_SetPosEx (i, _aConfigPara.xPos, _aConfigPara.yPos);
    32. LCD_SetSizeEx (i, _aConfigPara.xSize, _aConfigPara.ySize);
    33. LCD_SetVSizeEx (i, _aConfigPara.vxSize, _aConfigPara.vySize);
    34. LCD_SetVRAMAddrEx(i, (void *)Addr);
    35. LCD_SetVisEx (i, 1);
    36. //
    37. // Set user palette data (only required if no fixed palette is used)
    38. //
    39. if (_aConfigPara.pPalette) {
    40. LCD_SetLUTEx(i, _aConfigPara.pPalette);
    41. }
    42. //
    43. // Calculate video RAM address for the following layer
    44. //
    45. BitsPerPixel = LCD_GetBitsPerPixelEx(i);
    46. Addr += ((_aConfigPara.vxSize * BitsPerPixel) * _aConfigPara.vySize) / 8;
    47. }
    48. }
    Display All

    The post was edited 3 times, last by Zhiying ().

  • Hello Zhiying,

    I am afraid your request requires a higher support-level. Please understand, that I have to ask you to direct your support request directly to your emWin supplier. We have an agreement with them, that includes their right to provide our emWin software as library and their obligation to support their customers.

    If you are interested in receiving direct support from SEGGER, please contact info@segger.com.

    Best regards,
    Adrian
  • SEGGER - Adrian wrote:

    Hello Zhiying,

    I am afraid your request requires a higher support-level. Please understand, that I have to ask you to direct your support request directly to your emWin supplier. We have an agreement with them, that includes their right to provide our emWin software as library and their obligation to support their customers.

    If you are interested in receiving direct support from SEGGER, please contact info@segger.com.

    Best regards,
    Adrian


    Thanks Adrian,

    I have consulted NXP which is the supplier and they said the chip I'm using does not support Multi Layer feature..