自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(77)
  • 收藏
  • 关注

原创 解码常对象与运算符重载

本文介绍了C++中常对象与常对象成员的概念及应用。常对象通过const修饰,其数据成员具有只读属性,必须初始化且只能调用const成员函数。常对象成员分为常数据成员(需通过构造函数初始化列表初始化)和常成员函数(承诺不修改对象数据)。此外,文章还概述了运算符重载的基本概念,强调其本质是特殊函数重载,需遵循优先级、操作数等限制规则。示例代码演示了常对象、常成员及运算符重载的实际应用,帮助理解这些核心机制在C++中的实现方式。

2025-12-07 20:31:28 413

原创 解码类进阶核心——静态成员、this 指针、动态内存与友元机制

本文介绍了C++中静态成员、this指针、对象指针和友元机制的核心概念。静态成员属于类本身,包括静态数据成员(所有对象共享)和静态成员函数(无this指针);this指针是成员函数的隐含参数,用于解决命名冲突和链式调用;对象指针通过new/delete管理堆内存,与malloc/free相比更安全;友元机制允许外部访问私有成员,包括友元函数和友元类。这些特性增强了C++的封装性和灵活性,但需谨慎使用以避免破坏封装原则。

2025-12-05 20:56:24 633

原创 解码ARM 开发板 OpenSSL+cURL 交叉编译与 HTTPS 配置

本文详细介绍了在Linux环境下交叉编译OpenSSL和cURL库并部署到ARM开发板的全过程。主要内容包括:环境准备(工具链配置)、OpenSSL 1.1.1w的交叉编译(参数配置、编译安装)、cURL 8.7.1的交叉编译(关联OpenSSL)、以及最终在ARM开发板上的部署步骤(文件传输、环境变量配置、库文件链接等)。文章提供了完整的命令行操作流程,并对关键参数进行了说明,帮助开发者成功在ARM架构设备上构建支持HTTPS的cURL工具链。

2025-12-04 22:14:38 820

原创 解码构造与析构

本文系统介绍了C++中构造函数与析构函数的核心概念和使用方法。构造函数用于对象初始化,包括无参构造、有参构造和拷贝构造,重点剖析了拷贝构造的深浅拷贝问题及解决方案。析构函数负责对象销毁时的资源清理,强调其不可重载的特性。文章通过代码示例和生活类比,详细讲解了构造/析构函数的语法规则、调用时机及注意事项,特别指出动态内存管理时必须实现深拷贝以避免资源冲突。最后总结了禁用拷贝构造的场景和性能优化建议,为C++对象生命周期管理提供了完整指导。

2025-12-03 22:09:12 1253

原创 解码面向对象编程与内联函数

本文介绍了面向对象编程(OOP)的核心概念及其与面向过程编程(POP)的区别。OOP通过抽象、封装、继承和多态四大特性,将问题分解为对象交互,而POP则关注步骤流程。文章详细阐述了类与对象的关系:类是抽象模板,对象是具体实例,实例化是创建对象的过程。重点讲解了封装的重要性,通过访问权限控制实现信息隐藏,并强调属性私有化和接口分离的设计原则。最后,解释了对象内存分配机制,包括成员属性的字节对齐和成员函数的共享特性,帮助读者理解OOP的基本原理和实践方法。

2025-12-02 18:35:52 1133

原创 解码C++基础——从C到C++

本文介绍了C++编程语言的核心概念,包括其多范式特性(过程化、面向对象和泛型编程)、基础程序结构以及关键语法元素。重点讲解了名字空间(Namespace)机制,详细说明其定义、访问方式(使用作用域解析符::或using语句)、嵌套结构以及解决命名冲突的实际应用。此外,文章对比了C++的输入输出流(cin/cout)与C语言的scanf/printf,强调其类型安全和扩展性优势,并介绍了C++特有的string类及其自动内存管理等特性。这些内容为C++初学者提供了语言基础知识的系统概览。

2025-12-01 20:43:59 1767

原创 tips:LVGL 定时器触发周期不准确(实际间隔 > 设定间隔)问题排查与解决方案

摘要: 在使用LVGL开发嵌入式GUI时,发现设定的1秒定时器实际执行间隔明显超时。分析表明,LVGL定时器基于手动递增的"节拍"计数器工作,其精度完全依赖lv_tick_inc(x)的调用频率和参数准确性。原代码通过固定5ms休眠和固定5ms增量导致时间累计误差。提出两种解决方案:推荐方案一采用精确时间测量(使用gettimeofday()动态计算真实耗时),确保定时器精准触发;方案二通过匹配1ms循环周期实现简单但精度较低。对比显示方案一在精度、健壮性方面优势明显,是标准实践方法。

2025-11-27 20:51:22 829

原创 解码JSON

JSON是一种轻量级数据交换格式,采用键值对和数组两种基本结构,支持字符串、数值、布尔值等数据类型。cJSON是C语言的JSON解析库,通过cJSON_Parse解析字符串为树形结构,使用cJSON_GetObjectItem获取对象值,cJSON_GetArrayItem访问数组元素,最后需调用cJSON_Delete释放内存。示例展示了如何解析天气API返回的JSON数据,提取城市天气信息。该库简洁高效,适合嵌入式开发等场景。

2025-11-26 21:38:34 1113

原创 解码HTTP

HTTP协议是应用层请求-响应协议,用于客户端与服务器通信。它基于TCP连接,支持文本、图片等多种资源传输。HTTP报文由请求行、首部字段、空行和包体组成,支持GET、POST等方法。HTTP/1.1采用持久连接提高效率。响应报文包含状态码(如200成功、404未找到)。实际应用中,通过构造HTTP请求调用API接口获取数据。

2025-11-25 21:39:20 1453

原创 解码服务器IO模型

服务器IO模型是处理多客户端请求的核心方案,主要分为非阻塞轮询和多任务并发两种模型。UDP服务器采用单一套接字处理所有客户端,而TCP服务器为每个连接创建独立套接字。非阻塞轮询通过fcntl()设置套接字非阻塞属性,避免阻塞并持续轮询检查数据,但会占用较多CPU资源。多任务模型则使用多线程,TCP服务器中主线程监听连接,为每个客户端创建子线程处理通信,通过互斥锁保护共享资源。两种模型各有优劣,需根据具体场景选择,非阻塞模型适合轻量级需求,多线程模型则能更好地支持高并发TCP连接。

2025-11-24 20:46:30 1313

原创 解码TCP

TCP是传输层的核心协议,提供面向连接的可靠数据传输。其核心特性包括三次握手建立连接、四次挥手断开连接,以及通过序列号、确认应答、校验和、超时重传等机制保障可靠性。TCP报头包含源/目标端口号、序列号、控制位等关键字段,最小20字节。采用C/S架构,通过socket、connect等系统调用实现通信。TCP确保数据无丢失、无重复、按序到达,并支持流量控制和全双工通信,是互联网数据传输的基础协议。

2025-11-23 17:43:49 1173

原创 解码UDP

摘要: UDP协议是传输层核心协议,提供无连接、不可靠的数据传输服务。其特点包括无需建立连接、不保证数据交付与顺序、报首仅8字节轻量高效,适合实时性要求高且容忍丢包的场景。UDP数据报最大长度为65507字节,但建议≤1472字节以避免IP分片。编程接口涉及socket()创建套接字、bind()绑定地址端口、sendto()发送数据,需注意字节序转换及错误处理。UDP适用于DNS、视频流等低延迟应用,但需应用层自行处理可靠性问题。

2025-11-22 20:45:08 1003

原创 解码网络编程基础

本文系统讲解了进程间通信(IPC)和网络通信的核心概念。主要内容包括:1) 进程间通信方式如管道、信号等仅适用于同主机,跨主机通信需通过Socket套接字实现;2) IP地址作为主机唯一标识,分为IPv4和IPv6两类,介绍了IP分类、特殊地址及子网掩码的作用;3) 网络通信采用TCP/IP四层模型,包括物理层(传输介质)、数据链路层(帧传输)等核心内容。文中通过代码示例和图表详细说明了Socket创建、IP地址计算等关键实现方法,为理解网络通信原理提供了系统指导。

2025-11-21 22:10:32 1333

原创 解码线程池

摘要: 线程池通过预先创建并复用线程,减少频繁创建/销毁的开销,提升并发效率。其核心机制包括:1)任务队列管理待执行任务(函数+参数);2)线程池结构体统一管理线程生命周期;3)同步机制(互斥锁+条件变量)保证线程安全;4)动态调整线程数量。关键实现要点:线程循环执行任务时需处理同步、虚假唤醒和资源释放问题。线程池将任务执行与线程管理分离,开发者只需关注任务逻辑,无需处理底层线程调度。

2025-11-20 18:39:03 1193

原创 解码线程调度与信号响应

本文介绍了Linux线程调度策略的核心概念与实现方法。主要内容包括:线程作为最小调度单位,采用抢占式调度机制,高优先级线程可抢占低优先级线程;优先级分为静态优先级(0-99,系统任务可抢占)和动态优先级(通过nice值调整);三种调度策略(SCHED_OTHER默认分时调度、SCHED_FIFO实时先到先服务、SCHED_RR实时轮询)的特性与使用场景;以及相关API函数的使用示例,如设置线程属性、调度策略和优先级等。文章通过代码演示了如何创建SCHED_FIFO策略的高优先级线程。

2025-11-19 21:26:23 939

原创 解码死锁的产生与解决

死锁是多线程编程中的常见问题,指多个线程因互相等待对方资源而陷入无限阻塞状态。其产生需同时满足四个必要条件:资源互斥、请求且保持、不可剥夺和循环等待。预防死锁的主要策略包括破坏这些条件,如一次性申请所有资源(破坏请求且保持)、资源抢占(破坏不可剥夺)和资源有序分配(破坏循环等待)。此外,还可通过运行时动态检测和事后处理解决死锁。实际编程中,统一加锁顺序是最常用的预防方法。代码示例展示了因加锁顺序不一致导致的死锁及其修正方案。

2025-11-18 18:20:51 1253

原创 解码线程同步与互斥

线程并发执行时会出现资源争抢问题,需通过同步和互斥机制解决。互斥锁是实现互斥的核心机制,包括初始化、上锁(阻塞/非阻塞/带超时)、解锁和销毁等操作。关键函数如pthread_mutex_init()、pthread_mutex_lock()和pthread_mutex_unlock(),使用时需注意:避免重复加锁造成死锁,确保释放已获取的锁,并通过临界区保护共享资源。示例展示了主线程和子线程如何通过互斥锁安全访问全局变量,以及带超时的锁获取方法,防止线程永久阻塞。

2025-11-17 17:44:08 1106

原创 解码线程编程

本文介绍了线程的基本概念及其在Linux系统中的创建方法。线程作为进程内执行单元,共享进程资源但拥有独立执行流。文章通过触摸屏坐标获取实例,演示了pthread_create()函数的使用:主线程打开设备文件,创建子线程持续读取触摸事件并转换坐标。关键点包括线程函数原型、参数传递注意事项、资源同步机制(全局变量)以及错误处理。代码展示了如何实现硬件坐标到屏幕坐标的转换,并强调线程安全性和边界检查的重要性。最后指出编译时需链接pthread库(-lpthread),为后续线程管理技术奠定基础。

2025-11-16 20:31:34 809

原创 解码IPC-消息队列、共享内存与信号量集

System-V IPC 是 Linux 进程间通信标准,含消息队列、共享内存、信号量集三类持久性资源,通过键值(key)标识,需手动创建 / 删除。共性:依赖 ftok () 生成唯一键值,可通过 ipcs/ipcmk/ipcrm 命令管理,资源常驻内存需手动清理。特性:消息队列按类型传数据,自带阻塞;共享内存效率最高,需信号量互斥;信号量集负责进程同步,靠 P/V 原子操作。适用场景:按类型传数据用消息队列,高效共享数据用共享内存 + 信号量,协调临界资源访问用信号量集。

2025-11-15 18:49:07 1070

原创 解码IPC-管道与信号

摘要: 进程间通信(IPC)是进程间数据交换的重要方式,本文重点解析管道和信号两种基础通信机制。管道分为匿名管道和命名管道:匿名管道通过pipe()创建,适用于亲缘进程通信,数据单向流动且读写端需明确分工;命名管道通过mkfifo()创建文件节点,支持无亲缘关系进程通过文件路径访问,具备多路写入能力。两者均遵循先进先出规则,但命名管道突破了亲缘限制,扩展了应用场景。文章通过代码示例演示了父子进程匿名管道通信及跨进程命名管道的实现方法,并分析了缓冲区大小测试等关键技术细节。

2025-11-14 20:17:12 1012

原创 解码程序与进程

本文梳理了程序与进程的核心概念及编译执行过程。程序是静态指令集合,进程是其动态执行实例。程序需经过预处理、编译、汇编、链接四阶段生成ELF格式可执行文件。进程由PCB、代码段和数据段组成,具有五种基本状态并相互转换。Linux通过fork()创建进程,构建进程树结构,由systemd作为根进程管理所有进程。文中详细介绍了GCC编译流程、ELF文件结构、进程特征与状态转换等关键知识,并提供了相关工具命令和系统调用接口。

2025-11-13 19:32:21 915

原创 解码LVGL 布局与多界面编程

LVGL 提供了弹性布局(Flex)和网格布局(Grid)两种灵活的布局方式。Flex 布局支持单向排列(行/列),可通过弹性增长分配剩余空间,提供多种对齐方式和自动换行功能。Grid 布局是二维表格结构,支持定义固定/自适应/比例分配的轨道大小,元素可跨多行多列。两种布局都支持间隙控制,Flex 适配 RTL 布局,Grid 需要手动配置每个子元素的位置。开发者可根据需求选择合适布局,通过样式属性统一管理布局参数。两种布局均需在 lv_conf.h 中启用对应宏后使用。

2025-11-12 18:28:18 846

原创 解码LVGL定时器

LVGL定时器机制提供周期性执行回调函数的功能,基于非抢占式调度,需定期调用lv_timer_handler()触发。核心接口包括创建定时器(可指定周期、回调和用户数据)、就绪/重置定时器、修改参数(回调、周期、用户数据)以及设置执行次数。定时器支持暂停/恢复功能,可获取调度空闲百分比,并提供异步调用机制。使用时需注意控制回调耗时,避免影响其他定时器触发,在操作系统中可结合返回值优化线程调度。

2025-11-11 18:19:05 737

原创 解码LVGL中文字体、输入框、键盘

中文显示方案摘要 LVGL提供两种中文显示方案:1)固定汉字方案:通过在线字体生成器提取特定汉字生成C数组字库,适用于按钮等固定文本场景;2)动态加载方案:集成FreeType库实时解析TTF字体文件,支持任意汉字显示,适用于用户输入等动态文本场景。关键步骤包括字体文件准备、LVGL配置修改(启用FreeType)、项目编译配置(添加头文件路径及库链接)。方案1节省内存但灵活性有限,方案2功能全面但对系统资源要求较高。根据具体应用场景选择合适方案即可实现LVGL中文显示功能。

2025-11-10 10:55:37 1828 1

原创 解码LVGL图片

LVGL 图像控件支持通过 C 数组或第三方库解析 RGB 像素数据。对于固定图标等少量图像,建议使用 LVGL 图像生成器将图片转为 C 数组,通过 lv_img_set_src() 绑定显示。需配置 LV_USE_IMAGE 宏启用图像控件功能,并合理设置图像参数(如透明通道、色深等)。显示时可进行缩放、旋转等变换操作,通过 lv_image_set_rotation() 和 lv_image_set_scale() 实现。该方案适合嵌入式设备上显示静态资源,但需注意内存占用和性能优化。

2025-11-09 12:30:24 1396

原创 解码LVGL事件

LVGL 事件系统通过"事件绑定-回调函数"机制实现交互逻辑,具有多绑定支持、事件冒泡和状态化触发等核心特性。事件分为输入设备、绘图、子对象管理和自定义四大类,包含PRESSED、CLICKED、FOCUSED等常用事件。提供lv_obj_add_event_cb()、lv_obj_send_event()等关键函数实现事件的绑定、触发和管理。该系统支持灵活的事件处理,如父容器处理子控件事件、区分输入设备类型等,是LVGL实现用户交互的核心机制。

2025-11-03 21:20:17 1090

原创 解码LVGL样式

LVGL样式系统通过部件(Part)和状态(State)实现精细化控件外观控制。核心部件包括主区域、滚动条、指示器等,状态涵盖默认、按下、聚焦等交互场景。系统支持样式复用、级联优先级、过渡动画和主题管理,提供灵活的外观定制能力。常用API如lv_obj_set_style_width()和lv_obj_set_style_bg_color()可直接设置对象属性,无需预定义样式对象。通过组合部件、状态和样式属性,开发者能高效构建美观且交互流畅的界面。

2025-11-02 17:46:15 1366

原创 解码LVGL基础

LVGL9.2 源码采用模块化设计,主要目录结构如下:/lvgl/src包含核心功能模块(core、display、widgets等),实现了对象管理、绘图、控件等功能;/lvgl/demos和/lvgl/examples分别提供综合案例和基础示例;/lvgl/env_support/包含多平台适配代码。全局配置文件lv_conf.h可自定义控件启用、显示参数等。源码编译由顶层CMakeLists.txt控制,支持静态/动态库构建。该框架通过osal/目录实现操作系统抽象,便于移植到不同平台。

2025-11-01 18:39:51 1211

原创 解码LVGL Linux 系统(Ubuntu/WSL + 开发板)移植

Ubuntu/WSL移植LVGL指南 本文详细介绍了在Ubuntu/WSL环境下移植LVGL图形库的完整流程。主要内容包括: 源码获取:下载LVGL核心代码和Linux平台框架 环境配置:安装SDL2、xkb、CMake等依赖库 VSCode配置:设置CMake工具链和生成器 编译运行:使用GCC编译器构建并验证LVGL模拟器 开发板移植:补充说明ARM平台交叉编译方法 文章提供详细的命令步骤和配置截图,涵盖从源码准备到最终运行的完整过程,同时指出常见错误及解决方法,适合嵌入式开发者参考。

2025-10-31 19:47:39 1149 1

原创 解码Shell 脚本编程

文章摘要 Shell脚本是解释型编程语言,依赖解释器执行(如bash)。其基本要素包括:Shebang指定解释器、注释、变量定义(弱类型,无空格赋值)、输入输出(read/echo命令)、通配符(文件匹配)和管道(命令组合)。变量命名需遵循字母数字下划线规则,引用时可用${}避免歧义。管道通过|或xargs实现命令间数据传递,提升脚本灵活性。脚本文件以.sh为后缀,首行需声明解释器路径(如#!/bin/bash)。

2025-10-30 20:32:45 1107

原创 项目构建优化:git

Git是一款分布式版本控制系统,用于高效管理代码和文档的修改历史,支持多人协作开发。它采用快照式版本管理,通过SHA-1哈希值标识版本,具有速度快、分支功能强大等优势。Git本地操作通过工作区、暂存区和本地仓库三大核心区域完成,基本流程为:修改→暂存→提交。安装Git后需配置用户名和邮箱,并通过git init初始化仓库。常用命令包括git add暂存修改、git commit提交版本、git status查看状态等。Git支持跨平台使用,是当前最流行的版本控制工具。

2025-10-29 18:55:00 1473

原创 项目构建优化:CMake

CMake是一款跨平台的开源构建工具,通过编写简单的CMakeLists.txt配置文件,可自动生成Makefile或工程文件,简化多文件、跨平台项目的编译管理。文章介绍了CMake的安装方法(以Ubuntu为例)和基础使用流程,包括单文件编译、源码隔离构建等实践。重点讲解了多文件项目的编译配置,以及如何自动收集源文件和指定头文件路径等进阶用法。CMake通过抽象构建过程,解决了手动编写Makefile的复杂性,成为现代C/C++项目的主流构建工具。

2025-10-28 19:20:19 1086

原创 项目构建优化:Make 与 Makefile

本文介绍了Make工具与Makefile在项目构建优化中的核心作用。首先分析了大型C/C++项目面临的依赖管理复杂和构建效率低下两大痛点,指出Make工具通过自动化依赖管理和增量编译解决这些问题。文章详细讲解了Makefile的基本规则,包括目标、依赖、命令的语法要求,以及C语言编译四步骤的实现方式。针对多文件工程,展示了如何通过自定义变量简化Makefile编写,提高维护性。Make作为1977年诞生的经典构建工具,至今仍在Linux内核等大型项目中发挥关键作用。

2025-10-27 21:31:02 1222

原创 解码Linux文件IO之中文字库原理与应用

本文介绍了嵌入式系统中汉字显示的核心技术,重点解析了GB2312字符集的编码原理和实现方法。主要内容包括:1)GB2312字符集的分区规则,将7445个字符按区位划分;2)汉字双字节编码机制,通过区码和位码定位字符;3)点阵字库的生成与使用,包括16×16、24×24等常见分辨率;4)TrueType矢量字库的特点及移植方法。文章还提供了GB2312编码验证代码和字库位置计算公式,帮助开发者在嵌入式设备中实现中文显示功能。

2025-10-26 15:00:41 1254

原创 解码Linux文件IO之开机动画原理与实现

开机动画原理与实现 摘要:本文介绍了开机动画的核心原理及实现方法。开机动画利用人眼视觉暂留效应(0.1-0.4秒),通过连续播放静态图像(帧)产生动态效果。关键参数是帧率(FPS),24FPS为最低流畅要求,开机动画常用50FPS(每帧20ms)。实现步骤包括:1)使用工具将GIF/视频拆分为JPEG帧序列;2)编写程序通过LCD显存映射和JPEG解码显示动画帧;3)控制帧间隔保证流畅播放。开发时需注意帧顺序、分辨率匹配和存储空间限制,确保动画在嵌入式设备上稳定运行。

2025-10-25 17:37:41 1222

原创 解码Linux文件IO之JPEG图像原理与应用

摘要 JPEG是一种广泛应用于图像压缩的标准和文件格式,具有高压缩比优势,特别适合照片类图像存储和传输。其核心编解码库libjpeg采用C语言实现,跨平台且开源,是许多图像处理工具的底层依赖。在Linux环境下移植libjpeg需经过下载源码、解压、配置编译参数、编译和安装五个步骤,生成动态库和静态库文件。JPEG解码是将压缩数据转换为RGB像素的关键过程,通过创建解码对象、绑定文件、读取文件头等8个步骤实现,最终输出可用于LCD显示的RGB数据。解码过程需注意错误处理和资源释放,确保程序稳定性。

2025-10-24 21:35:05 1327

原创 解码Linux文件IO之库的制作与应用

程序从源代码到可执行文件需经历预处理、编译、汇编和链接四个阶段,最终生成ELF格式的可执行文件。预处理展开宏定义和头文件,编译将C代码转为汇编代码,汇编生成机器码目标文件(.o),链接合并多个目标文件和库文件并重定位地址。ELF文件包含.text(代码)、.data(已初始化数据)、.bss(未初始化数据)等关键段。 静态库(.a)是多个.o文件的归档集合,通过ar命令制作。程序链接静态库时会将库代码完整复制到可执行文件中,使程序不依赖外部库。静态库使用需提供头文件声明接口,链接时需指定库路径和名称。

2025-10-23 21:13:39 1128

原创 解码Linux文件IO之触摸屏原理及应用

Linux触摸屏输入子系统解析 本文详细介绍了Linux输入子系统对触摸屏的管理机制。系统采用三层架构:设备驱动层直接操作硬件并转换原始数据;核心层提供标准化接口实现上下层解耦;事件层通过/dev/input/eventX设备文件向应用提供统一访问接口。关键结构体input_event封装了所有输入事件,触摸屏操作通过EV_ABS(坐标)、EV_KEY(按压)和EV_SYN(同步)事件组合实现。文章还提供了设备文件识别方法和触摸屏检测代码示例,完整呈现了从硬件操作到应用层事件的转换流程。

2025-10-21 17:33:29 1370

原创 解码Linux文件IO之BMP 图像原理与应用

BMP(位图)是微软开发的图像文件格式,采用无压缩存储方式,文件较大但解析简单,适合本地开发。其结构由文件头(14字节)、信息头(40字节)、可选调色板和像素数据组成,总头部长54字节。关键特性包括:支持多种色深(1/4/8/24/32bit),24bit最常见;像素数据采用BGR顺序;行数据需4字节对齐;默认从下到上存储图像。BMP与JPEG、PNG等格式相比,优势在于无压缩、解码简单,但文件体积较大,适用于LCD显示等本地场景。开发时需注意小端存储、行对齐和像素格式转换等技术细节。

2025-10-20 21:28:37 1365

原创 解码Linux文件IO之LCD屏原理及应用

LCD 基本原理与驱动架构 LCD(液晶显示器)通过液晶分子的电光效应控制光线透射实现显示,其核心结构包括TFT基板、彩色滤光片和偏光片。全彩显示通过RGB三原色混合完成。关键参数包括像素(最小显示单元)、分辨率(像素总数)和色深(颜色数量)。在Linux系统中,LCD由Framebuffer驱动管理,通过设备文件/dev/fb0访问。驱动使用三个核心结构体(固定参数、可变参数、颜色位域)描述硬件特性,并通过ioctl系统调用实现参数配置。应用程序通过读写映射的内存空间即可控制屏幕显示,无需直接操作硬件。

2025-10-19 16:06:24 1508

drawtree.h画树的头文件

drawtree.h画树的头文件

2025-09-29

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除