Linux第100步_Linux之设置LCD作为终端控制台和LCD背光调节
KMS是Kemmel Mode Setting的缩写,内核显示模式设置。它主要负责显示的控制,包括屏幕分辨率、屏幕刷新率和颜色深度等等。
CRTC是指显示控制器,在DRM里有多个显存,通过操作CRTC来控制要显示那个显存。
KMS包含了FB框架。DRM驱动默使用CRTC来控制,CRTC是可以模仿FB框架,实现使用FB接口。
1、使能DRM的FB支持
1)、打开终端。
2)、输入“cd linux/atk-mp1/linux/my_linux/linux-5.4.31/回车”,切换到“linux/atk-mp1/linux/my_linux/linux-5.4.31/”目录;
3)、输入“make menuconfig回车”,打开linux内核图形化配置界面:

4)、移动“向下光标”至“Device Drivers”,得到下图:

5)、按“回车键”,移动“向下光标”至“Graphics support”,得到下图:

6)、按“回车键”,移动“向下光标”至“Direct Rendering Manager (XFree86 4.1.0 and higher DRI support”,得到下图:

7)、按“回车键”,移动“向下光标”至“Enable legacy fbdev support for your modesetting driver”,按下“Y键”(使能DRM的FB支持),得到下图:

8)、先“保存”,按“TAB键”至“Save”,按下“回车键”,得到下面的界面。

9)、输入“./arch/arm/configs/stm32mp1_atk_defconfig”,移动“向下光标键”至“Ok”,得到下图:

10)、按“回车键”,保存完成。得到下面的界面。

11)、按“回车键”,退出保存界面。
2、使能PL110
1)、移动“光标”至“Exit”,直到出现下面的界面:

2)、按“回车键”,移动“向下光标”至“Frame buffer Devices”,得到下图:

3)、按“回车键”,移动“向下光标”至“Support for frame buffer devices”,按“Y键”,得到下图:

4)、先“保存”,按“TAB键”至“Save”,按下“回车键”,得到下面的界面。

5)、输入“./arch/arm/configs/stm32mp1_atk_defconfig”,移动“向下光标键”至“Ok”,得到下图:

6)、按“回车键”,保存完成。得到下面的界面。

7)、按“回车键”,退出保存界面。
再次按“回车键”,移动“向下光标”至“ARM PrimeCell PL110 support”,按“Y键”(选中,支持 选中,支持 /dev/fb0),得到下图:

8)、先“保存”,按“TAB键”至“Save”,按下“回车键”,得到下面的界面。

9)、输入“./arch/arm/configs/stm32mp1_atk_defconfig”,移动“向下光标键”至“Ok”,得到下图:

10)、按“回车键”,保存完成。得到下面的界面。

11)、按“回车键”,退出保存界面。
3、使能Linux logo显示
1)、移动“光标”至“Exit”,直到出现下面的界面:

2)、按“回车键”,移动“向下光标”至“Bootup logo”,按“Y键”,得到下图:
3)、先“保存”,按“TAB键”至“Save”,按下“回车键”,得到下面的界面。

4)、输入“./arch/arm/configs/stm32mp1_atk_defconfig”,移动“向下光标键”至“Ok”,得到下图:

5)、按“回车键”,保存完成。得到下面的界面。

6)、按“回车键”,退出保存界面,得到下面的界面:

7)、再次按“回车键”,得到下图:

8)、移动向下光标,按“Y键”,选中“Standard black and white Linux logo”;
移动向下光标,按“Y键”,选中“Standard 16-color Linux logo”;
移动向下光标,按“Y键”,选中“Standard 224-color Linux logo”;
9)、先“保存”,按“TAB键”至“Save”,按下“回车键”,得到下面的界面。

10)、输入“./arch/arm/configs/stm32mp1_atk_defconfig”,移动“向下光标键”至“Ok”,得到下图:

11)、按“回车键”,保存完成。得到下面的界面。

12)、按“回车键”,退出保存界面。然后按“ESC键”,直到得到下面的界面:

13)、输入“make stm32mp1_atk_defconfig回车”,注意:如果忘记执行,可能再次打开时会发现“.config”没有被更新,得到下图:

5、编译设备树
①在终端,输入“make uImage dtbs LOADADDR=0XC2000040 -j8回车”,执行编译“Image”和“dtbs”,并指定装载的起始地址为0XC2000040,j8表示指定采用8线程执行。“make dtbs”,用来指定编译设备树。见下图:

②输入“ls arch/arm/boot/uImage -l”
查看是否生成了新的“uImage”文件
③输入“ls arch/arm/boot/dts/stm32mp157d-atk.dtb -l”
查看是否生成了新的“stm32mp157d-atk.dtb”文件
4)、拷贝输出的文件:
①输入“cp arch/arm/boot/uImage /home/zgq/linux/atk-mp1/linux/bootfs/ -f回车”,执行文件拷贝,准备烧录到EMMC;
②输入“cp arch/arm/boot/dts/stm32mp157d-atk.dtb /home/zgq/linux/atk-mp1/linux/bootfs/ -f回车”,执行文件拷贝,准备烧录到EMMC
③输入“cp arch/arm/boot/uImage /home/zgq/linux/tftpboot/ -f回车”,执行文件拷贝,准备从tftp下载;
④输入“cp arch/arm/boot/dts/stm32mp157d-atk.dtb /home/zgq/linux/tftpboot/ -f回车”,执行文件拷贝,准备从tftp下载;
⑤输入“ls -l /home/zgq/linux/atk-mp1/linux/bootfs/回车”,查看“/home/zgq/linux/atk-mp1/linux/bootfs/”目录下的所有文件和文件夹
⑥输入“ls -l /home/zgq/linux/tftpboot/回车”,查看“/home/zgq/linux/tftpboot/”目录下的所有文件和文件夹
⑦输入“chmod 777 /home/zgq/linux/tftpboot/stm32mp157d-atk.dtb回车”
给“stm32mp157d-atk.dtb”文件赋予可执行权限
⑧输入“chmod 777 /home/zgq/linux/tftpboot/uImage回车” ,给“uImage”文件赋予可执行权限
⑨输入“ls /home/zgq/linux/tftpboot/ -l回车”,查看“/home/zgq/linux/tftpboot/”目录下的所有文件和文件夹

6、设置LCD作为终端控制台
1)、重启开发板,等串口显示“Hit any key to stop autoboot”,立即按下“回车键”;
输入“setenv bootargs 'console=tty1 console=ttySTM0,115200 root=/dev/nfs nfsroot=192.168.2.180:/home/zgq/linux/nfs/rootfs,proto=tcp rw ip=192.168.2.178:192.168.2.180:192.168.2.1:255.255.255.0::eth0:off'回车”。
“console=tty1”表示将LCD屏幕作为控制台。
“console=ttySTM0,115200”设置串口作为控制台。
输入“saveenv回车”。
输入“boot回车”,启动。
输入“cd /回车”
输入“ls回车”
输入“cd etc/回车”
输入“ls回车”
2)、输入“vi inittab回车”,打开inittab文件
按“A”,移动“光标”至“console::respawn:/sbin/getty -L console 0 vt100 # GENERIC_SERIAL”的下一行,添加“tty1::askfirst:-/bin/sh”,见下图:

3)、按“ESC键”,然后输入“:wq回车”
输入“reboot回车”重启开发板;启动完成后,LCD显示如下:

4)、输入“echo hello linux! > /dev/tty1回车”,LCD显示“hello linux!”,见下图:

7、取消LCD作为终端控制台
1)、重启开发板,等串口显示“Hit any key to stop autoboot”,立即按下“回车键”;
输入“setenv bootargs 'console=ttySTM0,115200 root=/dev/nfs nfsroot=192.168.2.180:/home/zgq/linux/nfs/rootfs,proto=tcp rw ip=192.168.2.178:192.168.2.180:192.168.2.1:255.255.255.0::eth0:off'回车”。
“console=ttySTM0,115200”设置串口作为控制台。
输入: saveenv,保存bootcmd的值
2)、输入: boot,启动 Linux 系统
等待开发板启动完成,输入“root回车”
输入“cd /回车”
输入“ls回车”
输入“cd etc/回车”
按“A”,移动光标至“console::respawn:/sbin/getty -L console 0 vt100 # GENERIC_SERIAL”的下一行,在“tty1::askfirst:-/bin/sh”添加“#”,见下图:

3)、按“ESC键”,输入“:wq回车”保存退出,得到下图:

4)、输入“reboot回车”重启开发板。
等待开发板启动完成,输入“root回车”
输入“cd /回车”
输入“ls回车”
输入“echo hello linux! > /dev/tty1回车”

8、LCD背光调节
1)、给开发板上电,等待开发板启动完成,输入“root回车”;
输入“ls回车”
输入“cd /回车”
输入“ls回车”
输入“cd /sys/class/pwm/回车”
输入“ls回车”
输入“cd pwmchip0/回车”,查询到“pwmchip0对应的是TIM4”
2)、输入“cd /sys/devices/platform/backlight/backlight/backlight回车”
输入“cat max_brightness回车”,查询最大亮度等级;
输入“cat brightness回车”,查询当前亮度等级;
输入“echo 6 > brightness回车”,设置当前亮度等级为6
输入“echo 0 > brightness回车”,设置当前亮度等级为0
输入“echo 6 > brightness回车”,设置当前亮度等级为6
输入“cat brightness回车”,查询当前亮度等级;
见下图:

相关文章:
Linux第100步_Linux之设置LCD作为终端控制台和LCD背光调节
KMS是Kemmel Mode Setting的缩写,内核显示模式设置。它主要负责显示的控制,包括屏幕分辨率、屏幕刷新率和颜色深度等等。 CRTC是指显示控制器,在DRM里有多个显存,通过操作CRTC来控制要显示那个显存。 KMS包含了FB框架。DRM驱动默…...
Chapter09 国际化i18n 和 数据校验:Validation
文章目录 1 Java国际化2 Spring6国际化3 使用Spring6国际化4 数据校验:Validation实验一:通过Validator接口实现实验二:Bean Validation注解实现实验三:基于方法实现校验实验四:实现自定义校验 1 Java国际化 示例&…...
活动预告 | Microsoft 安全在线技术公开课:通过扩展检测和响应抵御威胁
课程介绍 通过 Microsoft Learn 免费参加 Microsoft 安全在线技术公开课,掌握创造新机遇所需的技能,加快对 Microsoft Cloud 技术的了解。参加我们举办的“通过扩展检测和响应抵御威胁”技术公开课活动,了解如何更好地在 Microsoft 365 Defen…...
Unresolved plugin: ‘org.apache.maven.plugins:maven-site-plugin:3.12.1‘
问题 使用idea 社区办加载项目提示下面问题: Unresolved plugin: org.apache.maven.plugins:maven-site-plugin:3.12.1 问题解决 maven插件地址: https://maven.apache.org/plugins/maven-dependency-plugin/plugins.html Maven 中央仓库地址&#…...
5个开源RAG框架对比
还在为RAG应用开发头疼吗?别急,今天给大家推荐五款完全开源免费的RAG框架,覆盖自动优化、多模态处理、本地部署、生产环境支持等多种场景,助你轻松搞定RAG开发!👇 1. AutoRAG:自动优化ÿ…...
活动预告 | Microsoft Power Platform 在线技术公开课:实现业务流程自动化
课程介绍 参加“Microsoft Power Platform 在线技术公开课:实现业务流程自动化”活动,了解如何更高效地开展业务。参加我们举办的本次免费培训活动,了解如何借助 Microsoft AI Builder 和 Power Automate 优化工作流。结合使用这些工具可以帮…...
【分布式文件存储系统Minio】2024.12保姆级教程
文章目录 1.介绍1.分布式文件系统2.基本概念 2.环境搭建1.访问网址2.账号密码都是minioadmin3.创建一个桶4.**Docker安装miniomc突破7天限制**1.拉取镜像2.运行容器3.进行配置1.格式2.具体配置 4.查看桶5.给桶开放权限 3.搭建minio模块1.创建一个oss模块1.在sun-common下创建2.…...
解决ssh和git秘钥认证失败问题
已正确上传公钥到远程服务器,但是本地的连接认证还是使用默认秘钥文件名id_rsa或者默认用户名,导致了认证失败,总结了以下解决办法: 1、ssh秘钥认证 远程登录的时候可能ssh客户端默认使用id_rsa文件名秘钥,但是之前生…...
AI安全的挑战:如何让人工智能变得更加可信
引言 随着人工智能(AI)技术在各个领域的广泛应用,尤其是在医疗、金融、自动驾驶和智能制造等行业,AI正在重塑我们的工作和生活方式。从提高生产效率到实现个性化服务,AI带来了前所未有的便利。然而,在享受这…...
腾讯通RTX升级迁移攻略,兼容Linux内核国产系统及移动端
一、腾讯通RTX继续使用的主要难题 腾讯通RTX停更后,用户不仅无法继续获得更新、技术支持和资源下载,还面临着以下无法解决的使用问题: ● 不兼容国产系统与移动端:腾讯通RTX仅支持Windows和Mac操作系统,无法在基于Li…...
用css实现瀑布流布局
上效果 知识理解 column-count: 4; column-gap: 15px;实现固定四行瀑布流布局 columns: 200px auto;column-gap: 15px;由浏览器根据容器的宽度自动调整,尽可能一行多个200px宽度的列数 <!DOCTYPE html> <html lang"en"><head><me…...
FortiAl为擎重塑网络与安全运营未来
在当今数字化浪潮汹涌的时代,网络安全运营的重要性愈发凸显,而人工智能的迅猛发展则如同一股强劲的东风,为这一领域带来了革命性的变革。Fortinet攻防专家邹国雄在《FortiAI:以生成式人工智能(GenAI)简化Fo…...
优化租赁小程序提升服务效率与用户体验的策略与实践
内容概要 在这个快速发展的商业环境中,租赁小程序成为了提升服务效率和用户体验的重要工具。通过对用户需求的深入挖掘,我们发现他们对于功能的便捷性、响应速度和界面的友好性有着极高的期待。因此,针对这些需求,完善租赁小程序…...
基于Python的医院预约挂号与诊断系统
作者:计算机学姐 开发技术:SpringBoot、SSM、Vue、MySQL、JSP、ElementUI、Python、小程序等,“文末源码”。 专栏推荐:前后端分离项目源码、SpringBoot项目源码、Vue项目源码、SSM项目源码、微信小程序源码 精品专栏:…...
Spring Boot教程之四十:使用 Jasypt 加密 Spring Boot 项目中的密码
如何使用 Jasypt 加密 Spring Boot 项目中的密码 在本文中,我们将学习如何加密 Spring Boot 应用程序配置文件(如 application.properties 或 application.yml)中的数据。在这些文件中,我们可以加密用户名、密码等。 您经常会遇到…...
Design Compiler:两种工作模式(线负载模式和拓扑模式)
相关阅读 Design Compilerhttps://blog.csdn.net/weixin_45791458/category_12738116.html?spm1001.2014.3001.5482 Design Compiler可以以线负载模式或拓扑模式启动,必须选择其中一个模式。在拓扑模式下还可使用多模式和UPF模式:多模式允许在多种工作…...
窦明—环境和教育对人的影响具象化
窦明—“环境和教育有多影响人”的具象化 本篇载体:窦明与环境 本篇主体:环境和教育对人的影响 很多网友调侃说,窦明前后两世性格变了,连面向都看起来变了 可不是嘛,命相和品相生面相,性格也影响着神态和…...
41.1 预聚合提速实战项目之需求分析和架构设计
本节重点介绍 : 需求分析架构设计 需求分析 使用预聚合提速查询并且降低高基数查询对后端的压力用户无需变更grafana上的查询语句,后端自动替换效果图 架构设计 架构图 解决方案说明 heavy_query对用户侧表现为查询速度慢在服务端会导致资源占用过多甚至打挂…...
洛谷P2814 家谱(c嘎嘎)
题目链接:P2814 家谱 - 洛谷 | 计算机科学教育新生态 题目难度:普及/提高 解题心得:这道题用了并查集(貌似不怎么常用的字符串并查集),用STL中的map将子孙和祖先连接起来,第一次接触这种做法感…...
时空信息平台-API安全措施-下篇:登录鉴权【访问受限】您的请求已被该站点的安全策略拦截。
文章目录 引言I 登录鉴权处理逻辑校验顺序用户状态校验密码校验Token鉴权短信验证码/图形验证码登录设备限制II 服务端发生错误的处理业务返回码处理前端处理业务返回码nginx处理http状态码引言 时空信息平台-API安全措施:上篇(通讯协议的安全措施) https://blog.csdn.net/z…...
通过Wrangler CLI在worker中创建数据库和表
官方使用文档:Getting started Cloudflare D1 docs 创建数据库 在命令行中执行完成之后,会在本地和远程创建数据库: npx wranglerlatest d1 create prod-d1-tutorial 在cf中就可以看到数据库: 现在,您的Cloudfla…...
Swift 协议扩展精进之路:解决 CoreData 托管实体子类的类型不匹配问题(下)
概述 在 Swift 开发语言中,各位秃头小码农们可以充分利用语法本身所带来的便利去劈荆斩棘。我们还可以恣意利用泛型、协议关联类型和协议扩展来进一步简化和优化我们复杂的代码需求。 不过,在涉及到多个子类派生于基类进行多态模拟的场景下,…...
Android15默认授权浮窗权限
我们经常有那种需求,客户需要定制的apk集成在ROM中,并且默认授予其【显示在其他应用的上层】权限,也就是我们常说的浮窗权限,那么我们就可以通过以下方法在wms、ams等系统服务的systemReady()方法中调用即可实现预置应用默认授权浮…...
QT: `long long` 类型转换为 `QString` 2025.6.5
在 Qt 中,将 long long 类型转换为 QString 可以通过以下两种常用方法实现: 方法 1:使用 QString::number() 直接调用 QString 的静态方法 number(),将数值转换为字符串: long long value 1234567890123456789LL; …...
[Java恶补day16] 238.除自身以外数组的乘积
给你一个整数数组 nums,返回 数组 answer ,其中 answer[i] 等于 nums 中除 nums[i] 之外其余各元素的乘积 。 题目数据 保证 数组 nums之中任意元素的全部前缀元素和后缀的乘积都在 32 位 整数范围内。 请 不要使用除法,且在 O(n) 时间复杂度…...
重启Eureka集群中的节点,对已经注册的服务有什么影响
先看答案,如果正确地操作,重启Eureka集群中的节点,对已经注册的服务影响非常小,甚至可以做到无感知。 但如果操作不当,可能会引发短暂的服务发现问题。 下面我们从Eureka的核心工作原理来详细分析这个问题。 Eureka的…...
Pinocchio 库详解及其在足式机器人上的应用
Pinocchio 库详解及其在足式机器人上的应用 Pinocchio (Pinocchio is not only a nose) 是一个开源的 C 库,专门用于快速计算机器人模型的正向运动学、逆向运动学、雅可比矩阵、动力学和动力学导数。它主要关注效率和准确性,并提供了一个通用的框架&…...
推荐 github 项目:GeminiImageApp(图片生成方向,可以做一定的素材)
推荐 github 项目:GeminiImageApp(图片生成方向,可以做一定的素材) 这个项目能干嘛? 使用 gemini 2.0 的 api 和 google 其他的 api 来做衍生处理 简化和优化了文生图和图生图的行为(我的最主要) 并且有一些目标检测和切割(我用不到) 视频和 imagefx 因为没 a…...
32单片机——基本定时器
STM32F103有众多的定时器,其中包括2个基本定时器(TIM6和TIM7)、4个通用定时器(TIM2~TIM5)、2个高级控制定时器(TIM1和TIM8),这些定时器彼此完全独立,不共享任何资源 1、定…...
基于单片机的宠物屋智能系统设计与实现(论文+源码)
本设计基于单片机的宠物屋智能系统核心是实现对宠物生活环境及状态的智能管理。系统以单片机为中枢,连接红外测温传感器,可实时精准捕捉宠物体温变化,以便及时发现健康异常;水位检测传感器时刻监测饮用水余量,防止宠物…...
