@mangogeek 这两按键摆在这里,USB线一插怎么按?难道没人吐槽过吗?
geniusgogo 发布的最新帖子
-
回复: melis里适配RGB屏,DE。CLK没有任何信号
#include <stdio.h> #include <stdint.h> #include <stdlib.h> #include <hal_clk.h> #include <hal_gpio.h> #include "../disp/disp_sys_intf.h" #include "disp_board_config.h" struct property_t g_lcd0_config[] = { { .name = "lcd_used", .type = PROPERTY_INTGER, .v.value = 1, }, { .name = "lcd_driver_name", .type = PROPERTY_STRING, .v.str = "default_lcd", }, { .name = "lcd_if", .type = PROPERTY_INTGER, .v.value = 0, /* LCD_IF_HV */ }, { .name = "lcd_hv_if", .type = PROPERTY_INTGER, .v.value = 0, /* LCD_HV_IF_PRGB_1CYC */ }, { .name = "lcd_x", .type = PROPERTY_INTGER, .v.value = 480, }, { .name = "lcd_y", .type = PROPERTY_INTGER, .v.value = 272, }, { .name = "lcd_width", .type = PROPERTY_INTGER, .v.value = 80, }, { .name = "lcd_height", .type = PROPERTY_INTGER, .v.value = 47, }, { .name = "lcd_dclk_freq", .type = PROPERTY_INTGER, .v.value = 10, }, /* lcd_ht = lcd_x + lcd_hspw + lcd_hbp + lcd_hfp */ { .name = "lcd_ht", .type = PROPERTY_INTGER, .v.value = 592, }, { .name = "lcd_hbp", .type = PROPERTY_INTGER, .v.value = 56, }, { .name = "lcd_hspw", .type = PROPERTY_INTGER, .v.value = 40, }, /* lcd_vt = lcd_y + lcd_vspw + lcd_vbp + lcd_vfp */ { .name = "lcd_vt", .type = PROPERTY_INTGER, .v.value = 286, }, { .name = "lcd_vspw", .type = PROPERTY_INTGER, .v.value = 5, }, { .name = "lcd_vbp", .type = PROPERTY_INTGER, .v.value = 6, }, { .name = "lcd_frm", .type = PROPERTY_INTGER, .v.value = 0, }, { .name = "lcd_io_phase", .type = PROPERTY_INTGER, .v.value = 0, }, { .name = "lcd_gamma_en", .type = PROPERTY_INTGER, .v.value = 0, }, { .name = "lcd_bright_curve_en", .type = PROPERTY_INTGER, .v.value = 0, }, { .name = "lcd_cmap_en", .type = PROPERTY_INTGER, .v.value = 0, }, { .name = "deu_mode", .type = PROPERTY_INTGER, .v.value = 0, }, { .name = "lcdgamma4iep", .type = PROPERTY_INTGER, .v.value = 22, }, { .name = "smart_color", .type = PROPERTY_INTGER, .v.value = 90, }, // backlight enable /* { .name = "lcd_gpio_1", .type = PROPERTY_GPIO, .v.gpio_list = { .gpio = GPIOE(11), .mul_sel = GPIO_DIRECTION_OUTPUT, .pull = 0, .drv_level = 3, .data = 1, }, }, */ { .name = "lcd_backlight", .type = PROPERTY_INTGER, .v.value = 50, }, { .name = "lcd_pwm_used", .type = PROPERTY_INTGER, .v.value = 1, }, { .name = "lcd_pwm_ch", .type = PROPERTY_INTGER, .v.value = 7, }, { .name = "lcd_pwm_freq", .type = PROPERTY_INTGER, .v.value = 1000, }, { .name = "lcd_pwm_pol", .type = PROPERTY_INTGER, .v.value = 1, }, { .name = "lcd_pwm_max_limit", .type = PROPERTY_INTGER, .v.value = 255, }, /* POWER-vcc */ { .name = "lcd_gpio_0", .type = PROPERTY_GPIO, .v.gpio_list = { .gpio = GPIOB(6), .mul_sel = GPIO_DIRECTION_OUTPUT, .pull = 0, .drv_level = 3, .data = 1, }, }, //gpio { .name = "LCD0_D2", .type = PROPERTY_PIN, .v.gpio_list = { .gpio = GPIOD(0), .mul_sel = 2, .pull = 0, .drv_level = 3, }, }, { .name = "LCD0_D3", .type = PROPERTY_PIN, .v.gpio_list = { .gpio = GPIOD(1), .mul_sel = 2, .pull = 0, .drv_level = 3, }, }, { .name = "LCD0_D4", .type = PROPERTY_PIN, .v.gpio_list = { .gpio = GPIOD(2), .mul_sel = 2, .pull = 0, .drv_level = 3, }, }, { .name = "LCD0_D5", .type = PROPERTY_PIN, .v.gpio_list = { .gpio = GPIOD(3), .mul_sel = 2, .pull = 0, .drv_level = 3, }, }, { .name = "LCD0_D6", .type = PROPERTY_PIN, .v.gpio_list = { .gpio = GPIOD(4), .mul_sel = 2, .pull = 0, .drv_level = 3, }, }, { .name = "LCD0_D7", .type = PROPERTY_PIN, .v.gpio_list = { .gpio = GPIOD(5), .mul_sel = 2, .pull = 0, .drv_level = 3, }, }, { .name = "LCD0_D10", .type = PROPERTY_PIN, .v.gpio_list = { .gpio = GPIOD(6), .mul_sel = 2, .pull = 0, .drv_level = 3, }, }, { .name = "LCD0_D11", .type = PROPERTY_PIN, .v.gpio_list = { .gpio = GPIOD(7), .mul_sel = 2, .pull = 0, .drv_level = 3, }, }, { .name = "LCD0_D12", .type = PROPERTY_PIN, .v.gpio_list = { .gpio = GPIOD(8), .mul_sel = 2, .pull = 0, .drv_level = 3, }, }, { .name = "LCD0_D13", .type = PROPERTY_PIN, .v.gpio_list = { .gpio = GPIOD(9), .mul_sel = 2, .pull = 0, .drv_level = 3, }, }, { .name = "LCD0_D14", .type = PROPERTY_PIN, .v.gpio_list = { .gpio = GPIOD(10), .mul_sel = 2, .pull = 0, .drv_level = 3, }, }, { .name = "LCD0_D15", .type = PROPERTY_PIN, .v.gpio_list = { .gpio = GPIOD(11), .mul_sel = 2, .pull = 0, .drv_level = 3, }, }, { .name = "LCD0_D18", .type = PROPERTY_PIN, .v.gpio_list = { .gpio = GPIOD(12), .mul_sel = 2, .pull = 0, .drv_level = 3, }, }, { .name = "LCD0_D19", .type = PROPERTY_PIN, .v.gpio_list = { .gpio = GPIOD(13), .mul_sel = 2, .pull = 0, .drv_level = 3, }, }, { .name = "LCD0_D20", .type = PROPERTY_PIN, .v.gpio_list = { .gpio = GPIOD(14), .mul_sel = 2, .pull = 0, .drv_level = 3, }, }, { .name = "LCD0_D21", .type = PROPERTY_PIN, .v.gpio_list = { .gpio = GPIOD(15), .mul_sel = 2, .pull = 0, .drv_level = 3, }, }, { .name = "LCD0_D22", .type = PROPERTY_PIN, .v.gpio_list = { .gpio = GPIOD(16), .mul_sel = 2, .pull = 0, .drv_level = 3, }, }, { .name = "LCD0_D23", .type = PROPERTY_PIN, .v.gpio_list = { .gpio = GPIOD(17), .mul_sel = 2, .pull = 0, .drv_level = 3, }, }, { .name = "LCD0_CLK", .type = PROPERTY_PIN, .v.gpio_list = { .gpio = GPIOD(18), .mul_sel = 2, .pull = 0, .drv_level = 3, }, }, { .name = "LCD0_DE", .type = PROPERTY_PIN, .v.gpio_list = { .gpio = GPIOD(19), .mul_sel = 2, .pull = 0, .drv_level = 3, }, }, { .name = "LCD0_HSYNC", .type = PROPERTY_PIN, .v.gpio_list = { .gpio = GPIOD(20), .mul_sel = 2, .pull = 0, .drv_level = 3, }, }, { .name = "LCD0_VSYNC", .type = PROPERTY_PIN, .v.gpio_list = { .gpio = GPIOD(21), .mul_sel = 2, .pull = 0, .drv_level = 3, }, } }; struct property_t g_lcd1_config[] = { { .name = "lcd_used", .type = PROPERTY_INTGER, .v.value = 0, }, }; struct property_t g_disp_config[] = { { .name = "disp_init_enable", .type = PROPERTY_INTGER, .v.value = 1, }, { .name = "disp_mode", .type = PROPERTY_INTGER, .v.value = 0, /* DISP_INIT_MODE_SCREEN0 */ }, { .name = "screen0_output_type", .type = PROPERTY_INTGER, .v.value = 1, /* DISP_OUTPUT_TYPE_LCD */ }, { .name = "screen0_output_mode", .type = PROPERTY_INTGER, .v.value = 4, }, { .name = "screen0_output_format", .type = PROPERTY_INTGER, .v.value = 0, }, { .name = "screen0_output_bits", .type = PROPERTY_INTGER, .v.value = 0, }, { .name = "screen0_output_range", .type = PROPERTY_INTGER, .v.value = 1, }, { .name = "screen0_output_eotf", .type = PROPERTY_INTGER, .v.value = 4, }, { .name = "screen0_output_cs", .type = PROPERTY_INTGER, .v.value = 257, }, { .name = "screen0_output_dvi_hdmi", .type = PROPERTY_INTGER, .v.value = 2, }, { .name = "screen0_output_scan", .type = PROPERTY_INTGER, .v.value = 0, }, { .name = "screen1_output_type", .type = PROPERTY_INTGER, .v.value = 1, }, { .name = "screen1_output_mode", .type = PROPERTY_INTGER, .v.value = 4, }, }; u32 g_lcd0_config_len = sizeof(g_lcd0_config) / sizeof(struct property_t); u32 g_lcd1_config_len = sizeof(g_lcd1_config) / sizeof(struct property_t); u32 g_disp_config_len = sizeof(g_disp_config) / sizeof(struct property_t);
-
melis里适配RGB屏,DE。CLK没有任何信号
之前在d1上跑melis,适配了mipi的屏参后,点屏成功。
现在换到RGB屏,同样的适配屏参后却没有任何IO信号输出。
请教一下大佬们,在melis系统里RGB屏需要做何修改? -
D1S上面如何跑melis?
前天经过大佬指点已经顺利的将melis跑在D1上了。
现在又切换到D1S上来跑,发现遇到类似问题,跑起来就挂了。
根据当时D1的修改配置方法,在F133的project配置里已经是类似D1上面的配置修改了,但是不知道为啥,还会起来就挂。
下面是启动日志:[142]HELLO! BOOT0 is starting! [144]BOOT0 commit : 889f614 sbi2ekernel =============================================================================================================== | /'\_/`\ (_ ) _ /'_ ) /'_ `\ /' _`\ | | | | __ | | (_) ___ ______ _ _ (_)_) | ( (_) | | ( ) | | | | (_) | /'__`\ | | | |/',__)(______)( ) ( ) _(_ < \__, | | | | | | | | | | |( ___/ | | | |\__, \ | \_/ |( )_) | _ | | _ | (_) | | | (_) (_)`\____)(___)(_)(____/ `\___/'`\____)(_) (_)(_)`\___/' | |version : V3.9.0 | |commitid: 976499a346a3d5d6d80047f3844d1d5c3e37ac55 | |sunxiver: 30800 | |timever : Thu, 04 Nov 2021 20:14:43 +0800 | |compiler: gcc version 8.4.0 (T-HEAD RISCV Tools V1.10.2 B20201104) | |optimal : -Os -g -gdwarf-2 -gstrict-dwarf | |linker : GNU ld (GNU Binutils) 2.32 | |newlibc : 3.0.0 | |author : zhouji | =============================================================================================================== [DBG]: [__mount_parts:0273]: classname=DMS [DBG]: [__mount_parts:0274]: devname=dms01 [DBG]: [__mount_parts:0301]: find last lun. [DBG]: [__mount_parts:0331]: nPart = 1. [DBG]: [__mount_parts:0460]: dmsPart: "DMS\dms010" is linked to symbel "B". [ERR]: [esFSYS_pread:0318]: fs fatal err [ERR]: [esFSYS_pread:0318]: fs fatal err [ERR]: [esFSYS_pread:0318]: fs fatal err [ERR]: [esFSYS_pread:0318]: fs fatal err [DBG]: [esFSYS_mntfs:0317]: devfs,mount on B. [DBG]: [kservice_maintask:0834]: partition [B] plug in.. [DBG]: [__mount_parts:0273]: classname=DISK [DBG]: [__mount_parts:0274]: devname=RAMDISK [DBG]: [__mount_parts:0301]: find last lun. [DBG]: [__mount_parts:0331]: nPart = 1. [DBG]: [__mount_parts:0460]: rawpart: "DISK\RAMDISK0" is linked to symbel "C". [ERR]: [esFSYS_mntfs:0298]: identify the filesystem failure. [ERR]: [cheduler startup [DBG]: [__mount_parts:0273]: classname=DISK [DBG]: [__mount_parts:0274]: devname=ROOTFS [DBG]: [__mount_parts:0301]: find last lun. [DBG]: [__mount_parts:0331]: nPart = 1. [DBG]: [__mount_parts:0460]: rawpart: "DISK\ROOTFS0" is linked to symbel "D". [DBG]: [esFSYS_mntfs:0317]: minfs,mount on D. [DBG]: [kservice_maintask:0834]: partition [D] plug in.. [DBG]: [melis_udisk_part_check:0553]: melis_udisk_part_check 553 copy udisk_buff [DBG]: [__mount_parts:0273]: classname=DISK [DBG]: [__mount_parts:0274]: devname=UDISK [DBG]: [__mount_parts:0301]: find last lun. [DBG]: [__mount_parts:0331]: nPart = 1. [DBG]: [__mount_parts:0423]: rawpart: "DISK\UDISK0" is linked to symbel "E". [ERR]: [esFSYS_mntfs:0298]: identify the filesystem failure. [ERR]: [__mount_parts:0501]: mount E failure. SDC:hal_sdc_create host:0x401b65d8 id:0 [ERR] SDC:name sdc0_d1,port 6,port_num 0,mul_sel 2, pull 1, drv_level 1 [ERR] SDC:name sdc0_d0,port 6,port_num 1,mul_sel 2, pull 1, drv_level 1 [ERR] SDC:name sdc0_clk,port 6,port_num 2,mul_sel 2, pull 1, drv_level 1 [ERR] SDC:name sdc0_cmd,port 6,port_num 3,mul_sel 2, pull 1, drv_level 1 [ERR] SDC:name sdc0_d3,port 6,port_num 4,mul_sel 2, pull 1, drv_level 1 [ERR] SDC:name sdc0_d2,port 6,port_num 5,mul_sel 2, pull 1, drv_level 1 SDC:Not implement __mci_restore_io,793 SDC:Not imp hal_sdc_init,2206 SDC:hal_sdc_init,2239 no imp SDC:hal_sdc_init,2248 no imp SDC:SDC Host Capability:0x3820f Ocr avail:0x3f0000 SDC:Not implement __mci_hold_io,778 SDC:SDC cd_mode:2 present_val:0 SDC:SDC id:0 dma_use:1 present:0 driver version SD/MMC/SDIO Host Controller Driver(v0.28 2021-08-24 16:50) init ok. host_id =0! [ERR]: [hal_ths_init:0094]: 0x2009404, 0x2009400, 0x2009430, 0x2009408 key name:thermal_sensor key size:64 key offset:20 thermal_sensor: 42 01 bb 98 0e b0 9d 01 the cir_master_init success phy_vbase : 0x4200800, usbc_no : 1, efuse : 0x19db00e [usb_new_phy_print][79] reg[DBG]: [console_LKeyDevEvent:0530]: input sys keydev not init! [DBG]: [console_LKeyDevEvent:0530]: input sys keydev not init! 0x1c : 0x4 [usb_new_phy_print][80] reg [DBG]: [console_LKeyDevEvent:0530]: input sys keydev not init! [DBG]: [console_LKeyDevEvent:0530]: input sys keydev not init! 0x30 : 0xcb [usb_new_phy_print][81] reg 0x60 : 0x22b8 [usb_new_phy_print][82] reg 0x40 : 0x8c [usb_new_phy_print][79] reg 0x1c : 0x0 [usb_new_phy_print][80] reg 0x30 : 0x18b [usb_new_phy_print][81] reg 0x60 : 0x22b8 [usb_new_phy_print][82] reg 0x40 : 0x7c [DBG]: [console_LKeyDevEvent:0530]: input sys keydev not init! [DBG]: [console_LKeyDevEvent:0530]: input sys keydev not init! [DBG]: [console_LKeyDevEvent:0530]: input sys keydev not init! [DBG]: [console_LKeyDevEvent:0530]: input sys keydev not init! [DBG]: [console_LKeyDevEvent:0530]: input sys keydev not init! [DBG]: [console_LKeyDevEvent:0530]: input sys keydev not init! [DBG]: [LDR_LoadFile:0247]: filepath = d:\mod\slib.mod. [DBG]: [LDR_LoadFile:0247]: filepath = d:\mod\display.mod. [DBG]: [LDR_LoadFile:0247]: filepath = d:\mod\mixture.mod. [DBG]: [layer_request:0689]: requested: ch:0, id:0 disp_mgr.req_layer_cnt = 1 [DBG]: [mod2drv_layerinfo:0366]: lbc_mode = 0 [ERR]: [open_lcd_backlight:0610]: get backlight err,default to 100 [DBG]: [LDR_LoadFile:0247]: filepath = d:\mod\charset.mod. msh />Execute startup script begin.............. install mod para num [2]: insmod d:\mod\orange.mod [DBG]: [LDR_LoadFile:0247]: filepath = d:\mod\orange.mod. Mod:d:\mod\orange.mod Installed!, mod id=120 install mod para num [2]: insmod d:\apps\desktop.mod [DBG]: [LDR_LoadFile:0247]: filepath = d:\apps\desktop.mod. [DBG]: [DESKTOP_MOpen:0078]: DESKTOP_MOpen. [DBG]: [LDR_LoadFile:0247]: filepath = d:\apps\init.axf. Mod:d:\apps\desktop.mod Installed!, mod id=127 ...............Execute startup script end [DBG]: [msg_srv_init_key_channel:0150]: emit_ctr.h_keyGraber=0x40d6d1a0 [DBG]: [msg_srv_init_key_channel:0161]: LdevID=0 [DBG]: [application_init_process:0836]: & application_init_process enter! & dsk_reg_read_config_file 571 e:\setting.bin eLIBs_fopen fail dsk_reg_init_para 797 config not ok, format e: [DBG]: [esFSYS_mntfs:0317]: fat,mount on E. [DBG]: [kservice_maintask:0834]: partition [E] plug in.. [DBG]: [application_init_process:0854]: application_init_process 854 before live_init [DBG]: [live_init:0040]: ~~~~~~~~~~~~~~before dsk_set_isn_charset~~~~~~~~~~~ [DBG]: [alsa_open_pcm:0218]: open pcm! card:[audiocodec], pcmFlag:[1](0-cap;1-play) [SND_ERR][ksnd_pcm_prepare:2005]unsupport state transform. [DBG]: [dsk_display_set_lcd_brightness:0297]: setting lcd_bright=176 [DBG]: [application_init_process:0862]: application_init_process 862 before gscene_bgd_init [DBG]: [gscene_bgd_is_file_exist:0620]: file is exist:d:\res\bg_default0.jpg [DBG]: [gscene_bgd_init:0130]: bgd_com->screen_size.width = 800 bgd_com->screen_size.height = 480 ftype = 1 [DBG]: [application_init_process:0883]: .start device monitor ....................................... [DBG]: [application_init_process:0891]: application_init_process 891 before init_mainwin_create [DBG]: [dsk_display_set_lcd_brightness:0297]: setting lcd_bright=192 [DBG]: [__hbar_layer_create:0093]: hbar fb 800 46 gui_dir=0 [DBG]: [__hbar_layer_create:0094]: hbar src 0 0 800 46 [DBG]: [__hbar_layer_create:0095]: hbar scn 0 0 800 46 [DBG]: [reset_headbar_data:0273]: xxxxxx para->data.volume = 30 [DBG]: [reset_headbar_data:0277]: xxxxxx bright = 11 [ERR]: [esPINS_ReadPinData:0640]: pin handle is invalid! [DBG]: [application_init_process:0897]: application_init_process 897 before _process_init [DBG]: [applet_info_manager_load_dir:0307]: find dir file d:\apps\phy_vbase : 0x4101800, usbc_no : 0, efuse : 0x19db00e [usb_new_phy_print][79] reg 0x1c : 0x0 [usb_new_phy_print][80] reg 0x30 : 0x18b [usb_new_phy_print][81] reg 0x60 : 0x22b8 [usb_new_phy_print][82] reg 0x40 : 0x7c [usb_new_phy_print][79] reg 0x1c : 0x0 [usb_new_phy_print][80] reg 0x30 : 0x18b [usb_new_phy_print][81] reg 0x60 : 0x22b8 [usb_new_phy_print][82] reg 0x40 : 0x7c desktop\app_root.desktop! [DBG]: [applet_info_manager_load_file:0267]: filename = d:\apps\desktop\app_root.desktop len=124 [DBG]: [__activity_load_common:0395]: load application application://app_root. [DBG]: [LDR_LoadFile:0247]: filepath = d:\apps\app_root.axf. card_detect removed sdmmc_test->card_id=0 [WRN] SD:mmc_card_open card not exit! id:0 card open fail [DBG]: [app_home_create:0657]: ******** enter multi screen home application ************** [DBG]: [gscene_bgd_is_file_exist:0620]: file is exist:d:\res\bg_default0.jpg [DBG]: [gscene_bgd_set_status_show:0170]: bkpic: d:\res\bg_default0.jpg. [DBG]: [LDR_LoadFile:0247]: filepath = d:\mod\vcoder.mod. [DBG]: [mod2drv_layerinfo:0366]: lbc_mode = 0 [ERR]: [Mod_Display_MIoctrl:1771]: no this CMD in display mod [DBG]: [dsktop_scene_get_cur_app:0664]: g_last_desk_app_index:0 [DBG]: [desktop_scene_create:0582]: width = 800, height= 480 [DBG]: [desktop_scene_create:0587]: cur_desk_app_index:0 [DBG]: [GUI_LogicLayerRequest:0527]: src.w = 800 src.h = 480 [DBG]: [layer_request:0689]: requested: ch:1, id:0 disp_mgr.req_layer_cnt = 1 [DBG]: [GUI_LogicLayerRequest:0527]: src.w = 800 src.h = 46 [DBG]: [layer_request:0689]: requested: ch:1, id:1 disp_mgr.req_layer_cnt = 2 [DBG]: [reset_headbar_data:0273]: xxxxxx para->data.volume = 30 [DBG]: [reset_headbar_data:0277]: xxxxxx bright = 11 [DBG]: [app_root_wincreate:4387]: root win = 40eff8f8 [DBG]: [application_init_process:0918]: application_init_process 918 before GUI_GetMessageEx
-
回复: melis中disp驱动问题
@caozilong 在 melis中disp驱动问题 中说:
@geniusgogo 或者你了解到的方案中有其它更好的实现方式,也可以给我们推介一下.
如果disp驱动能将帧同步中断回调开放,并在回调里通知当前正在使用的用户buffer指针,UI framebuffer就能根据这个回调来判断是否可以送下一帧数据,并且可以实现多buffer切换。
类似是底层回调如下接口:void sync_event(void *current_buffer, void *prev_buffer) { }
current_buffer代表正在准备显示的buffer,prev_buffer代表已经显示完的buffer。
-
回复: melis中disp驱动问题
@caozilong 在 melis中disp驱动问题 中说:
@bookos buffer是零拷贝,驱动内部记录是乒乓指针,buffer由应用去分配。
所以,站在这个层面看显示驱动,你不能只分配一个静态framebuffer,而是至少分配两个,然后传指针进去.那这样的话,我又有一个疑问了,问题又回到最初的那个问题“应用不知道底层现在正在刷哪个buffer” 从而可能花屏。
例如:应用分配buffer A/B,第一次显示buffer A,第二次显示buffer B,第三次由于应用不知道前两次显示的是否完成,所以按照应用层交替使用A/B buffer的逻辑,此时又会使用A,而此时底层驱动可能正在刷A,这就导致应用也会同时修改A buffer的数据,造成不同步花屏。
-
回复: melis中disp驱动问题
@caozilong 在 melis中disp驱动问题 中说:
分配了两个buffer,你可以认为是一个pingpong buffer机制,当前写的不是正在显示的那片buffer,两个buffer依赖TCON中断进行同步。
虽然不存在花屏的问题,但是可能存在覆盖的问题,如果你送帧的帧率和TCON刷新率不匹配(太快),可能会覆盖上次还没显示出来的帧。
比如你的帧率要控制在30fps,你就需要通过某种机制保证在这个范围内送帧,误差不要太大, 这方面RTOS做的要比linux 好很多。好的明白了,谢谢!
-
回复: melis中disp驱动问题
@caozilong 在 melis中disp驱动问题 中说:
只需要送帧.由TCON负责同步。你送的帧不一定马上显示出来,要等TCON中断过来,才会真正显示到屏幕上的。
所以你要结合刷新率考虑帧率,帧率上去了,刷新率越大越好,帧率不能超过刷新率,图不变,同样的图刷新多少次,效果是一样的,用户感知不到,自己要有一个帧率的预估,帧率一般由片源决定的,比如30FPS,60FPS等等,帧率要小于刷新率,大于刷新率嗯,感谢解答。
不过依然还有个疑问,送一帧下去后可能上层有开始要送第二帧,如果没法知道底层是否刷完的话,会造成花屏吧? 因为不知道底层刷没刷完。 -
melis中disp驱动问题
现在D1上将melis跑起来了,底层disp驱动也能点亮屏。
遇到下面两个问题想请教一下:- disp驱动如何进行帧同步刷新?
- disp驱动要显示一帧图像就是调用disp_ioctl(DISP_LAYER_SET_CONFIG, (void *)arg); ,请问上层如何知道显示一帧结束从而继续显示下一帧并释放资源?