花落已飘
阿里云博客专家,CSDN万粉博主,华为云享专家。擅长C语言单片机等技术智能小车带设计,单片机C语言设计。可以带徒弟学C语言,C加加,Linux,单片机,QT等嵌入式技术。也可承接项目。
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
RK3568设备树文件之间的关系
它可以理解为“芯片的通用模板”,任何基于 RK3568 的开发板设备树,最终都会包含它。这个文件就是“某个厂商某个板子的具体硬件描述”,对应 datasheet 里的原理图。它相当于“参考板级配置”,不同厂商做自己的板子时,一般会基于它再做修改。最终合并后,编译生成的。原创 2025-09-14 09:51:05 · 897 阅读 · 0 评论 -
RK3568 PWM驱动基础知识
本文介绍了RK3568芯片的PWM驱动基础知识。首先概述PWM在LED调光、电机调速等场景的应用,并解释其核心原理包括频率、占空比等关键参数。接着详细分析RK3568的PWM驱动支持,包括内核子系统和设备树配置,重点解析了PWM15节点的寄存器地址、中断号、时钟等硬件资源描述。最后说明PWM使用流程,从设备树配置到用户空间调用,帮助开发者快速实现对外设的精确控制。RK3568的PWM功能结合Linux子系统,为嵌入式开发提供了灵活的控制方案。原创 2025-09-14 10:01:58 · 895 阅读 · 0 评论 -
RK3568 PWM子系统
Linux PWM子系统采用三层架构设计:硬件驱动层实现具体控制器操作(需填充pwm_ops结构体);框架层通过pwm_chip抽象控制器,管理所有PWM通道;消费者层通过统一API调用PWM功能。核心机制是驱动实现硬件差异(pwm_ops),框架提供统一接口(pwm_chip),上层应用只需关注PWM参数(周期/占空比/极性)。设备树绑定后,消费者通过pwm_config()等标准接口操作,框架将其转发至底层驱动完成寄存器配置,实现硬件无关的PWM控制。原创 2025-09-14 10:15:27 · 1000 阅读 · 0 评论 -
RK3568编写自启动脚本
本文介绍了Linux嵌入式系统中自启动脚本的编写方法。自启动脚本通常存放在/etc/init.d/目录下,以S/K开头的数字编号控制启动/停止顺序。脚本包含Shebang、Init信息和case语句三部分,用于处理start/stop/restart命令。文章提供了/mnt/EasyLoggerLinuxDemo程序的自启动脚本示例,说明如何后台运行、停止程序及设置权限,并介绍通过update-rc.d命令注册开机自启。这种方法可实现程序开机自动启动、后台运行和统一管理。原创 2025-09-14 11:06:47 · 859 阅读 · 0 评论 -
RK3568(使用buildroot添加软件包)
本文介绍了如何在Buildroot中创建自定义软件包。主要内容包括:1)在package目录下新建myapp文件夹;2)编写Config.in文件定义配置选项;3)创建myapp.mk文件指定构建规则;4)可选地添加myapp.hash文件进行源码校验。最后需要在package/Config.in中添加引用,即可通过make menuconfig启用该软件包。通过这种方法,开发者可以方便地将本地或远程的应用程序集成到Buildroot构建系统中。原创 2025-09-14 14:43:36 · 1170 阅读 · 0 评论 -
RK3568 PWM驱动代码分析
RK3568 PWM驱动分析摘要 本文详细分析了Rockchip RK3568的PWM驱动实现,包括设备树配置与驱动源码的对应关系。设备树节点定义了寄存器地址、时钟、中断等硬件资源,驱动通过compatible匹配不同芯片版本(如pwm_data_v2)。核心数据结构rockchip_pwm_chip包含PWM控制器信息,驱动初始化时会映射寄存器、获取时钟并注册到PWM子系统。关键函数rockchip_pwm_config()和rockchip_pwm_apply()负责配置周期/占空比和使能控制,通过读写原创 2025-09-14 10:25:17 · 975 阅读 · 0 评论 -
uinput
Linux的uinput机制允许用户空间程序创建虚拟输入设备,模拟键盘、鼠标等物理设备的输入行为。通过/dev/uinput接口,程序可以设置设备属性、发送输入事件并同步到内核。典型应用包括自动化测试、游戏控制、远程桌面等场景。使用时需加载uinput模块、处理权限问题,并注意同步事件通知内核。该机制通过input_event结构传递事件,最终由内核处理为真实输入,为系统级输入仿真提供了灵活的用户态解决方案。原创 2025-07-27 20:15:37 · 741 阅读 · 0 评论 -
input_handler和input_dev详解
摘要: Linux输入子系统采用分层架构,由input_dev(设备驱动层)、input_handler(协议驱动层)和input_handle(连接桥梁)构成。设备驱动通过input_dev注册硬件(如触摸屏、键盘),设置支持的事件类型;协议驱动通过input_handler提供用户空间接口(如/dev/input/eventX)。当两者匹配成功后,input_handle建立绑定关系,实现事件传递。核心流程为:驱动注册设备→协议处理器匹配→创建事件节点→用户程序读取输入。该设计实现了输入设备的统一抽象与原创 2025-07-27 09:53:05 · 1163 阅读 · 0 评论 -
USB驱动(URB)
本文介绍了Linux内核中USB驱动开发的核心概念URB(USB Request Block)。URB是主机与USB设备间传输数据的抽象结构体,包含目标设备、端点信息、数据缓冲区等关键字段。文章详细解析了URB的生命周期(分配、填充、提交、回调、释放)、四种传输类型(控制、批量、中断、等时)及其应用场景,并提供了鼠标设备的中断传输示例代码。最后强调了URB使用注意事项,包括DMA缓冲区分配、错误处理和资源释放等。URB作为USB驱动与内核通信的桥梁,是构建稳定USB驱动程序的基础。原创 2025-07-25 10:29:18 · 749 阅读 · 0 评论 -
input子系统
Linux Input子系统是内核中用于管理各类输入设备的统一框架。它采用三层架构:驱动层负责硬件交互,核心层提供注册和事件上报接口,处理层通过/dev/input节点向用户空间提供访问。主要数据结构包括input_dev(设备描述)、input_event(事件封装)和input_handler(事件处理模块)。驱动开发涉及设备分配、属性设置、注册和事件上报流程,用户空间可通过读取设备文件获取事件。系统还支持虚拟输入设备(uinput)和提供多种调试工具,广泛应用于嵌入式设备、触摸屏、游戏手柄等场景,实现原创 2025-07-15 10:57:12 · 807 阅读 · 0 评论 -
libusb的同步和异步
本文介绍了 libusb 库中的同步与异步 USB 传输机制。同步传输简单易用但会阻塞线程,适合简单应用;异步传输非阻塞且性能更高,但编程复杂度较大,适合高速数据传输场景。文章详细讲解了两种传输方式的操作流程、关键函数和示例代码,并对比了它们的特性差异。最后总结了常见错误排查方法和使用建议,推荐从同步传输入门,逐步过渡到异步实现,同时强调了异步模式下必须正确处理事件的重要性。原创 2025-07-13 16:51:45 · 752 阅读 · 0 评论 -
使用libusb读取鼠标数据
本文介绍了使用libusb库读取USB鼠标数据的方法。主要内容包括:通过libusb_init初始化USB通信,获取设备列表并查找符合HID鼠标协议的设备(bInterfaceClass=3,bInterfaceProtocol=2);找到中断传输端点后,使用libusb_open打开设备并声明接口;最后通过libusb_interrupt_transfer循环读取鼠标数据包(通常每8ms发送一次),解析其中的按键状态和位移信息。文章提供了完整的代码框架,实现不依赖内核驱动直接与USB设备通信的功能。原创 2025-07-13 14:42:51 · 480 阅读 · 0 评论 -
理解 USB 的配置信息与接口信息:深入 libusb 的描述符结构
本文深入解析了USB设备的配置(Configuration)与接口(Interface)概念及其在libusb库中的数据结构。USB配置代表设备的一种工作模式,包含多个接口;每个接口描述设备的一项功能,如HID或音频接口,并可具有多个备选设置。libusb提供了三个关键结构体:libusb_config_descriptor表示配置信息,libusb_interface管理接口及其备选设置,libusb_interface_descriptor描述具体接口特性。文章还展示了通过libusb获取和打印接口信息原创 2025-07-13 14:34:56 · 1098 阅读 · 0 评论 -
HID协议
HID(人机接口设备)协议是一种标准化的通信协议,用于规范计算机与鼠标、键盘等交互设备的数据传输。该协议通过描述符系统定义设备功能,核心是Report Descriptor,它规定了数据的组织格式。HID设备使用Input、Output和Feature三种报告类型进行双向通信,采用USB中断传输确保实时性。其优势包括免驱支持、跨平台兼容性和高度可配置性,适用于从标准外设到自定义设备的开发。相比CDC和MSC协议,HID在实时交互场景中更具优势,是嵌入式设备开发的理想选择。原创 2025-07-12 10:48:57 · 991 阅读 · 0 评论 -
libusb库关键函数讲解
本文介绍了一个基于libusb库的USB设备通信程序,主要用于连接特定VID/PID的USB设备(如鼠标或HID设备)并读取中断数据。程序流程包括:初始化libusb、打开目标设备、解除内核驱动绑定、声明接口控制权、获取设备描述符和配置信息、创建线程进行中断数据传输。关键函数详解了libusb_init()、libusb_open_device_with_vid_pid()、libusb_interrupt_transfer()等API的参数、返回值和使用方法。最后说明了完整的释放资源流程。该程序适用于需要原创 2025-07-06 16:31:51 · 909 阅读 · 0 评论 -
RK3568移植libusb库
libusb是一个开源、跨平台的USB 设备访问库,允许在用户空间中直接访问 USB 设备,无需编写内核驱动。它支持等多个平台,广泛应用于嵌入式开发、设备调试、USB 通信程序开发等领域。libusb是一个简洁高效的用户态 USB 编程接口,让开发者无需编写驱动就能实现 USB 通信,是嵌入式与桌面应用中控制 USB 设备的重要工具。原创 2025-07-06 10:34:04 · 1205 阅读 · 0 评论 -
RK3568音频设备使用
框架,支持多种音频接口(I2S、SPDIF、HDMI、USB Audio),并通过设备树、驱动与外设(如 Codec)结合。的 API 进行音频播放和录音,见上面你提到的 C 示例中使用。注意:驱动是否支持该 codec,要确认内核启用了。在 RK3568 平台上,音频设备的使用通常基于。的完整指南,适合移植和开发。原创 2025-06-22 10:53:05 · 1774 阅读 · 0 评论 -
RK3568移植lvgl后触摸屏无响应问题解决
摘要: LVGL移植后界面显示正常但触摸无响应?本文提供系统性排查方案: 1️⃣ 硬件排查:确认/dev/input/eventX设备存在且hexdump能捕获触摸事件; 2️⃣ 驱动配置:检查LVGL代码中设备路径是否匹配实际设备(如event0或event2); 3️⃣ 软件逻辑: 验证evdev_init()是否成功打开设备; 确保lv_indev_drv_register正确注册输入设备; 主循环中定期调用lv_timer_handler()处理事件; 4️⃣ 数据校验:在evdev_read()中原创 2025-06-22 10:04:52 · 1216 阅读 · 0 评论 -
RK3568使用LVGL(rga的作用)
摘要: 在RK3568平台上,结合LVGL轻量级GUI库和RGA(Raster Graphic Accelerator)硬件加速模块,可显著提升图形界面性能。RGA支持图像缩放、旋转、格式转换等操作,降低CPU负担,适用于高帧率UI渲染。实现时需通过librga库调用RGA接口(如c_RkRgaBlit),在LVGL的flush_cb回调中完成显存加速写入。关键步骤包括初始化RGA、配置LVGL显示驱动、编译链接librga,并确保内核驱动和内存对齐要求。此方案适用于工业屏、车载仪表等高性能场景。原创 2025-06-21 11:18:04 · 1821 阅读 · 0 评论 -
RK3568交叉编译lvgl源码
本文详细介绍了在RK3568开发板上使用CMake交叉编译LVGL应用程序的全过程。首先将LVGL库文件和头文件安装到系统路径,然后通过编写toolchain.cmake配置交叉编译工具链,包括设置目标平台、编译器路径和系统根目录。主CMakeLists.txt文件定义了项目结构、包含路径、库链接等关键构建参数,最终生成可在开发板运行的可执行文件。整个流程涵盖了从源码编译、库文件安装到交叉编译配置的完整环节,为嵌入式GUI开发提供了清晰的参考实现。原创 2025-06-21 10:58:44 · 1573 阅读 · 0 评论 -
RK3568使用buildroot编译lvgl
摘要:本文介绍了使用Buildroot自动编译LVGL图形库的方法。Buildroot作为嵌入式Linux构建系统,通过包管理机制自动完成LVGL源码的下载、编译和安装全过程。操作步骤包括进入RK3568 SDK环境、执行menuconfig配置界面搜索并选中LVGL包、保存配置后编译整个系统。该方法简化了LVGL的移植流程,无需手动处理依赖关系,编译完成后LVGL将自动集成到目标根文件系统中。文中配有详细的命令行截图说明各步骤操作。原创 2025-06-21 09:52:17 · 1033 阅读 · 0 评论 -
使用lighttpd和开发板进行交互
本文介绍了如何在嵌入式开发板上使用Lighttpd Web服务器实现硬件交互功能。主要内容包括:Lighttpd通过CGI程序间接控制硬件的基本原理;lighttpd.conf配置文件的详细解析;开发板文件目录结构设计;用C语言编写控制GPIO的CGI程序示例;网页调用CGI实现按钮触发控制的HTML代码;常见问题调试建议。最后通过效果图展示了网页按钮点击后成功控制LED灯的实际效果,验证了Lighttpd+CGI方案在嵌入式设备Web控制中的可行性。原创 2025-06-01 14:39:02 · 1344 阅读 · 0 评论 -
RK3568交叉编译lighttpd
本文详细介绍了在ARM开发板上交叉编译和部署轻量级Web服务器lighttpd的完整流程。主要内容包括:1)下载并解压lighttpd源码;2)配置交叉编译工具链;3)编译安装到指定目录;4)将生成文件部署到开发板的对应位置;5)配置lighttpd.conf文件,详细解析了各模块功能、目录设置、日志记录等关键参数;6)最终成功运行lighttpd服务并通过浏览器访问验证。该方案实现了在嵌入式设备上搭建高效Web服务器,适用于物联网设备管理、文件共享等应用场景。原创 2025-06-01 10:59:13 · 996 阅读 · 0 评论 -
CGI概念讲解
CGI(通用网关接口)是Web服务器调用后端程序的接口标准,常用于嵌入式系统实现动态网页交互。其工作流程为:浏览器发起请求→Web服务器调用CGI程序→程序处理参数(通过环境变量或标准输入)→输出结果返回浏览器。嵌入式设备因资源有限,常用轻量服务器(如boa)配合C语言或Shell脚本编写的CGI实现设备配置(IP/参数设置)、状态查询(温度/电压)及硬件控制(LED开关)。CGI程序需输出HTTP头部(如"Content-type: text/html")和HTML内容,并存放于/cg原创 2025-06-01 07:59:20 · 814 阅读 · 0 评论 -
RK3568使用gpio子系统完成led驱动程序编写
正点原子的RK3568中,LED灯被用于了心跳灯,所以在这里我们需要关闭这个心跳灯,使用status = "disable"即可关闭。原创 2025-03-30 21:17:20 · 1112 阅读 · 0 评论 -
RK3568 GPIO子系统
Linux 内核 GPIO 子系统的主要作用是。原创 2025-03-29 16:43:31 · 1061 阅读 · 0 评论 -
RK3568 pinctrl内容讲解
pinctrl机制通过在设备树中配置引脚的功能、复用、输入输出模式、电气特性等,确保系统中的硬件引脚得到合理的管理和使用。它在嵌入式系统中尤其重要,帮助开发者正确配置硬件引脚,避免引脚冲突,提高硬件资源的利用效率。这段设备树定义了 5 个 GPIO 控制器,每个控制器管理一组 GPIO 引脚。控制器的基地址和大小。相关时钟源和中断配置。配置每个控制器的引脚数量和中断管理。通过这些配置,系统可以正确地控制 GPIO 引脚,处理中断事件,并确保硬件时钟的正常运行。原创 2025-03-29 16:26:06 · 1059 阅读 · 0 评论 -
RK3568 设备树基础语法讲解
设备树(Device Tree, DT)是一种用于描述硬件的数据结构,主要用于及其他嵌入式系统中,以独立于内核代码的方式提供硬件信息。它的作用是让内核在启动时能够动态解析硬件配置,而无需对内核代码进行修改。在 ARM 体系中,设备树广泛用于Linux 内核、Bootloader(如 U-Boot),它解决了传统的“板级文件”模式(即在内核中硬编码硬件信息)的问题,使得同一份内核可以适用于不同的硬件平台。.dts设备树源文件,定义具体开发板的硬件信息。.dtsi设备树包含文件,用于公共配置,被多个。原创 2025-03-26 21:23:02 · 1035 阅读 · 0 评论 -
RK3568 驱动和设备匹配的几种方法
在实际开发中,选择合适的匹配方式能提高驱动程序的兼容性和可移植性。进行匹配,以便正确加载并控制设备。Linux 提供了多种。I2C、SPI 总线上的设备(如传感器、EEPROM)。不同的匹配方式适用于不同的总线和设备类型。USB 设备,如 U 盘、键盘、鼠标。该匹配方式用于系统所有总线级设备匹配。,不同类型的设备使用不同的匹配方法。PCI 设备,如显卡、网卡。(如 SoC 内部设备)。原创 2025-03-26 21:33:08 · 939 阅读 · 0 评论 -
RK3568使用QT搭建TCP服务器和客户端
本程序创建了一个简单的 TCP 客户端,能够连接到服务器并与其进行数据交互。窗口界面包含:显示日志的文本框、输入消息的文本框、连接服务器的按钮和发送消息的按钮。程序使用QTcpSocket类实现与服务器的连接和数据传输,能够实时显示连接状态、发送的消息和接收到的消息。这个程序实现了一个简单的 TCP 服务器,能够监听客户端连接,接收客户端发送的数据,并能够向客户端发送消息。服务器通过QTcpServer类来启动监听,并使用QTcpSocket类与客户端进行通信。原创 2025-01-31 20:12:55 · 1457 阅读 · 0 评论 -
RK3568使用QT操作LED灯
在 Qt 中操作硬件设备的基本思路是通过文件接口来访问设备。通过QFile和可以像处理普通文件一样与设备文件交互。设备文件通常位于/dev目录下,通过读写这些文件来发送命令或获取设备数据。Qt 提供的文件和流接口,使得硬件操作变得非常简洁,避免了与硬件的直接交互细节。原创 2025-01-31 19:39:24 · 1407 阅读 · 0 评论 -
RK3568中使用QT opencv(显示基础图像)
是一个工具,用来提供已安装库的信息,如编译器标志和链接器标志,以便构建系统可以正确地链接这些库。来自动化获取OpenCV 4的编译和链接信息,以便在Qt项目中正确地链接到OpenCV 4库。这里使用的是正点原子的ubuntu虚拟机,在他的虚拟机里面已经安装好了opencv的库。会提供有关如何链接OpenCV 4的必要信息,例如需要的编译和链接标志。来查找OpenCV 4库(opencv4)。文件)有关,用来在项目中链接外部库。这两行代码与Qt的构建系统(特别是。这行代码告诉Qt的构建系统使用。原创 2025-01-29 20:21:25 · 1130 阅读 · 0 评论 -
RK3568使用opencv(使用摄像头捕获图像数据显示)
用于从视频设备(如摄像头)获取图像帧。cv::Mat:用于存储图像数据的矩阵。每一帧图像都是一个cv::Mat对象。:用于颜色空间转换,通常用于将 OpenCV 的 BGR 格式转换为 Qt 的 RGB 格式。QImage:Qt 用于表示图像数据的类,提供了从原始数据创建图像并显示的功能。QPixmap:Qt 用于显示图像的类,通常用于在界面中显示图像。这些类和函数组合在一起,使得 OpenCV 能够与 Qt 无缝集成,从摄像头捕获图像并显示在 Qt 界面中。原创 2025-01-29 20:30:04 · 2253 阅读 · 0 评论 -
RK3568 opencv播放视频
是 OpenCV 进行视频播放的核心类,可以从文件、摄像头读取视频。基本流程是打开视频 -> 逐帧读取 ->显示 -> 监听控制播放。可以获取/设置视频属性,如帧率、宽高等。性能有限,如果对播放速度、格式兼容性有较高要求,建议结合FFmpeg或Qt 多媒体模块。原创 2025-01-30 21:29:31 · 1726 阅读 · 0 评论 -
RK3568使用MIX415摄像头
MIX415 摄像头是一款高性能、低功耗的 CMOS 图像传感器,适用于多种嵌入式和消费电子产品。其高分辨率、低光性能和图像处理能力,使其在安防监控、智能家居、自动驾驶等领域具有广泛应用。原创 2025-01-26 13:45:11 · 1462 阅读 · 0 评论 -
RK3568 adb使用
ADB(Android Debug Bridge)是 Android SDK 提供的一个命令行工具,主要用于开发者与 Android 设备之间进行调试和管理。它是 Android 操作系统与开发者工作站之间的桥梁,允许开发者在设备上执行各种操作,进行调试、安装应用、查看日志等。ADB 主要功能设备管理连接、管理和控制 Android 设备(包括模拟器和真实设备)。通过命令查看当前连接的设备列表。应用管理安装、卸载、更新应用:安装 APK:adb install <path-to-apk>原创 2025-01-26 12:24:13 · 1971 阅读 · 0 评论
分享