XuSenfeng

个人站

复读了,更新随缘,有的文件不全或者图片缺失具体看我的笔记库(https://github.com/XuSenfeng/note)


LCD

目录

LCD屏幕

Framebuffer设备

RGBLCD屏幕

framebuffer为Linux显示模拟出来的显存, 允许程序直接对显存进行读写, 应用程序操作显存的机制

系统会虚拟出来fbX这样的设备, 对设备进行操作即可

lcdif: lcdif@021c8000 {
    compatible = "fsl,imx6ul-lcdif", "fsl,imx28-lcdif";
    reg = <0x021c8000 0x4000>;
    interrupts = <GIC_SPI 5 IRQ_TYPE_LEVEL_HIGH>;
    clocks = <&clks IMX6UL_CLK_LCDIF_PIX>,
    <&clks IMX6UL_CLK_LCDIF_APB>,
    <&clks IMX6UL_CLK_DUMMY>;
    clock-names = "pix", "axi", "disp_axi";
    status = "disabled";
};

驱动文件为mxsfb.c文件, 为paltfoem驱动框架,

framebuffer在内核中的表现就是fb_info结构体, 屏幕驱动重点就是初始化fb_info中的各种变量, 之后通过register_framebuffer向内核注册实现的结构体

卸载的时候调用unregister_framebuffer卸载之前注册的结构体

实现

驱动lcd正常可以配置显示一个企鹅logo, 可以在图形界面配置

Device Drivers —>Graphics support —>logo

设备树设置

引脚和官方的一样, 但是需要改电气属性, 97->49修改驱动能力

&lcdif {
	pinctrl-names = "default";
	pinctrl-0 = <&pinctrl_lcdif_dat
		     &pinctrl_lcdif_ctrl>;
	display = <&display0>;
	status = "okay";

	display0: display {
		bits-per-pixel = <32>;
		bus-width = <24>;

		display-timings {
			native-mode = <&timing0>;
			timing0: timing0 {
			clock-frequency = <51200000>;
			hactive = <1024>;
			vactive = <600>;
			hfront-porch = <160>;
			hback-porch = <140>;
			hsync-len = <20>;
			vback-porch = <20>;
			vfront-porch = <12>;
			vsync-len = <3>;

			hsync-active = <0>;
			vsync-active = <0>;
			de-active = <1>;
			pixelclk-active = <0>;
			};
		};
	};
};

实现显示器作为输出

修改文件/etc/inittab

#etc/inittab
::sysinit:/etc/init.d/rcS
console::askfirst:-/bin/sh
tty1::askfirst:-/bin/sh
::restart:/sbin/init     
::ctrlaltdel:/sbin/reboot   
::shutdown:/bin/umount -a -r
::shutdown:/sbin/swapoff -a

tty指的是当前终端, /dev/tty0代表当前虚拟控制台,而/dev/tty1等代表第一个虚拟控制台, tty0, tty1,tty2等是虚拟的“终端”,它有输入、输出功能

uboot

=> print bootargs
bootargs=console=ttymxc0,115200 root=/dev/mmcblk1p2 rootwait rw
=> setenv bootargs 'console=tty1 console=ttymxc0,115200 root=/dev/mmcblk1p2 rootwait rw'
=> saveenv
Saving Environment to MMC...
Writing to MMC(1)... done
=> boot

ttymxc0是NXP公司的串口节点

设置

背光

/sys/devices/platform/backlight/backlight/backlight

自动息屏

drivers/tty/vt/vt.c这个文件,在此文件中找到blankinterval变量, 在181行