-
Notifications
You must be signed in to change notification settings - Fork 3
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
[ek_ra8d1] Thin horizontal lines on the screen #3
Comments
The blue lines on the screen are caused by 2 different issues.
|
I also added checks for renderwedge in border drawing :- and arc drawing (this fixed an issue I was seeing with Partial and Direct rendering) :- |
Co-authored-by: Jeremy Baker <[email protected]> See lvgl/lv_port_renesas_ek-ra8d1_gcc#3
I've created a Pull request from the Would you mind forking the original LVGL repo so that I can merge the change easier in future? We have this short summary about Pull request, in case you are interested. |
I still see the stripes on the screen. See on the video: VID_20231218_212300208.mp4Could you try with the latest code from this repo if it's the same on your end? |
I don't see this issue, using the latest version of the code. |
With the latest code the screen is fully broken on my end. :( Does it work for you? |
My bad, I messed up something with git. |
I'm testing with Other then that it works well in FULL mode, but in PARTIAL mode several screen are messed up. Can you reproduce it? |
If I disable the framebuffer from being cached, then the PARTIAL mode improves (open configuration.xml, and in the properties of g_display0 Graphics LCD change the section of the framebuffer for Graphics Layer 1 from .sdram to .nocache_sdram) :- I have updated LVGL code to commit f4e9eabb705649cdb8288d47c521409ae175977e ( lvgl/lvgl@f4e9eab ) and DIRECT rendering is broken, has DIRECT rendering changed? |
lv_draw_buf_copy() removed the use of the GPU to do the buffer copy at some point, so it now done by the CPU, so the cache will come into play. |
The double buffered direct mode should be fixed by this: lvgl/lvgl#5248 How does disabling the cache affects the performance? |
Direct rendering is fixed by #5248. FB not cached :- If the Dave2D is doing the drawing to the FB, the Cache will not have an effect on speed. |
Sorry for the late reply. I've disabled the cache, but I still the see stripes. |
I have done a quick test, invalidating and cleaning the DCache for the area to be drawn by the CPU, before the call to lv_draw_sw_box_shadow() makes no difference. Invalidating and cleaning the DCache for the area to be drawn by the CPU, AFTER the call to lv_draw_sw_box_shadow() does improve thing a bit (most of the time), but it still doesn't solve the issue 100% : - |
Is there configuration now which has a good performance and has no artifacts? If so, let's set it as default to be sure people have good get started experience. |
I have rebased the LVGL code to this commit lvgl/lvgl@86138aa and FULL Rendering with the framebuffer cached works on my board (with the Widgets demo). However, DIRECT rendering seems to be broken with the LVGL code at this point |
I made some experiments and fixes. Also simplified the the display driver to support only double buffer direct mode as it should be the fastest. While doing that I found a few issues:
I wanted to create a PR, but by accident I merged it to master. Sorry for that... 🙁 If you would like to have discussion about it first I can revert it. I've found a few issues in LVGL too, which should be fixed in lvgl/lvgl#5360 With this the performance is great, the only thing is missing to show CPU used based on FreeRTOS idle task. I've found that this way the real CPU usage is 33% of the currently displayed. See here lvgl/lvgl#5243 I still see the thin lines. Can you try on your end with the latest master and this LVGL PR lvgl/lvgl#5360? |
I have tried with the latest master and this LVGL PR lvgl/lvgl#5360, and still see no evidence of any thin horizontal lines. |
Also, have you fitted the plastic stand-offs, so that the LCD PCB is held firmly to the main PCB? |
DIP SW1 2,3,4 were ON for me. Turning ON only 7 solved the issue 🎉 Thank you! So I had this issue due becasue he camera module was enabled but not used? I think it should be documented in the README. Please approve lvgl/lvgl#5360 and I'll merge it to master. Seemingly the last thing:
Do you have any good idea for it? |
This was in the Readme.md file on my original github repo :- Board Configuration. MIPI LCD PCB attached to the main PCB. USB cable connected from J10 to the development PC DIP switch settings :- 7 - ON (SDRAM) Others OFF Debug printf output is via the Jlink VCOM port, 921600 8,n,1 I have no idea about the CPU usage when using FreeRTOS, I have not really thought about it. |
I have added the EK-RA8D1 board configuration to the readme.md. The issue was caused by SW1-2 being ON and SW1-4 being ON, the ETM Trace signals are on the same pins as the SDRAM, as are the Ethernet signals for ETH-A configuration (ETH_B configuration can be used with SDRAM).The camera (SW1-3) can be used at the same time as the SDRAM. From the EK_RA8D1 User's Manual ( https://www.renesas.com/us/en/document/mat/ek-ra8d1-v1-users-manual ) the permitted combination of SW1 DIP switch settings :- |
Gabor, One method I have seen for measuring CPU in FreeRTOS is to increment a counter in the IDLE task, and periodically poll that counter. The CPU load is calculated as something like: where IDLE_COUNTER_MAX is what idle_counter_val would be if no tasks were running, and the counter would increment constantly. I haven't implemented this myself, but this is what I have been told by my colleagues and it makes sense. Alex |
@jeremy-baker Great, I've updated the RAEDME. @RenesasMan Thank you for joining.
|
To be able to add your own custom configs to FreeRTOS, you need to add a user header file to the configuration, and add the custom configs in that header file.
|
Thank you, I'll try it out. Could you recommend a something about the timer too? Which timer shall we pick? Is there a 64 bit timer? All we need is starting the timer with 1us period and reading its current value |
I have added a user FreeRTOS configuration header file to the project, there are no 64 bit timers, as far as I remember, however it may be possible to cascade 2 32 bit timers. I will have a look. |
Os based idle report is added here. I found that the the rendering time is little bit higher in some cases with Dave2D (compared to software render) but the CPU usage is only 25% instead of 50%. It seems for letter drawing software render is much faster so we can consider not drawing it with Dave2D. It would help to draw tasks in parallel too. |
Co-authored-by: Jeremy Baker <[email protected]> See lvgl/lv_port_renesas_ek-ra8d1_gcc#3
It was already fixed but it's shown again on my end. Earlier it was related to caching I believe.
The text was updated successfully, but these errors were encountered: