全志ARM926 Melis2.0系统的开发指引⑦
全志ARM926 Melis2.0系统的开发指引⑦
- 编写目的
- 11. 调屏
- 11.1. 调屏步骤简介
- 11.1.1. 判断屏接口。
- 11.1.2. 确定硬件连接。
- 11.1.3. 配置显示部分 sys_config.fex
- 11.1.3.1. 配置屏相关 IO
- 11.1.4. Lcd_panel_cfg.c 初始化文件中配置屏参数
- 11.1.4.1. LCD_cfg_panel_info
- 11.1.4.2. LCD_open_flow
- 11.2. 软件配置说明
- 11.2.1. 屏文件说明
- 11.2.2. 开关屏流程
- 11.2.2.1. 开关屏步骤函数说明
- 11.2.2.2. 开关屏流程函数说明
- 11.2.3. 对屏的初始化
- 11.2.3.1. IO 模拟串行接口初始化
- 11.2.3.2. CPU 屏 8080 总线初始化
- 11.2.4. 其它函数
- 11.2.4.1. GPIO 操作函数
- 11.2.4.2. 延时函数
- 11.3. TCON 参数说明
- 11.3.1. 接口参数说明
- 11.3.1.1. lcd_if
- 11.3.1.2. lcd_hv_if
- 11.3.1.3. lcd_hv_smode
- 11.3.1.4. lcd_hv_s888_if
- 11.3.1.5. lcd_hv_syuv_if
- 11.3.1.6. lcd_cpu_if
- 11.3.1.7. lcd_lvds_bitwidth
- 11.3.1.8. lcd_lvds_mode
- 11.3.2. 时序参数说明
- 11.3.2.1. lcd_x
- 11.3.2.2. lcd_y
- 11.3.2.3. lcd_ht
- 11.3.2.4. lcd_hbp
- 11.3.2.5. lcd_vt
- 11.3.2.6. lcd_vbp
- 11.3.2.7. lcd_hv_hspw
- 11.3.2.8. lcd_hv_vspw
- 11.3.2.9. lcd_dclk_freq
- 11.3.2.10. lcd_io_cfg0
- 11.3.3. 其他参数说明
- 11.3.3.1. lcd_pwm_freq
- 11.3.3.2. lcd_gamma_correction_en
- 11.3.3.3. lcd_gamma_tbl
- 11.4. 屏文件实例
- -. 全志相关工具和资源
- -.1 全志固件镜像修改工具 ImageModify.exe 下载
- -.2 全志固件USB刷机工具 PhoenixSuit 下载
- -.3 全志Melis2.0 用户手册.pdf下载
- -.4 全志melis2.0 sdk源码库下载
编写目的
本文档是全志 Melis2.0 系统的开发指引文档,旨在协助开发者了解和掌握 Melis 系统,快速搭建 Melis系统的开发环境,将 Melis2.0 系统应用到产品开发中。

11. 调屏
11.1. 调屏步骤简介
11.1.1. 判断屏接口。
首先要判断屏的接口,是 HV、CPU 还是 LVDS 接口的屏,不同的接口,硬件连线及调屏方法不一样。
1.询问客户、屏厂或则根据屏的规格书等确定。
2.通过硬件连线方式确定。
11.1.2. 确定硬件连接。
不同的接口屏,硬件连接不一样,同一接口的屏,连接方式有几种。
1.根据“屏硬件连接”确认。
2.根据原理图确认屏背光、电源、时钟、复位及扩展 IO 连接。
11.1.3. 配置显示部分 sys_config.fex
11.1.3.1. 配置屏相关 IO
;---------------------------------------------------------------------------------------------------------
; 说明: 脚本中的字符串区分大小写,用户可以修改"="后面的数值,但是不要修改前面的字符串
; 描述gpio的形式:Port:端口+组内序号<功能分配><内部电阻状态><驱动能力><输出电平状态>
; pinName = port:P[A-J]<CFG><PULL><DRV_LEVEL><DATA>
;---------------------------------------------------------------------------------------------------------
[lcd0_para]
lcd_power_used = 0
lcd_power = port:PA0<1><default><default><1>
lcd_bl_en_used = 0
;lcd_pwm_used = 0
;lcd_pwm = port:PE12<4><0><default><default>
;lcdd0 = port:PE0<3><default><default><default>
....
lcdvsync = port:PD21<2><default><default><default>
11.1.4. Lcd_panel_cfg.c 初始化文件中配置屏参数
11.1.4.1. LCD_cfg_panel_info
lcd_panel_para_info(__s32 sel, disp_panel_para *info) 函数中设置相关屏参,包括像素、刷新
率、前后肩、RGB 格式等。
11.1.4.2. LCD_open_flow
根据屏的开屏流程函数 LCD_open_flow(__u32 sel) 修改相关函数:
1.static void LCD_power_on(__u32 sel)使能屏,设置复位时序。
2.自定义 LCD_panel_init(__u32 sel) 函数根据屏写数据的不同接口,调用相关接口,写入初始化代
码。该函数接在 LCD_power_on 函数之后即可。
比如 hv 屏可能需要 spi 或 iic 初始化,用 LP_TX 模式初始化。无需设置初始化代码的屏,不用设置。
11.2. 软件配置说明
11.2.1. 屏文件说明
lcd_panel_cfg.c 文件,定义了 TCON 的参数,开关屏的流程,还有对屏的初始化操作。
对 IO 位置的定义,包括电源控制,配屏使用的 GPIO,以及 LCD 控制器 IO 的定义在 sys_config.fex 中。
函数:LCD_cfg_panel_info
功能:配置 C200S 的 TCON 基本参数
原型:static void LCD_cfg_panel_info(__panel_para_t * info)
参数的定义见“3 TCON 参数说明”。
函数:LCD_open_flow
功能:定义开屏的流程
原型:static __s32 LCD_open_flow(__u32 sel)
具体说明见“2.2 开关屏流程”。
函数:LCD_close_flow
功能:定义关屏的流程
原型:static __s32 LCD_close_flow(__u32 sel)
该函数与 LCD_open_flow 对应
函数:LCD_get_panel_funs_0/ LCD_get_panel_funs_1
功能:
原型:void LCD_get_panel_funs_0(__lcd_panel_fun_t * fun)
初始化注册屏的相关操作。
11.2.2. 开关屏流程
开关屏的常见操作流程如图 2-2 所示。
其中,LCD_open_flow 和 LCD_close_flow 称为开关屏流程函数,方框中的函数,如 LCD_power_on,
TCON_open 等函数,称为开关屏步骤函数。
部分屏不需要写入屏初始化参数,LCD_panel_init 及 LCD_panel_exit 这两个步骤函数(图中紫色框部分)可以省去。

11.2.2.1. 开关屏步骤函数说明
开屏的步骤函数有 LCD_panel_init,TCON_open, LCD_power_on,LCD_bl_open。
函数:LCD_panel_init
功能:对屏初始化
原型:static void LCD_panel_init(__u32 sel)
可参考“2.3 对屏的初始化”。部分屏不需要进行初始化操作,LCD_panel_init 及 LCD_panel_exit 这两个步骤函数可以省去。
函数:TCON_open
功能:打开 F20 TCON
原型:__s32 TCON0_open(__u32 sel)
该函数由显示驱动提供,用户无需实现。
函数:LCD_power_on
功能:打开 LCD 电源
原型:static void LCD_power_on(__u32 sel)
显示驱动提供 LCD_POWER_EN 函数可供调用,用户也可自由实现函数内容。
函数:LCD_bl_open
功能:打开 LCD 背光
原型:static void LCD_bl_open(__u32 sel)
显示驱动提供 LCD_PWM_EN 和 LCD_BL_EN 函数可供调用,用户也可自由实现函数内容。
LCD_PWM_EN,LCD_BL_EN,LCD_POWER_EN 这三个函数是通过 GPIO 控制实现电源和背光的开启关闭,IO 的位置及属性定义在 sys_config.fex 文件中。
函数:LCD_PWM_EN
功能:打开或关闭 LCD 背光调节的 PWM 信号
原型:void LCD_PWM_EN (__u32 sel, __bool b_en)
参数说明:
b_en=0:将 PWM pin 设为输入,并把 PWM 模块关闭
b_en=1:将 PWM pin 设为 PWM,并把 PWM 模块打开
对应于 sys_config.fex 文件的 lcd_pwm。
函数:LCD_BL_EN
功能:打开或关闭 LCD 背光
原型:void LCD_BL_EN (__u32 sel, __bool b_en)
参数说明:
b_en=0:设置 LCD 背光控制 IO 为对应电平,关闭背光
b_en=1:设置 LCD 背光控制 IO 为对应电平,打开背光
对应于 sys_config.fex 文件的 lcd_bl_en;
函数: LCD_POWER_EN
功能:打开或关闭 LCD 电源
原型:void LCD_POWER_EN (__u32 sel, __bool b_en)
参数说明:
b_en=0:设置 LCD 电源控制 IO 为对应电平,关闭 LCD 电源
b_en=1:设置 LCD 电源控制 IO 为对应电平,打开 LCD 电源
对应于 sys_config.fex 文件的 lcd_power。
关屏的步骤函数与开屏的步骤函数相对应。
11.2.2.2. 开关屏流程函数说明
函数:LCD_open_flow
功能:初始化开关屏的步骤流程
原型:static __s32 LCD_open_flow(__u32 sel)
函数常用内容为:
static __s32 LCD_open_flow(__u32 sel)
{LCD_OPEN_FUNC(sel, LCD_power_on,10);LCD_OPEN_FUNC(sel, LCD_panel_init, 50);LCD_OPEN_FUNC(sel, TCON_open, 100);LCD_OPEN_FUNC(sel, LCD_bl_open, 0);return 0;
}
如上,初始化整个开屏的流程步骤为四个:
1、打开 LCD 电源,再延迟 10ms;
2、初始化屏,再延迟 50ms;
3、打开 C200S TCON,再延迟 200ms;
4、打开背光,再延迟 0ms。
LCD_open_flow 函数只会系统初始化的时候调用一次,执行每个 LCD_OPEN_FUNC 即是把对应的开屏步骤函数进行注册,并没有执行该开屏步骤函数。LCD_open_flow 函数的内容必须统一用 LCD_OPEN_FUNC(sel, function, delay_time)进行函数注册的形式,确保正常注册到开屏步骤中。
函数:LCD_OPEN_FUNC
功能:注册开屏步骤函数到开屏流程中
原型:void LCD_OPEN_FUNC(__u32 sel, LCD_FUNC func, __u32 delay)
参数说明:
func 是一个函数指针,其类型是:void (*LCD_FUNC) (__u32 sel),用户自己定义的函数必须也要用统一的形式。比如:
void user_defined_func(__u32 sel)
{//do something}
delay 是执行该步骤后,再延迟的时间,时间单位是毫秒。
11.2.3. 对屏的初始化
一部分屏需要进行初始化操作,在开屏步骤函数中,对应于 LCD_panel_init 函数。在 C200S 中,提供了两种方式对屏的初始化。
一种是通过 8080 总线的方式,使用的是 LCDIO(PD,PH)。这种初始化方式,用于 CPU 屏中,其总线的引脚位置定义与 CPU 屏一致。
一种是 SPI 或 IIC 等串行的方式,使用的是 C200S 的 GPIO 引脚模拟实现。模拟 GPIO 的引脚位置定义见于sys_config.fex 中。
11.2.3.1. IO 模拟串行接口初始化
IO 模拟串行接口初始化可以参考附录中的实例。
IO 的位置(PIN 脚)定义,默认属性(输入输出)定义及默认输出值在 sys_config.fex,具体请参考 2.5.2。
显示驱动提供 3 个接口函数可供使用。说明如下:
函数:LCD_GPIO_read
功能:读取 LCD_GPIO PIN 脚上的电平
原型:__s32 LCD_GPIO_read(__u32 sel,__u32 io_index);
参数说明:
io_index = 0:对应于 sys_config.fex 中的 lcd_gpio_0
io_index = 1:对应于 sys_config.fex 中的 lcd_gpio_1
io_index = 2:对应于 sys_config.fex 中的 lcd_gpio_2
io_index = 3:对应于 sys_config.fex 中的 lcd_gpio_3
函数返回值为对应 IO 的输入电平,只用于该 GPIO 定义为输入的情形。
函数:LCD_GPIO_write
功能:LCD_GPIO PIN 脚上输出高电平或低电平
原型:__s32 LCD_GPIO_write(__u32 sel,__u32 io_index, __u32 data);
参数说明:
io_index = 0:对应于 sys_config.fex 中的 lcd_gpio_0
io_index = 1:对应于 sys_config.fex 中的 lcd_gpio_1
io_index = 2:对应于 sys_config.fex 中的 lcd_gpio_2
io_index = 3:对应于 sys_config.fex 中的 lcd_gpio_3
data = 0:对应 IO 输出低电平
data = 1:对应 IO 输出高电平
只用于该 GPIO 定义为输出的情形。
函数:LCD_GPIO_set_attr
功能:设置 LCD_GPIO PIN 脚为输入或输出模式
原型:__s32 LCD_GPIO_set_attr(__u32 sel,__u32 io_index, __bool b_output);
参数说明:
io_index = 0:对应于 sys_config.fex 中的 lcd_gpio_0
io_index = 1:对应于 sys_config.fex 中的 lcd_gpio_1
io_index = 2:对应于 sys_config.fex 中的 lcd_gpio_2
io_index = 3:对应于 sys_config.fex 中的 lcd_gpio_3
b_output = 0:对应 IO 设置为输入
b_output = 1:对应 IO 设置为输出
11.2.3.2. CPU 屏 8080 总线初始化
CPU 屏的初始化可以参考“附录”的实例。
显示驱动提供 5 个接口函数可供使用。如下:
函数:LCD_CPU_WR
功能:设定 CPU 屏的指定寄存器为指定的值
原型:void LCD_CPU_WR(__u32 sel, __u32 index, __u32 data)
函数内容为
void LCD_CPU_WR(__u32 sel, __u32 index, __u32 data)
{LCD_CPU_WR_INDEX(sel, index);LCD_CPU_WR_DATA(sel, data);
}
实现了 8080 总线上的两个写操作。
LCD_CPU_WR_INDEX 实现第一个写操作,这时 PIN 脚 RS(A1)为低电平,总线数据上的数据内容为参数index 的值。
LCD_CPU_WR_DATA 实现第二个写操作,这时 PIN 脚 RS(A1)为高电平,总线数据上的数据内容为参数data 的值。
函数:LCD_CPU_WR_INDEX
功能:设定 CPU 屏为指定寄存器
原型:void LCD_CPU_WR(__u32 sel, __u32 index, __u32 data)
void LCD_CPU_WR_INDEX(__u32 sel,__u32 index);
具体说明见 LCD_CPU_WR。
函数:LCD_CPU_WR_DATA
功能:设定 CPU 屏寄存器的值为指定的值
原型:void LCD_CPU_WR_DATA(__u32 sel, __u32 data);
具体说明见 LCD_CPU_WR。
函数:LCD_CPU_AUTO_FLUSH
功能:开启 CPU 屏的刷新
原型:void LCD_CPU_AUTO_FLUSH(__u32 sel, __bool en);
参数说明:
en = 1:8080 总线上开始传送显示 BUFFER 的数据,实现 CPU 屏的刷新
函数:LCD_cpu_register_irq
功能:设置 LCD_GPIO PIN 脚为输入或输出模式
原型:void LCD_CPU_register_irq(__u32 sel, void (*Lcd_cpuisr_proc) (void))
注册 cpu 屏的中断处理函数,驱动会在每个 vblanking 中断里调用一下用户注册的中断处理函数
Lcd_cpuisr_proc。
CPU 屏的初始化对应于开屏步骤函数的 LCD_panel_init。在 CPU 屏 LCD_panel_init 函数的最后,需要进行两个操作步骤:
1、使用 LCD_CPU_register_irq 注册 CPU 屏的中断处理函数 Lcd_cpuisr_proc,该函数的内容,可以是CPU 屏 GRAM 的 X 和 Y 坐标设置为零的操作,以保证异步屏每帧进行一次同步。
2、调用 LCD_CPU_AUTO_FLUSH(sel,1)打开显示数据传送。
示例如下:
static void LCD_panel_init(__u32 sel)
{kgm281i0_init(sel); //initial lcd panelkgm281i0_write_gram_origin(sel); //set gram originLCD_CPU_register_irq(sel,Lcd_cpuisr_proc); //resgister cpu irq funcLCD_CPU_AUTO_FLUSH(sel,1); //start sent gram data}
区别于模拟串行接口的初始化,LCD_open_flow 中,CPU 屏的初始化 LCD_panel_init 放在 TCON_open之后,示例如下:
static __s32 LCD_open_flow(__u32 sel)
{LCD_OPEN_FUNC(sel, LCD_power_on,10);LCD_OPEN_FUNC(sel, TCON_open, 100);LCD_OPEN_FUNC(sel, LCD_panel_init, 50);LCD_OPEN_FUNC(sel, LCD_bl_open, 0);return 0;
}
11.2.4. 其它函数
11.2.4.1. GPIO 操作函数
用户有可能有需要自己对某些 GPIO 进行操作,显示驱动封装了几个函数提供给用户,它们屏避了操作系统间的差异,也就是说在不同的操作系统中都可以使用。
函数:OSAL_GPIO_Request
功能:申请 GPIO;
原型:__hdle OSAL_GPIO_Request(user_gpio_set_t *gpio_list, __u32 group_count_max);
参数说明:
gpio_list 为 GPIO 的设置,该结构体如下:
typedef struct
{char gpio_name[32];int port;int port_num;int mul_sel;int pull;int drv_level;int data;
} user_gpio_set_t;
group_count_max: 要设置 GPIO 的个数. 函数返回: 成功返回 GIPO 的句柄, 失败返回 0.
函数:OSAL_GPIO_Release
功能:释放 GPIO. 原型:__s32 OSAL_GPIO_Release(__hdle p_handler, __s32 if_release_to_default_status);
参数说明:
p_handler: GPIO 的句柄.
if_release_to_default_status: 0/1: 表示释放后的GPIO处于输入状态;2: 表示释放后的 GPIO状态不变. 函数返回:成功返回 0, 失败返回错误号
将 GIPO PH6 输出高电平,示例如下:
static void LCD_vcc_on(__u32 sel)
{user_gpio_set_t gpio_list;int hdl;gpio_list.port = 8;// 1:A; 2:B; 3:C; 4:D;5:E;6:F;7:G;8:H.....gpio_list.port_num = 6;gpio_list.mul_sel = 1;gpio_list.pull = 0;gpio_list.drv_level = 0;gpio_list.data = 1;hdl = OSAL_GPIO_Request(&gpio_list, 1);OSAL_GPIO_Release(hdl, 2);
};
11.2.4.2. 延时函数
驱动提供了毫秒和微秒级的延时给用户使用, 不过建议如果延时时间比较长的话可以在开关屏流程里
新添新的函数. 因为在 boot 系统里延时是死等的,效率会比较低;如果放在开关屏流程里的话会启用 timmer去做延时,在延时期间 CPU 可以做其它的工作.
函数:LCD_delay_ms
功能:延时 ms 毫秒
原型:void LCD_delay_ms(__u32 ms)
函数:LCD_delay_us
功能:延时 us 微秒
原型:void LCD_delay_us(__u32 us)
11.3. TCON 参数说明
11.3.1. 接口参数说明
11.3.1.1. lcd_if
设置相应值的对应含义为:
0:HV(RGB 同步屏)接口
1:CPU(8080)接口
2:TTL
3:LVDS 接口
11.3.1.2. lcd_hv_if
Lcd HV panel Interface
这个参数只有在 lcd_if=0 时才有效。定义 RGB 同步屏下的几种接口类型。
设置相应值的对应含义为:
0:Parallel RGB
1:Serial RGB/ Serial YUV
该参数结合 3.1.3 的 lcd_hv_smode 定义了屏的接口类型。
11.3.1.3. lcd_hv_smode
Lcd HV panel Serial Mode
这个参数只有在 lcd_if=0 且 lcd_hv_if=1 时才有效。定义 RGB 同步串行接口屏的类型。
设置相应值的对应含义为:
0:Serial RGB
1:Serial YUV(CCIR656)
RGB 同步屏的接口类型可参考“附录 5.1.1 HV RGB 同步屏接口”。
11.3.1.4. lcd_hv_s888_if
Lcd HV panel Serial RGB output Interface
这个参数只有在 lcd_if=0 且 lcd_hv_if=1 且 lcd_hv_smode=0(Serial RGB)时才有效。
(lcd_hv_s888_if & 0xC)>>2 得到的值,定义了奇数行 RGB 输出的顺序
0: R→G→B
1: B→R→G
2: G→B→R
(lcd_hv_s888_if & 0x3)得到的值,定义了偶数行 RGB 输出的顺序
0: R→G→B
1: B→R→G
2: G→B→R
11.3.1.5. lcd_hv_syuv_if
Lcd HV panel Serial YUV output Interface
这个参数只有在 lcd_if=0 且 lcd_hv_if=2 且 lcd_hv_smode=1(Serial YUV)时才有效。
(lcd_hv_syuv_if & 0xC)>>2 得到的值,定义了 YUV 输出格式
0:YUYV
1:YVYU
2:UYVY
3:VYUY
(lcd_hv_syuv_if & 0x3) 得到的值,定义 CCIR656 编码时 F 相对有效行延迟的行数
0:F toggle right after active video line
1:Delay 2 lines (CCIR NTSC)
2:Delay 3 lines (CCIR PAL)
11.3.1.6. lcd_cpu_if
Lcd CPU panel Interface
这个参数只有在 lcd_if=1 时才有效。
设置相应值的对应含义为:
0:18bit×1cycle parallel (RGB666)
4:16bit×1cycle parallel (RGB565)
5:9bit×2cycle serial (RGB666)
7:8bit×2cycle serial (RGB565)

11.3.1.7. lcd_lvds_bitwidth
Lcd LVDS panel Bit Width
设置相应值对应含义为:
0:24bit
1:18bit
相关说明可参见“附录 5.1.3 LVDS 屏接口”
11.3.1.8. lcd_lvds_mode
Lcd LVDS Mode
这个参数只有在 lcd_lvds_bitwidth=0 时才有效
设置相应值对应含义为:
0:NS mode
1:JEIDA mode
NS mode 和 JEIDA mode 的说明可参见“附录 5.1.3 LVDS 屏接口”。
11.3.2. 时序参数说明
11.3.2.1. lcd_x
显示屏宽的像素个数
11.3.2.2. lcd_y
显示屏高的像素个数
11.3.2.3. lcd_ht
Horizontal Total time
指一行总的 dclk 的 cycle 个数。见图 3-1。

11.3.2.4. lcd_hbp
Horizontal Back Porch
指有效行间,行同步信号(hsync)开始,到有效数据开始之间的 dclk 的 cycle 个数。见图 3-1。
11.3.2.5. lcd_vt
Vertical Total time
指两场的总行数。见图 3-2。

11.3.2.6. lcd_vbp
Vertical Back Porch
指场同步信号(vsync)开始,到有效数据行开始之间的行数。见图 3-2。
11.3.2.7. lcd_hv_hspw
Horizontal Sync Pulse Width
指行同步信号的宽度。单位为 1 个 dclk 的时间(即是 1 个 data cycle 的时间)。
见图 3-1。
11.3.2.8. lcd_hv_vspw
Vertical Sync Pulse Width
指场同步信号的宽度。单位为行。见图 3-2
11.3.2.9. lcd_dclk_freq
Data Clock Frequency
指 PIN 总线上数据的传送频率。单位为 MHz。
屏幕刷新帧数 = (dclk_freq) / (ht×vt/2)
11.3.2.10. lcd_io_cfg0
Lcd IO Configuration0
这个参数提供 RGB 同步屏的相位调节。
lcd_dclk_freq < 40 时,该参数可设置为 0x00000000,0x04000000,0x10000000,0x14000000,
0x20000000,0x24000000,对应 LCD DCLK 的六个不同相位。
lcd_dclk_freq > 40 时,该参数可设置为 0x00000000,0x04000000 对应 LCD DCLK 的两个不同相位。
补充说明 1:hbp 在部分屏规格书的定义里并不包括 hspw。这种情况下,要正确配置 AW 的 TCON,
hbp(aw)=hbp(panel)+hspw(panel)。vbp 的定义同 hbp。
补充说明 2:F20 的 TCON 中,图 3-1 中的 hfp,图 3-2 中的 vfp 不能为 0。
11.3.3. 其他参数说明
11.3.3.1. lcd_pwm_freq
Lcd backlight PWM Frequency
这个参数配置 lcd_pwm 信号的频率,单位为 KHz。 F20 中可以输出的 PWM 频率为 1KHz-100KHz。
11.3.3.2. lcd_gamma_correction_en
Lcd Gamma Correction Enable
设置相应值的对应含义为:
0:TCON 的 Gamma 校正关闭
1:TCON 的 Gamma 校正打开
设置为 1 时,需要对 lcd_gamma_tbl [256]进行赋值。
11.3.3.3. lcd_gamma_tbl
Lcd Gamma Table
该参数为一个数组__u32 lcd_gamma_tbl[256];
lcd_gamma_tbl[n] = rout<<16 | gout<<8 | bout<<0 表示:输入 r=n 时,输出 r=rout;输入 g=n 时,
输出 g=gout;输入 b=n 时,输出 b=bout。
用户使用 Gamma 校正功能时,可以使用函数 lcd_gamma_gen(__panel_para_t * info)对其赋值,函数
内容可自由实现。具体可参考附录中的实例。
11.4. 屏文件实例
路径:\eMod\drv_display\lcd\lcd_bak
-. 全志相关工具和资源
-.1 全志固件镜像修改工具 ImageModify.exe 下载

下载地址:
固件镜像修改工具 ImageModify.exe下载 ImageModify_20230906.rar
-.2 全志固件USB刷机工具 PhoenixSuit 下载

下载地址:
USB刷机工具 PhoenixSuit下载 PhoenixSuit_CN_V1.1.1_20230906.rar
-.3 全志Melis2.0 用户手册.pdf下载
下载地址:
全志Melis2.0 用户手册.pdf下载 documents_20230906_melis_v2.0.rar
-.4 全志melis2.0 sdk源码库下载
下载地址:
全志melis2.0 sdk源码库下载 melis2.0-sdk-release_20230906V2.0.rar
相关文章:
全志ARM926 Melis2.0系统的开发指引⑦
全志ARM926 Melis2.0系统的开发指引⑦ 编写目的11. 调屏11.1. 调屏步骤简介11.1.1. 判断屏接口。11.1.2. 确定硬件连接。11.1.3. 配置显示部分 sys_config.fex11.1.3.1. 配置屏相关 IO 11.1.4. Lcd_panel_cfg.c 初始化文件中配置屏参数11.1.4.1. LCD_cfg_panel_info11.1.4.2. L…...
全志ARM926 Melis2.0系统的开发指引⑧
全志ARM926 Melis2.0系统的开发指引⑧ 编写目的12.5. 应用程序编写12.5.1. 简单应用编写12.5.1.1. 注册应用12.5.1.2. 创建管理窗口12.5.1.3. 实现管理窗口消息处理回调函数12.5.1.4. 创建图层12.5.1.5. 创建 framewin12.5.1.6. 实现 framewin 消息处理回调函数 -. 全志相关工具…...
区别对比表:阿里云轻量服务器和云服务器ECS对照表
阿里云轻量应用服务器和云服务器ECS区别对照表,一看就懂的适用人群、使用场景、优缺点、使用限制、计费方式、网路和镜像系统全方位对比,阿里云服务器网分享ECS和轻量应用服务器区别对照表: 目录 轻量应用服务器和云服务器ECS区别对照表 轻…...
【做题笔记】多项式/FFT/NTT
HDU1402 - A * B Problem Plus 题目链接 大数乘法是多项式的基础应用,其原理是将多项式 f ( x ) a 0 a 1 x a 2 x 2 a 3 x 3 ⋯ a n x n f(x)a_0a_1xa_2x^2a_3x^3\cdotsa_nx^n f(x)a0a1xa2x2a3x3⋯anxn中的 x 10 x10 x10,然后让大数的…...
网课搜题 小猿题库多接口微信小程序源码 自带流量主
多接口小猿题库等综合网课搜题微信小程序源码带流量主,网课搜题小程序, 可以开通流量主赚钱 搭建教程1, 微信公众平台注册自己的小程序2, 下载微信开发者工具和小程序的源码3, 上传代码到自己的小程序 源码下载:https://download.csdn.net/download/m0_…...
centos安装conda python3.10
最新版本的conda自带python3.10,直接安装即可。 手动创建一个conda文件夹,进入该文件夹,然后执行以下操作步骤。 1.下载 curl -O https://repo.anaconda.com/miniconda/Miniconda3-latest-Linux-x86_64.sh2.安装 sh Miniconda3-latest-Linux-x86_64.…...
解密京东面试:如何应对Redis缓存穿透?
亲爱的小伙伴们,大家好!欢迎来到小米的微信公众号,今天我们要探讨一个在面试中可能会遇到的热门话题——Redis缓存穿透以及如何解决它。这个话题对于那些渴望进入技术领域的小伙伴们来说,可是必备的哦! 认识Redis缓存…...
#力扣:1. 两数之和@FDDLC
1. 两数之和 - 力扣(LeetCode) 一、Java import java.util.HashMap;class Solution {public int[] twoSum(int[] nums, int target) { //返回数组HashMap<Integer, Integer> map new HashMap<>(); //键:元素值;值&…...
【小沐学Python】各种Web服务器汇总(Python、Node.js、PHP、httpd、Nginx)
文章目录 1、Web服务器2、Python2.1 简介2.2 安装2.3 使用2.3.1 http.server(命令)2.3.2 socketserver2.3.3 flask2.3.4 fastapi 3、NodeJS3.1 简介3.2 安装3.3 使用3.3.1 http-server(命令)3.3.2 http3.3.3 express 4、PHP4.1 简…...
【AI视野·今日Robot 机器人论文速览 第四十六期】Tue, 3 Oct 2023
AI视野今日CS.Robotics 机器人学论文速览 Tue, 3 Oct 2023 Totally 76 papers 👉上期速览✈更多精彩请移步主页 Interesting: 📚Aerial Interaction with Tactile, 无人机与触觉的结合,实现空中交互与相互作用。(from CMU) website&#…...
macOS三种软件安装目录以及环境变量优先级
一、系统自带应用 这些软件(以git为例)位于根目录下的/usr/bin/xxx,又因为系统级环境变量文件/etc/paths已指定了命令查找位置: /usr/local/bin /System/Cryptexes/App/usr/bin /usr/bin /bin /usr/sbin /sbin所以这些自带应用可…...
嵌入式Linux裸机开发(一)基础介绍及汇编LED驱动
系列文章目录 文章目录 系列文章目录前言IMX6ULL介绍主要资料IO表现形式 汇编LED驱动原理图初始化流程时钟设置IO复用设置电气属性设置使用GPIO 编写驱动编译程序编译.o文件地址链接.elf格式转换.bin反汇编(其他) 综合成Makefile完成一步编译烧录程序imx…...
企业微信机器人对接GPT
现在网上大部分微信机器人项目都是基于个人微信实现的,常见的类库都是模拟网页版微信接口。 个人微信作为我们自己日常使用的工具,也用于支付场景,很怕因为违规而被封。这时,可以使用我们的企业微信机器人,利用企业微信…...
【数据结构】排序(1) ——插入排序 希尔排序
目录 一. 直接插入排序 基本思想 代码实现 时间和空间复杂度 稳定性 二. 希尔排序 基本思想 代码实现 时间和空间复杂度 稳定性 一. 直接插入排序 基本思想 把待排序的记录按其关键码值的大小依次插入到一个已经排好序的有序序列中,直到所有的记录插入完为止&…...
Python 列表推导式深入解析
Python 列表推导式深入解析 列表推导式是 Python 中的一种简洁、易读的方式,用于创建列表。它基于一个现有的迭代器(如列表、元组、集合等)来生成新的列表。 基本语法: 列表推导式的基本形式如下: [expression for…...
信息学奥赛一本通-编程启蒙3103:练18.3 组别判断
3103:练18.3 组别判断 时间限制: 1000 ms 内存限制: 65536 KB 提交数: 1963 通过数: 1418 【题目描述】 信息学课上要同学分组做期末报告,分组的方式为依座号顺序,每 3个人一组。如:1, 2, 3 为第一组,4, …...
C++ primer plus--探讨 C++ 新标准
18 探讨 C 新标准 18.1 复习前面介绍过的 C11 功能 (1)C11 扩大了列表初始化的适用范围,使用初始化列表时,可以不加等号。 int x {5}; float y {1.1}; short arr[5] {1, 2, 3, 4, 5}; int* ar new int[4] {1, 2, 3, 4}; vect…...
2023版 STM32实战6 输出比较(PWM)包含F407/F103方式
输出比较简介和特性 -1-只有通用/高级定时器才能输出PWM -2-占空比就是高电平所占的比例 -3-输出比较就是输出不同占空比的信号 工作方式说明 -1-1- PWM工作模式 -1-2- 有效/无效电平 有效电平可以设置为高或低电平,是自己配置的 周期选择与计算 周期重…...
选择排序算法:简单但有效的排序方法
在计算机科学中,排序算法是基础且重要的主题之一。选择排序(Selection Sort)是其中一个简单但非常有用的排序算法。本文将详细介绍选择排序的原理和步骤,并提供Java语言的实现示例。 选择排序的原理 选择排序的核心思想是不断地从…...
安卓教材学习
文章目录 教材学习第一行代码 Android 第3版环境配置gradle配置下载包出现问题 教材学习 摘要:选了几本教材《第一行代码 Android 第3版》,记录一下跑案例遇到的问题,和总结一些内容。 第一行代码 Android 第3版 环境配置 gradle配置 gradl…...
KubeSphere 容器平台高可用:环境搭建与可视化操作指南
Linux_k8s篇 欢迎来到Linux的世界,看笔记好好学多敲多打,每个人都是大神! 题目:KubeSphere 容器平台高可用:环境搭建与可视化操作指南 版本号: 1.0,0 作者: 老王要学习 日期: 2025.06.05 适用环境: Ubuntu22 文档说…...
LBE-LEX系列工业语音播放器|预警播报器|喇叭蜂鸣器的上位机配置操作说明
LBE-LEX系列工业语音播放器|预警播报器|喇叭蜂鸣器专为工业环境精心打造,完美适配AGV和无人叉车。同时,集成以太网与语音合成技术,为各类高级系统(如MES、调度系统、库位管理、立库等)提供高效便捷的语音交互体验。 L…...
synchronized 学习
学习源: https://www.bilibili.com/video/BV1aJ411V763?spm_id_from333.788.videopod.episodes&vd_source32e1c41a9370911ab06d12fbc36c4ebc 1.应用场景 不超卖,也要考虑性能问题(场景) 2.常见面试问题: sync出…...
SkyWalking 10.2.0 SWCK 配置过程
SkyWalking 10.2.0 & SWCK 配置过程 skywalking oap-server & ui 使用Docker安装在K8S集群以外,K8S集群中的微服务使用initContainer按命名空间将skywalking-java-agent注入到业务容器中。 SWCK有整套的解决方案,全安装在K8S群集中。 具体可参…...
Docker 运行 Kafka 带 SASL 认证教程
Docker 运行 Kafka 带 SASL 认证教程 Docker 运行 Kafka 带 SASL 认证教程一、说明二、环境准备三、编写 Docker Compose 和 jaas文件docker-compose.yml代码说明:server_jaas.conf 四、启动服务五、验证服务六、连接kafka服务七、总结 Docker 运行 Kafka 带 SASL 认…...
基于uniapp+WebSocket实现聊天对话、消息监听、消息推送、聊天室等功能,多端兼容
基于 UniApp + WebSocket实现多端兼容的实时通讯系统,涵盖WebSocket连接建立、消息收发机制、多端兼容性配置、消息实时监听等功能,适配微信小程序、H5、Android、iOS等终端 目录 技术选型分析WebSocket协议优势UniApp跨平台特性WebSocket 基础实现连接管理消息收发连接…...
(二)TensorRT-LLM | 模型导出(v0.20.0rc3)
0. 概述 上一节 对安装和使用有个基本介绍。根据这个 issue 的描述,后续 TensorRT-LLM 团队可能更专注于更新和维护 pytorch backend。但 tensorrt backend 作为先前一直开发的工作,其中包含了大量可以学习的地方。本文主要看看它导出模型的部分&#x…...
Qt Http Server模块功能及架构
Qt Http Server 是 Qt 6.0 中引入的一个新模块,它提供了一个轻量级的 HTTP 服务器实现,主要用于构建基于 HTTP 的应用程序和服务。 功能介绍: 主要功能 HTTP服务器功能: 支持 HTTP/1.1 协议 简单的请求/响应处理模型 支持 GET…...
Android15默认授权浮窗权限
我们经常有那种需求,客户需要定制的apk集成在ROM中,并且默认授予其【显示在其他应用的上层】权限,也就是我们常说的浮窗权限,那么我们就可以通过以下方法在wms、ams等系统服务的systemReady()方法中调用即可实现预置应用默认授权浮…...
JVM暂停(Stop-The-World,STW)的原因分类及对应排查方案
JVM暂停(Stop-The-World,STW)的完整原因分类及对应排查方案,结合JVM运行机制和常见故障场景整理而成: 一、GC相关暂停 1. 安全点(Safepoint)阻塞 现象:JVM暂停但无GC日志,日志显示No GCs detected。原因:JVM等待所有线程进入安全点(如…...
