21.2Linux中的LCD驱动实验(驱动)_csdn
1、修改设备树
1.1、LCD 屏幕使用的 IO 配置
编译:
make uImage LOADADDR=0XC2000040 -j8 //编译内核
复制给内核的镜像路径:
1.2、LDTC 接口节点修改
1.3、输出接口的编写
2、在 panel-simple.c 文件里面添加屏幕参数
显示波浪线是因为alientek_desc 保存参数,这个参数我们并没有写。所以现在要写参数。
static const struct drm_display_mode ATK7016_mode = {.clock = 51200, /* LCD 像素时钟,单位 KHz */.hdisplay = 1024, /* LCD X 轴像素个数 */.hsync_start = 1024 + 140, /* LCD X 轴+hbp 的像素个数 */.hsync_end = 1024 + 140 + 20, /* LCD X 轴+hbp+hspw 的像素个数*/.htotal = 1024 + 140 + 20 + 160,/* LCD X 轴+hbp+hspw+hfp */.vdisplay = 600, /* LCD Y 轴像素个数 */.vsync_start = 600 + 20, /* LCD Y 轴+vbp 的像素个数 */.vsync_end = 600 + 20 + 3, /* LCD Y 轴+vbp+vspw 的像素个数 */.vtotal = 600 + 20 + 3 + 12,/* LCD Y 轴+vbp+vspw+vfp */.vrefresh = 60, /* LCD 的刷新频率为 60HZ */
};static const struct panel_desc alientek_desc = {.modes = &ATK7016_mode,.num_modes = 1,.bus_format = MEDIA_BUS_FMT_RGB888_1X24,
};
如下图所示:
使用编译设备树命令发现:
make dtbs
还有文件中没有定义 backlight
节点,需要添加该节点。后面加。
3、LCD 屏幕背光节点信息
3.1、背光 PWM 节点设置
3.2、backlight 节点设置
现在就可以编译了!
编译:
make dtbs
复制给内核:
4、运行测试
4.1、LCD 屏幕的 DRM 基本测试
4.1.1、配置内核
ST 官方的默认配置已经使能了 DRM 驱动,还是要告诉各位如何配置内核,打开 Linux内核图形化配置界面,按下路径找到对应的配置项:
4.1.2、文件系统使能 libdrm 库
为了避免配置项被清除,要保存一下配置项。
4.1.2、测试
4.2、LCD 屏幕的 FB 基本测试
4.2.1、使能 DRM 驱动的 FB
4.2.2、使能 PL110
4.2.3、使能 Linux logo 显示
4.3、设置 LCD 作为终端控制台
4.3.1、设置 uboot 中的 bootargs
我的是这个:
setenv bootargs 'console=tty1 console=ttySTM0,115200 root=/dev/nfs nfsroot=192.168.136.249:/home/chensir/linux/nfs/rootfs,proto=tcp rw ip=192.168.136.250:192.168.136.249:192.168.136.1:255.255.255.0::eth0:off'
大家可以按照自己的配置来改!
4.3.2、修改/etc/inittab 文件
回车用第三个按键。当时我们配置了第三个黄色按键为回车的!
echo hello linux! > /dev/tty1
4.4、LCD 背光调节
这里我们可以发现,并没有详细讲LCD的驱动源代码怎么写,因为代码数量和联系的结构体太多了,所以我以后会单独讲LCD的驱动代码编写!