LCD操作原理与Framebuffer编程接口-RZMPU工业控制教程连载(13)

瑞萨MCU小百科 2024-09-13 12:00

第7章 Linux LCD编程


7.1

LCD操作原理

在Linux系统中通过Framebuffer驱动程序来控制LCD。Frame是帧的意思,buffer是缓冲的意思,这意味着Framebuffer就是一块内存,里面保存着一帧图像。Framebuffer中保存着一帧图像的每一个像素颜色值,假设LCD的分辨率是1024x768,每一个像素的颜色用32位来表示,那么Framebuffer的大小就是:1024x768x32/8=3145728字节。


简单介绍LCD的操作原理:

① 驱动程序设置好LCD控制器:

  • 根据LCD的参数设置LCD控制器的时序、信号极性。

  • 根据LCD分辨率、BPP分配Framebuffer。

② APP使用ioctl获得LCD分辨率、BPP。

③ APP通过mmap映射Framebuffer,在Framebuffer中写入数据。

图7.1 LCD操作原理示意图


假设需要设置LCD中坐标(x,y)处像素的颜色,首要要找到这个像素对应的内存,然后根据它的BPP值设置颜色。假设fb_base是APP执行mmap后得到的Framebuffer地址,如错误!未找到引用源。所示:

7.2 framebuffer映射地址


可以用以下公式算出(x,y)坐标处像素对应的Framebuffer地址:

左右滑动查看完整内容

(x,y)像素起始地址=fb_base+(xres*bpp/8)*y + x*bpp/8


最后一个要解决的问题就是像素的颜色怎么表示。它是用RGB三原色(红、绿、蓝)来表示的,在不同的BPP格式中,用不同的位来分别表示R、G、B,如错误!未找到引用源所示:

图7.3 RGB三种格式


对于32BPP,一般只设置其中的低24位,高8位表示透明度,一般的LCD都不支持。


对于24BPP,硬件上为了方便处理,在Framebuffer中也是用32位来表示,效果跟32BPP是一样的。


对于16BPP,常用的是RGB565;很少的场合会用到RGB555,这可以通过ioctl读取驱动程序中的RGB位偏移来确定使用哪一种格式。


7.2

Framebuffer编程接口

本节程序的目的是:打开LCD设备节点,获取分辨率等参数,映射Framebuffer,最后实现描点函数。会涉及open、ioctl、mmap三个系统调用函数。


在前面已经讲过open函数,不再赘述。


对于ioctl函数,在Ubuntu中执行“man ioctl”,可以看到它的说明:

图7.4 man查看ioctl函数


头文件:

#include 


函数原型:

左右滑动查看完整内容

int ioctl(int fd, unsigned long request, ...);


函数说明:

① fd表示文件描述符。

② request表示与驱动程序交互的命令,用不同的命令控制驱动程序输出我们需要的数据。

③ …表示可变参数arg,根据request命令,设备驱动程序返回输出的数据。

④ 返回值:打开成功返回文件描述符,失败将返回-1。


ioctl的作用非常强大灵活。不同的驱动程序内部会实现不同的ioctl,APP可以使用各种ioctl跟驱动程序交互:可以传数据给驱动程序,也可以从驱动程序中读出数据。


对于mmap函数,在Ubuntu中执行“man mmap”,可以看到它的说明:

图7.5 man查看mmap函数


头文件:

#include 


函数原型:

左右滑动查看完整内容

void *mmap(void *addr, size_t length, int prot, int flags,int fd, off_t offset);


函数说明:

① addr表示指定映射的內存起始地址,通常设为NULL表示让系统自动选定地址,并在成功映射后返回该地址。

② length表示将文件中多大的内容映射到内存中。

③ prot表示映射区域的保护方式,可以为以下4种方式的组合:

  • PROT_EXEC映射区域可被执行

  • PROT_READ映射区域可被读出

  • PROT_WRITE映射区域可被写入

  • PROT_NONE映射区域不能存取

④ Flags表示影响映射区域的不同特性,常用的有以下两种:

  • MAP_SHARED表示对映射区域写入的数据会复制回文件内,原来的文件会改变。

  • MAP_PRIVATE表示对映射区域的操作会产生一个映射文件的复制,对此区域的任何修改都不会写回原来的文件内容中。

⑤ 返回值:若成功映射,将返回指向映射的区域的指针,失败将返回-1。


需要技术支持?

如您在使用瑞萨MCU/MPU产品中有任何问题,可识别下方二维码或复制网址到浏览器中打开,进入瑞萨技术论坛寻找答案或获取在线技术支持。

https://community-ja.renesas.com/zh/forums-groups/mcu-mpu/



未完待续


推荐阅读

Linux I2C设备访问方法 - RZ MPU工业控制教程连载(9)

用户态接口应用与编写APP - RZ MPU工业控制教程连载(10)

Linux SPI协议介绍与访问方法 - RZ MPU工业控制教程连载(11)

更多精彩,敬请关注


评论
  • 在工业自动化、物联网、电力新能源等领域全速升级的当下,嵌入式核心板早已不是简单的“算力载体”,而是决定设备稳定性、扩展性与落地速度的核心部件。飞凌嵌入式FET153-S核心板,基于全志工业级T153处理器精心打磨,凭借4×A7与RISC-V多核异构架构、成熟Linux系统、工业级品质与全国产化配置,精准击中工控、物联网等场景的开发痛点,成为嵌入式产品迭代的优质选择。 飞凌嵌入式FET153-S核心板的竞争力,首先体现在创新的多核异构计算架构。它搭载全志专为工业场景打造的T153处理器,
    飞凌嵌入式 2026-06-11 15:21 492浏览
  • 前言变压器是开关电源的核心部分,有磁芯,骨架和线包组成,实现电生磁和磁生电的转换。AC-DC手机电源适配器,个头最大的元件就是变压器了,绕着黄色绝缘胶带。拆下开关电源高频变压器,看一看内部线包是怎么缠绕的。一次侧特写。二次侧特写。剥离外层黄色绝缘胶带后,中间黑色块状为EE型高频铁氧体磁芯,两侧是塑胶绕组骨架,是高频电源变压器核心导磁部件。粗铜导线为主功率绕组(原边/副边大功率线圈),细线多为辅助供电绕组/反馈绕组,引脚焊在骨架侧边金属针脚上。外层黄色玛拉胶带起匝间、层间绝缘防护,拆除后裸露线圈与
    短歌行 2026-06-02 21:21 1996浏览
  •  概述基于规格书标称参数,AP2400的输入电压范围为5V-150V,最大输出电流能力为6A,是一款面向大功率LED照明场景的降压型恒流驱动芯片,采用SOP8封装,内置抖频与平均电流采样电路,本文对其电气特性与架构设计进行逐项分析。拓扑与控制架构分析AP2400采用固定频率PWM控制的降压恒流拓扑,需外部驱动功率MOS管,支持10mA~6A的宽范围输出电流配置。其控制环路采用平均电流模式采样架构,相较于峰值电流采样方案,可有效降低宽输入电压波动下的恒流偏差,适配电动车、摩托车等供电电压
    世微半导体_千羽 2026-06-01 16:13 1772浏览
  •  我们生活在数字时代。 每天扫码支付、刷视频、在社交软件上聊天,无一不涉及到电子信息。“电子”意味着设备需要通电才能工作。手机没电会让人焦虑,电脑关机就与世界断开了连接。“信息”是具体的内容。一段文字、一首歌曲、一张照片、一个闪烁的红灯……这些都是信息。 问题来了:电子设备,究竟是如何处理丰富多彩的人类信息呢?答案是:通过“数字”。 一、万物皆由数,如何把现实世界塞进芯片? 色不异数,数不异色,色即是数,数即是色,受想行识,亦复如是。——改编自《
    嵌入式开发之道 2026-06-03 23:44 1015浏览
  • 隔离芯片的核心在于其内部的“隔离栅”。不同的“内功心法”——即隔离技术——塑造了各自独特的性能特性。光耦隔离 (Optocoupler - Opto) 利用光作为物理介质传递信号。输入端的LED发光,被输出端的光敏器件(如光电晶体管或光电二极管加放大器)接收并转化为电信号。这项技术成熟且成本相对较低(尤其在简单应用中),具备高隔离电压(可达10kV以上)和良好的抗共模干扰能力。然而,其缺点也比较明显:速度受限于LED开关速度和光生载流子寿命,带宽通常低于10Mbps;功耗较高,因为LED驱动需要
    扎陵半导体_Kyle 2026-05-29 16:11 507浏览
  •   传说中上帝7天创造了世界。我们也准备花1周带你从零开始,亲手“造”出能点灯的微型计算机。 为什么要学这个? 科学技术是第一生产力,数字化技术已经成为现代社会的底座。如果你是: 零基础小白:快速入门FPGA/芯片设计,为入行找工作打下基础软件工程师:快速入门FPGA/芯片设计,理解数字化技术的底层原理技术管理者:了解数字技术开发人员干的是哪些事儿,能做出更明智的技术决策投资者/创业者:了解芯片和计算的根本原理,能看透技术趋势的本质 那
    嵌入式开发之道 2026-06-03 23:38 1021浏览
  • 本次测试说明以四项指标进行量化测试在相同的测试条件与环境下,我们使用分光辐射亮度计等专业量测设备,针对不同显示技术的多款电视机型进行评估,并以中立客观的立场,依据以下四项指标进行实测与分析,以比较 RGB Mini LED 电视相较于其他技术的画质优势程度。在测试流程、量测以及结果分析过程中,未受到委托方任何干预。测试机型(型号)RGB Mini LED:100ZX1SQuantum Dot + Mini LED: 85Z875R传统机型(广色域 LED):65M550R测试结果① 最大亮度实测
    百佳泰测试实验室 2026-06-05 14:42 1130浏览
  •   知是行的主意,行是知的功夫;知是行之始,行是知之成。——王阳明 在前篇中,我们已经把数字芯片的“四大基石”全部凑齐了:0 和 1(电压高低):代表现实世界的所有信息。逻辑门(与或非、异或):负责做条件判断和计算(组合逻辑)。时钟(CLK 鼓点):负责指挥全军,步调一致。D触发器(DFF/寄存器):负责死守记忆,到点才更新。 让我们从纸上谈兵进入实战,访问在线电路仿真实验网站—— Falstad​ (https:/www.falstad.com/circ
    嵌入式开发之道 2026-06-07 13:16 1135浏览
  • 前言电子密码器是电子银行的安全工具,电子密码器内置密码生成芯片,生成的动态密码可以对电子银行对外支付进行身份认证,客户无需安装任何程序即可在多渠道使用。下面是中国银行中银e令(E‑Token),也常被称为动态口令牌、电子密码器,是网银和手机银行对外转账时的核心安全认证硬件。正面:印有中国银行LOGO、序列号、有效期,LCD屏幕显示6位动态数字口令,并标注安全提示“切勿向任何人泄露动态口令”。​背面:印有银行官网、手机银行网址与客服热线95566。下面开始进行拆解。背面PCB板。正面PCB板。显示
    短歌行 2026-05-29 21:33 1384浏览
  • 前言美的电磁炉作为市场主流品牌,拥有‌C22-WH2237‌、‌MC-E35C02‌等多款热门型号,覆盖家用至商用场景,具备高效聚能与安全保护特性。今天来拆解一个美的电磁炉,给大家分享一下美的电磁炉的内部结构设计,以供学习借鉴。美的多功能电磁炉,型号C21-WK2102,额定功率2100W,额定电压220V~,额定频率50Hz。上壳部分,就是壳体加黑晶板的粘合。说一下黑晶板吧,黑晶板的横向导热率几乎为零,但是纵向导热能力却较强;因此不会通过面板横向传热,也不会使锅具周围的面板发烫,从而使得消费者
    短歌行 2026-05-29 20:27 1337浏览
  •       近期在闲鱼上淘到一个已病退的16G酷刃U盘,这个造型堪称经典,记得它刚出来的时候,曾经在京东买了三个8G的,至今还有一个在用,感觉造型轻薄,质量也是刚刚的。      早先买的U盘表面自己已经磨得不剩一字,这个看着还挺清晰,酷刃(Cruzer Blade),容量16GB,产自马来西亚。      原先的U盘用得好好的没想过要怎么去拆开看看,这个插上电脑上已然毫无反应。秉持着死马当活马医的精神,拆
    lyyinhe_xi 2026-06-11 16:04 686浏览
  • 过去两年,我们在大模型上的焦虑往往源于“连接”——网络卡顿、数据泄露、按量付费的账单。但瑞芯微在2025年三季度发布的RK182X,或许能让我们松一口气。这颗全球首款3D封装端侧大模型协处理器,首次在本地实现了7B参数模型的流畅运行(近100 Tokens/s),且能效比提升了6倍。目前,它已悄然导入数百个行业项目,商业化落地速度远超预期。RK182X的出现,印证了一个判断:AI计算正在经历“去中心化”。端侧AI并非云端的附庸。就像PC没有因为互联网消失一样,本地算力因其“实时响应(低延迟)、数
    启扬ARM嵌入式 2026-06-05 09:09 245416浏览
  • 一、差分探头的原理‌高压差分探头属于功能隔离型探头,但不属于绝对完全隔离的探头‌,这一结论是由它的技术设计和性能特性决定的。又因为高压差分探头能安全地测试高压信号,所以被称作传统意义上的隔离探头。根据测量量程和应用场景的差异,有源差分探头主要分为低压型与高压型两个大类:低压型有源差分探头通常针对毫伏级到百伏级的小信号测量,带宽更高,精度表现更优,但耐压能力有限,一般用于信号完整性测试、低电压接口信号测量等场景;高压型有源差分探头则针对百伏到数千伏的高压场景设计,内置专门的电气隔离模块,兼顾精度与
    ZLPROBE 2026-06-01 15:06 1660浏览
我要评论
0
点击右上角,分享到朋友圈 我知道啦
请使用浏览器分享功能 我知道啦