当前位置: 首页 > web >正文

21.2Linux中的LCD驱动实验(驱动)_csdn

1、修改设备树

Pasted image 20250421125525.png

1.1、LCD 屏幕使用的 IO 配置

Pasted image 20250421125635.png
Pasted image 20250421125655.png
Pasted image 20250421125718.png
Pasted image 20250421125738.png
Pasted image 20250421131002.png
编译:

			make uImage LOADADDR=0XC2000040 -j8 //编译内核
复制给内核的镜像路径:

Pasted image 20250406102926.png
Pasted image 20250406103009.png

1.2、LDTC 接口节点修改

Pasted image 20250421132242.png
Pasted image 20250421132424.png
Pasted image 20250421133310.png

1.3、输出接口的编写

Pasted image 20250421132753.png
Pasted image 20250421133629.png

2、在 panel-simple.c 文件里面添加屏幕参数

Pasted image 20250421133907.png
Pasted image 20250421134316.png
显示波浪线是因为alientek_desc 保存参数,这个参数我们并没有写。所以现在要写参数。
Pasted image 20250421134506.png

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,
};

如下图所示:
Pasted image 20250421134759.png
使用编译设备树命令发现:

make dtbs

还有文件中没有定义 backlight 节点,需要添加该节点。后面加。
Pasted image 20250421135129.png

3、LCD 屏幕背光节点信息

3.1、背光 PWM 节点设置

Pasted image 20250421135426.png
Pasted image 20250421135441.png
Pasted image 20250421135545.png
Pasted image 20250421135607.png
Pasted image 20250421135914.png
Pasted image 20250421135959.png
Pasted image 20250421140041.png

3.2、backlight 节点设置

Pasted image 20250421140323.png
Pasted image 20250421140411.png
Pasted image 20250421140509.png
Pasted image 20250421140634.png
Pasted image 20250421140740.png
Pasted image 20250421140837.png
现在就可以编译了!
编译:

			make dtbs

复制给内核:
Pasted image 20250406103715.png
Pasted image 20250406103009.png

4、运行测试

4.1、LCD 屏幕的 DRM 基本测试

4.1.1、配置内核

ST 官方的默认配置已经使能了 DRM 驱动,还是要告诉各位如何配置内核,打开 Linux内核图形化配置界面,按下路径找到对应的配置项:
Pasted image 20250421141607.png
Pasted image 20250421141652.png
Pasted image 20250421141708.png

4.1.2、文件系统使能 libdrm 库

Pasted image 20250421142554.png
Pasted image 20250421144945.png
为了避免配置项被清除,要保存一下配置项。
Pasted image 20250421145041.png

4.1.2、测试

Pasted image 20250421145122.png
Pasted image 20250421145210.png
Pasted image 20250421145228.png
Pasted image 20250421145246.png
Pasted image 20250421145258.png
Pasted image 20250421145329.png
Pasted image 20250421145342.png

4.2、LCD 屏幕的 FB 基本测试

Pasted image 20250421150325.png

4.2.1、使能 DRM 驱动的 FB

Pasted image 20250421150409.png

4.2.2、使能 PL110

Pasted image 20250421150442.png

4.2.3、使能 Linux logo 显示

Pasted image 20250421150516.png
Pasted image 20250421150916.png
Pasted image 20250421150933.png

4.3、设置 LCD 作为终端控制台

Pasted image 20250421154510.png

4.3.1、设置 uboot 中的 bootargs

Pasted image 20250421154543.png
Pasted image 20250421154556.png
我的是这个:

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 文件

Pasted image 20250421155257.png
Pasted image 20250421155550.png
回车用第三个按键。当时我们配置了第三个黄色按键为回车的!

echo hello linux! > /dev/tty1

Pasted image 20250421155738.png

4.4、LCD 背光调节

Pasted image 20250421155919.png
Pasted image 20250421160134.png
Pasted image 20250421160223.png
Pasted image 20250421160316.png
Pasted image 20250421160349.png
这里我们可以发现,并没有详细讲LCD的驱动源代码怎么写,因为代码数量和联系的结构体太多了,所以我以后会单独讲LCD的驱动代码编写!

http://www.xdnf.cn/news/3409.html

相关文章:

  • 【大模型】图像生成:ESRGAN:增强型超分辨率生成对抗网络的革命性突破
  • 二叉树删除结点详细代码
  • 计算机视觉(CV)技术的优势和挑战(本片为InsCode)
  • OpenGL-ES 学习(9) ---- OpenGL-ES 简介和基本 Pipeline
  • 如何通过日志在本地调试LangChain编写的程序?
  • 《跨越边界:探索跨端框架中通用状态管理方案设计》
  • Android面试总结之GC算法篇
  • 如何将 VS Code 与 Linux 系统高效连接:从入门到进阶
  • 学习笔记:Qlib 量化投资平台框架 — MAIN COMPONENTS Part Ⅳ
  • 【HarmonyOS】作业三 UI
  • CMake管理外部依赖的模块
  • 普通 html 项目也可以支持 scss_sass
  • 一个linux系统电脑,一个windows电脑,怎么实现某一个文件夹共享
  • 使用Delphi 和 CrossVcl 开发基于VCL的 macOS 和 Linux 应用程序简介
  • C++11新的特性
  • 基本功能学习
  • 从 Python 基础到 Django 实战 —— 数据类型驱动的 Web 开发之旅
  • 系统思考:企业效率提升关键
  • Unity动态列表+UniTask异步数据请求
  • 如何测试调用RagFlow的API功能
  • 《社交类应用开发:React Native与Flutter的抉择》
  • 【Java】HashMap
  • JGA811Ⅱ大气污染治理实训平台实验装置
  • Python学习笔记(第三部分)
  • (007)Excel 公式的使用
  • 【Machine Learning Q and AI 读书笔记】- 04 彩票假设
  • Linux系统中升级GNU Make构建工具版本至4.4.1
  • 深入解析Session与Cookie:从HTTP无状态到现代会话管理
  • 【树莓派Pico FreeRTOS】-FreeRTOS-SMP移植
  • MySQL事务隔离级别详解