2017-08-21 12:50 AM
I have linked STemWin library. My project uses external SDRAM
When I display some progressbar or treeview or graph using internal RAM, value of progress is displayed correctlly (ex. 50%). Also treeview and graph is displayed correctly . When I am switching buffer 'aMemory' to extrernal SDRAM ( U32 aMemory[GUI_NUMBYTES / 4] __attribute__((section('.ExtRAMData')));) the value of progress is displayed strange value . Also display is flickering.What is the problem ?if I check aMemory seperately then it is working ok as follows
&sharpdefine GUI_NUMBYTES (1024) * 1024
U32 aMemory[GUI_NUMBYTES / 4] __attribute__((section('.ExtRAMData')));
uwWriteReadStatus=0;
for (uwIndex = 0; uwIndex < (GUI_NUMBYTES / 4); uwIndex++)
{aMemory1[uwIndex] = uwIndex;}/* Read back data from the SDRAM memory */
for (uwIndex = 0; uwIndex < (GUI_NUMBYTES / 4); uwIndex++){// if (0x87654321 != *(__IO uint32_t*) (SDRAM_BANK_ADDR + WRITE_READ_ADDR + 4*uwIndex))if (uwIndex != aMemory1[uwIndex]){uwWriteReadStatus++;}}I am getting
uwWriteReadStatus as 0;That means it working.
I am using 8MB sdram with 32bit interface.
In .ld file following declaration is done
/* Specify the memory areas */
MEMORY{RAM (xrw) : ORIGIN = 0x20000000, LENGTH = 192KCCMRAM (rw) : ORIGIN = 0x10000000, LENGTH = 64KFLASH (rx) : ORIGIN = 0x8000000, LENGTH = 2048KMEMORY_ARRAY1 (xrw) : ORIGIN = 0xC0200000, LENGTH = 2M}...
.ARM.attributes 0 : { *(.ARM.attributes) }
.ExtRAMData(NOLOAD) : {*(.ExtRAMData)} >MEMORY_ARRAY1Regards,
Somnath Barge
#lcd-fliker #stemwin-stm32f4292017-08-21 10:01 AM
Exceeded SDRAM or internal buses' bandwidth?
JW
2017-08-23 12:45 AM
Not understand your reply. Please clarify in deep.
Somnath Barge
2017-08-23 04:08 PM
I'm having similar problems with STemWin when I locate the amemory[] array outside of the lower 64kB of internal SRAM. If amemory crosses the lower 64kB boundary then all manner of STemWin features fail, including off-screen rendering with memdev and simple text and graphic operations. It's almost as if the internal memory management features of STemWin are using 16-bit pointers. This situation limits the size of memdev that I can use and seriously reduces the utility of STemWin
I'm using STM32Cube V1.6.0 for the STM32F7 family which includes STemWin 532. I see the problems on both STM32F722 and STM32F746 processors.
2017-08-24 03:55 AM
JW
2017-08-24 05:40 AM
Perform memory test on your SDRAM or SRAM to check boundary issues.
Pls find the memtest program on link below.
https://drive.google.com/open?id=0B3HQhEcX2r1wMnJxOWk1c0FuNzg
Regards,
Rohit Mishra.
2017-08-24 11:54 PM
I have done the full memory test of sdram and results are ok.
Following are my timings
For TFT LCD my lcd is 800*480
so for ARGB8888 mode
#define COLOR_CONVERSION_0 GUICC_M8888I
#define DISPLAY_DRIVER_0 GUIDRV_LIN_32memory required is 800*480*4 = 1536000bytes = 1.464 MB
LCD Frame frequency is 60hz
so
Lcd memory bandwidth
60* 1.464 = 87.84MB/secMy sdram is 8Mb with 32bit data width and clock is 84Mhz.(168Mhz/2)
So Memory bandwidth is 84Mhz*4byte/3 = 112MB/secs
For this setting stemwin GUI is not working
If I changed the setting in LCDConf.c as
#define COLOR_CONVERSION_0 GUICC_M565
#define DISPLAY_DRIVER_0 GUIDRV_LIN_16Then Lcd memory bandwithd is
60* 1.464/2 = 43.92MB/sec
For this setting GUI is working for some 5 to 6minutes and then IT hangs.
Problem still not solved. My controller is STM32F429BTI.
If I set aMemory to internal memory then there is no problem.
Somnath Barge
2017-08-25 01:46 AM
so
Lcd memory bandwidth
60* 1.464 = 87.84MB/secSo Memory bandwidth is 84Mhz*4byte/3 = 112MB/secs
That does not take into account the syncs, nor the SDRAM setup overhead; and leaves no headroom for the program to write into the framebuffer. That decreasing color depth helped is the very proof that the LCD controller is starving.
For this setting GUI is working for some 5 to 6minutes and then IT hangs.
That might be another, unrelated problem.
JW
2017-08-27 11:08 PM
Where did you place your frame buffer......?
2017-08-27 11:52 PM
I have placed frame buffer in SDRAM at 0xC0000000