
LCD
文章平均质量分 62
imx6ull LCD知识学习
习惯就好zz
一个无趣的人
展开
-
单Buffer的缺点和改进方法
应用程序会把要显示的内容写到缓存区中,LCD的控制器会把要显示的内容,屏幕上的每个像素对应一个单Buffer的缺点如果App速度很慢,可以看到它在LCD上缓慢绘制图案即使App速度很高,LCD控制器不断从Framebuffer中读取数据来显示,而App不断把数据写入Framebuffer假设App想把Lcd显示为整屏幕的蓝色、红色很大几率出现这种情况:LCD控制器读取Framebuffer数据,读到一半时,在LCD上显示了半个屏幕的蓝色这是App非常高效地把整个Framebuffer地.原创 2021-10-17 16:03:26 · 491 阅读 · 0 评论 -
rk3288 基于内核分析IMX6ULL的LCD驱动
一、驱动程序框架Linux驱动程序 = 驱动程序框架 + 硬件编程之前已经学习了在QEMU编写了LCD驱动程序,其主要是包括了分配fb_info设置fb_info注册fb_info硬件相关的设置:重点在引脚设置、时钟设置、LCD相关的寄存器设置(frame_buffer格式,地址等)找内核对应板子的驱动程序编译好内核后,在driver/video/fbdev/目录下找.o文件。用到的肯定会被编译。在menuconfig里的graphic->framebuffer下找对应的配置,原创 2021-07-08 10:17:19 · 609 阅读 · 0 评论 -
rk3288 lcd驱动框架编写
编写前的准备可以参考的代码:drivers\video\fbdev\s3c2410fb.c基本思路在init函数中:分配fb_info设置fb_info设置var参数设置fix参数设置fbops参数注册fb_info在exit函数中:卸载fb_info清空fb_info相关函数framebuffer_alloc,include/linux/fb.h/** * framebuffer_alloc - creates a new frame buffer info原创 2021-06-09 22:19:29 · 294 阅读 · 0 评论 -
imx6ull lcd驱动编写
一、LCD驱动框架编写二、LCD引脚配置使用pinctrl配置LCD引脚使用GPIO子系统控制背光i.MX Pins Tool下载并安装i.MX Pins Tool v6工具,打开配置文件。该软件可以点击某个引脚,配置对应的功能,就可以生成设备树代码 。如何配置LCD引脚的功能需要知道哪些引脚需要配置(看原理图)需要知道这些引脚应该配置成什么B_LCD_DATAXXX:这24位的数据引脚肯定需要配置成LCD的功能B_LCD_VSYNC:列同步信号B_LCD_HSYNC:水平同步原创 2021-07-11 13:10:27 · 1047 阅读 · 2 评论 -
rk3288 8080lcd时序分析和TFT-RGB接口
一、LCD-8080接口原理图原理图如下所示:8080lcd是一个完整的模块,它包含之前讲的LCD控制器,LCD显存,LCD屏幕。对外的接口包括DataBus、Read信号、Write信号、地址/命令信号、CS信号8080写时序一开始写引脚是高电平,当MCU要写LCD时,写引脚拉低。同时MCU开始传输数据,随着时间推移,当写引脚拉高后,LCD会去读取数据,经过一段时间MCU数据不用维持电平了。这些间隔时间取决于LCD的性能。lcd控制器的时序图因为在LCD规格书中并没有时序图,所以在LCD的控原创 2021-06-23 21:38:15 · 2748 阅读 · 2 评论 -
rk3288 单Buffer的缺点与改进方法
参考资料imx6ull驱动源码: linux-4.9.88/drivers/video/fbdev/mxsfb.c单Buffer的缺点如果App速度很慢,可以看到它在LCD上缓慢绘制图案计时App速度很高,LCD控制器不断从Framebuffer中读取数据来显示,而App不断把数据写入Framebuffer假设App想把LCD显示为整屏幕的蓝色、红色很大概率不限这种情况:LCD控制器速度Framebuffer数据,读到一半时,在LCD上显示了半屏幕的蓝色这是App非常高效地把整个Fra原创 2021-08-04 11:13:43 · 306 阅读 · 0 评论 -
rk3288 使用函数获取设备树节点
对于不同的LCD控制器,不同的LCD有不同的参数配置,所以需要配置为不同的代码。在LCD数据手册中有一个表格,说明了LCD的时许要求:在设备树里指定LCD参数 framebuffer-mylcd { compatible = "100ask,lcd_drv"; pinctrl-names = "default"; pinctrl-0 = <&mylcd_pinctrl>; backlight-gpios = <&gpio1 8 G原创 2021-07-27 20:53:19 · 575 阅读 · 0 评论 -
rk3288 调试imx6ull的lcd驱动
要做的事情去除内核自带的驱动程序加入我们编写的驱动程序、设备树文件重新编译内核、设备树上机测试: 使用编译出来的内核、设备树启动板子调试后的代码lcd_drv.h#ifndef __LCD_DRV_H_#define __LCD_DRV_H_struct imx6ull_lcdif{ volatile unsigned int CTRL; volatile unsigned int CTRL_SET; volatile unsigned int CTRL_CLR; volat原创 2021-08-01 19:26:33 · 677 阅读 · 0 评论 -
rk3288 基于qemu学习lcd驱动
qemu中的LCD相关的芯片手册100ask修改了qemu的源码,实现了一个虚拟的LCD控制器,只有4个寄存器地址寄存器说明0x021C8000fb_base_phys用于设置Framebuffer的物理地址0x021C8004fb_xres用于设置Framebuffer的X方向分辨率0x021C8008fb_yres用于设置Framebuffer的Y方向分辨率0x021C800Cfb_bpp用于设置Framebuffer中像素的位宽使用qe原创 2021-06-20 16:52:13 · 1094 阅读 · 0 评论 -
rk3288 imx6ull的LCD控制器
一、LCD控制器模块学习1.1 芯片手册的概要信息The eLCDIF block supports the following:• Displays with an asynchronous parallel MPU interface for command and data transfer to an integrated frame buffer. (8080接口)• Displays that support moving pictures and require the RGB int原创 2021-06-26 16:32:13 · 821 阅读 · 0 评论 -
rk3288 设置imx6ull的lcd控制器的寄存器
使用参数设置LCD控制器根据芯片手册,一个一个设置寄存器:Framebuffer地址设置(基地址)Framebuffer中数据格式设置LCD时序参数设置LCD引脚极性设置主要是根据imx6ull的芯片手册一个一个设置相关的寄存器,也没有什么取巧的办法。static void lcd_controller_enable(struct imx6ull_lcdif *lcdif){ lcdif->CTRL |= (1<<0);}static int lcd_contr原创 2021-08-01 18:31:00 · 392 阅读 · 0 评论 -
rk3288 imx6ull的lcd驱动时钟设置
imx6ull的时钟设置axi时钟pixel时钟bus clock来自apb_clk,display clock来自pix_clkBUS CLOCK用来给芯片提供时钟,DISPLAY CLOCK用来给LCD提供时钟。使用设备树设置时钟在arch/arm/boot/dts/imx6ull.dtsi文件中有: lcdif: lcdif@021c8000 { compatible = "fsl,imx6ul-lcdif", "fsl,imx2原创 2021-07-11 15:03:17 · 615 阅读 · 2 评论 -
rk3288 基于App分析LCD驱动程序
LCD硬件原理lcd去显存里取出数据,然后作用到屏幕上。一旦设置好了LCD控制器,一旦分配好了显存,就什么都不用管了,当数据写入显存后,剩下的自己会做好。应用程序需要做获得的信息;显存的基地址一个像素的格式这些信息得由驱动程序提供。open函数//在fb-test.c中int main(int argc, char **argv){ int opt; int req_fb = 0; int req_pattern = 0; printf("fb-test %d.%d.%d原创 2021-06-20 20:56:35 · 338 阅读 · 0 评论 -
rk3288 framebuffer驱动框架学习
Framebuffer驱动程序框架首先framebuffer是一个字符驱动设备,它分为上下两层:fbmem.c:中间承上启下实现、注册file_operation结构体把App的调用向下转发到具体的硬件驱动程序xxxx_fb.c:硬件相关的驱动程序实现、注册fb_info结构体实现硬件操作在文件drivers/video/fbdev/core/fbmem.c中,有fbmem_init函数static int __initfbmem_init(void){ proc_c原创 2021-06-06 21:59:42 · 636 阅读 · 0 评论 -
rk3288 单片机和Linux不同接口的LCD硬件操作原理
应用中需要的LCD知识LCD是由一个一个的像素点组成的,每行有x个像素点,每列有y个像素点,分辨率是x*y。只要控制了任意一个像素的颜色,就可以在LCD上绘制文字、图片。![lcd](https://img-blog.csdnimg.cn/20210606120845710.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2NoMTIyNjMz,原创 2021-06-06 14:01:28 · 555 阅读 · 0 评论