在线时间3 小时
UID3724195
注册时间2021-4-12
NXP金币0
该用户从未签到
新手上路

- 积分
- 39
- 最后登录
- 2022-2-18
|
[size=15.008px]配置
[size=15.008px]MCU: RT1052
[size=15.008px]OS: RTThread 4.0
[size=15.008px]LVGL:v7.10
[size=15.008px]LCD: 1024 x 600[size=15.008px]
[size=15.008px]大部分页面功能都能正常工作,FPS>20
[size=15.008px]因为客户要求,做了一个拖动的下拉效果,发现FPS直接降到个位数,想咨询下,如何优化LCD的性能
[size=15.008px]和LCD驱动相关的核心代码如下:
- ALIGN(64) lv_color_t frame_buffer1[LCD_HEIGHT*LCD_WIDTH] SECTION("Cacheable");
- ALIGN(64) lv_color_t frame_buffer2[LCD_HEIGHT*LCD_WIDTH] SECTION("Cacheable");
- lv_disp_buf_init(&disp_buf, frame_buffer1, frame_buffer2, LCD_HEIGHT*LCD_WIDTH);
复制代码
- void LCDIF_IRQHandler(void)
- {
- uint32_t intStatus = ELCDIF_GetInterruptStatus(LCDIF);
- ELCDIF_ClearInterruptStatus(LCDIF, intStatus);
- //if (s_framePending)
- {
- if (intStatus & kELCDIF_CurFrameDone)
- {
- //if(s_framePending)
- s_frameCount++;
-
- s_framePending = false;
- // if(dynamic_sem != NULL)
- // rt_sem_release(dynamic_sem);
- }
- }
- __DSB();
- }
- static void lcd_fb_flush(lv_disp_drv_t *disp_drv, const lv_area_t *area, lv_color_t *color_p)
- {
- int x1, x2, y1, y2;
-
- DCACHE_CleanInvalidateByRange((uint32_t)color_p, LCD_WIDTH * LCD_HEIGHT * 2);
- ELCDIF_SetNextBufferAddr(LCDIF, (uint32_t)color_p);
-
- //rt_sem_take(dynamic_sem, RT_WAITING_FOREVER);
-
- s_framePending = true;
- while(s_framePending)
- ;
- lv_disp_flush_ready(disp_drv);
- }
复制代码 当前软件的效果

|
|