- 博客(52)
- 收藏
- 关注
原创 嵌入式Linux:移植使用scp指令
在嵌入式linux开发中经常需要文件传输,我现在使用NFS来实现ubuntu和嵌入式Linux开发板的文件共享传输,但是还是想要使用scp指令,快捷一点,就想着移植openssh,下载源码解压编译后,在开发板上生成密钥报错,如下:搜索发现,重新移植根文件系统来升级GLIC,哇,就很离谱啊,,我就是想使用个scp指令而已,搞这么麻烦干嘛,你干嘛,哎呦!!!!!!!,,,,,,但是无所谓,不更新根文件系统,我直接手动创建一个mini_scp,在开发板和主机之间轻松传输文件。一、mini_scp?
2025-05-21 12:14:10
598
原创 记录使用modprobe加载驱动时提示:Invalid argument错误
在内核进行设置后要对内核进行重新编译后,在对驱动模块进行编译,如下,可看到重新编译内核后在编译驱动模块并拷贝到开发板,在开发板上能够正常加载驱动。在修改内核设置后没有重新进行编译,并且在编译驱动模块时,使用了旧的内核进行编译(也就是修改后没有重新编译的Linux内核)
2025-05-19 08:29:44
378
原创 嵌入式Linux:使用RTL8188实现WIFI驱动
在本篇文章中,硬件设备使用正点原子的阿尔法嵌入式Linux开发板,并使用RTL8188 USB wifi模块实现开发板连接外网操作,主要内容包括:添加wifi驱动,移植无线网卡工具,移植wpa_supplicant,最后完成对网络的连接。一、添加RTL8188驱动1.iwconfig:设置无线网络参数(频道、加密等)2.iwlist:扫描并显示无线网络信息(信号强度、加密类型等)3.iwspy:监控每个节点链接质量4.iwpriv:操作无线扩展特定驱动。
2025-05-19 04:57:37
2383
原创 ESP32通过MQTT协议上传数据至华为物联网平台
下面是我使用的esp32连接上华为云平台并间隔2s向华为云上传信息,如下所示,大家在使用时可以改为自己的wifi信息以及,MQTT接入信息等。
2025-05-16 00:36:32
394
原创 仿正点原子驱动BMP280气压传感器实例
BMP280_Bosch(博世)_BMP280中文资料_PDF手册_价格-立创商城下载数据手册。一、寄存器头文件定义#define BMP280_ADDR 0x76 /* BMP280器件地址*//* BMP280寄存器 */#define BMP280_ID_REG 0xD0 /* 芯片ID寄存器,值是0x58 */#define BMP280_RESET_REG 0xE0 /* 复位寄存器 */#define BMP280_STATUS_REG 0xF3 /* 状态寄存器 */
2025-05-13 23:23:30
1296
原创 嵌入式Linux I2C驱动开发详解
SCL:由主设备控制的时钟信号线,用于同步数据传输。(4)应答(ACK/NACK):接收方在第9个时钟周期拉低SDA(ACK)表示成功接收,否则为NACK。(1)作用:对应SoC中的I2C控制器(如STM32的硬件I2C模块),提供与从设备通信的底层能力。(1)作用:提供I2C总线驱动和设备驱动的注册/注销接口,管理I2C总线的仲裁、重试和协议细节。(1)起始信号(START):SCL高电平时,SDA从高变低,表示通信开始。(2)停止信号(STOP):SCL高电平时,SDA从低变高,表示通信结束。
2025-05-12 14:48:30
774
原创 嵌入式 Linux 中的 MISC 驱动:万能插座
在嵌入式 Linux 开发中,驱动程序是连接硬件和操作系统的桥梁。对于一些功能简单、无法归类的设备(比如传感器、调试接口),传统的驱动开发可能会让人感到“麻烦”。这时候,MISC(杂项)驱动就派上用场了!它就像一个“万能插座”,能快速适配各种不规则的硬件设备。一、什么是 MISC 驱动?1.1 为什么需要 MISC 驱动?想象一下,一块嵌入式板子,上面接了一个外设——如一个自定义的温度传感器。这个传感器既不像键盘、鼠标,也不像网卡、存储设备。它功能简单,但又需要被 Linux 系统识别和访问。
2025-05-12 01:00:00
596
原创 嵌入式 Linux Platform 驱动模型测试
概念作用Platform 总线负责匹配设备和驱动,像“红娘”一样连接两者。Platform 设备描述硬件资源(寄存器、中断等),通常通过设备树定义。Platform 驱动实现设备操作逻辑,通过probe()初始化设备,通过remove()释放资源。
2025-05-07 23:32:51
1476
原创 嵌入式Linux驱动中的异步通知机制
在嵌入式Linux开发中,异步通知(Asynchronous Notification)是一种高效的设备访问机制,特别适用于需要实时响应硬件事件。相比于传统的阻塞式I/O和轮询方式,异步通知能够在事件发生时主动通知应用程序,从而显著降低CPU占用率并提高系统响应速度。一、异步通知的核心概念异步通知是Linux内核提供的一种软件层次上的中断模拟机制。当设备发生特定事件(如数据可读、按键按下)时,驱动程序会向用户空间发送一个信号(如SIGIO),通知应用程序立即处理事件。
2025-05-06 14:30:56
799
原创 Qt实现网页内嵌
首先,确保你的Qt安装包含了QtWebEngine模块。我的Qt是5.12.9并且使用MSVC来编译项目。mainwindow.cpp,主要实现的简单网页浏览器,其通过QWebEngineView组件实现了网页内嵌功能。
2025-05-05 22:20:49
1284
原创 嵌入式Linux阻塞与非阻塞IO简介
优点:单线程可处理多个IO操作,不会被IO操作阻塞,可以同时处理其他任务。缺点:,需要不断轮询,消耗CPU资源,代码逻辑复杂,轮询频率设置困难。优点:编程模型简单,无需额外状态检查,不消耗CPU资源等待数据。缺点:线程被阻塞无法处理其他任务,需要多线程处理多IO操作。
2025-05-03 12:47:00
338
原创 ESP32通过MQTT协议上传数据至onenet物联网平台(新版)
如下为esp32端的代码:将其中的相关部分替换为自己的内容,以及修改上报数据格式和sendMessage()这个函数的相关定义改为自己的数据格式就行。随后将自己的产品id和设备id替换掉第一行中的相关部分,第二行为未来的时间戳,第三行为自己的access_key,点击生成即可。输入未来时间(就是你希望你的这个token在什么时候过期失效)
2025-04-29 12:14:42
590
原创 ESP32通过MQTT协议上传数据至阿里云物联网平台
下面是我使用的代码,大家在使用时,修改为自己的三元组信息,MQTT连接参数,并且修改mqttIntervalPost()这个函数,将要上传的数据格式改为自己的数据格式就行。/* 连接WIFI SSID和密码 *//* 设备的三元组信息*///连接wifi//mqtt连接while (!");
2025-04-29 10:58:38
756
原创 Linux内核中的jiffies:时间管理
jiffies是Linux内核时间管理的基础,尽管有精度限制,但其简单性和可靠性使它成为最常用的时间计数机制。理解jiffies的工作原理和最佳实践对内核和驱动开发至关重要。
2025-04-28 14:20:09
561
原创 Linux按键驱动测试
驱动中定义了两个按键状态:按下(1)和未按下/无效(0)。#define KEY0VALUE 1 /* 按键值 */#define INVAKEY 0 /* 无效的按键值 */
2025-04-28 13:34:56
751
原创 Linux内核自旋锁详解
自旋锁(Spinlock)是Linux内核中最基本的同步机制之一,特别适用于嵌入式系统中的短期锁定需求。它通过"忙等"方式实现,持续检查锁是否可用,而不会让出处理器。自旋锁是嵌入式Linux系统中重要的同步机制,适合短临界区保护。在资源受限的嵌入式环境中,正确使用自旋锁能有效避免竞态条件,同时保持系统的响应性和效率。但需要谨慎设计锁定策略,避免性能问题和死锁风险。
2025-04-22 12:23:56
634
原创 LDR、MOV和STR指令详解
ARM汇编中的LDR、MOV和STR是三个最基础也最常用的指令,它们分别用于数据加载、数据移动和数据存储操作。理解这三个指令的区别和正确用法对掌握ARM架构编程至关重要。一、LDR用于从内存加载数据到寄存器MOV用于寄存器间移动数据或将立即数加载到寄存器STR用于将寄存器数据存储到内存在效率和适用场景上,MOV最快但功能受限,LDR最灵活但速度较慢良好的汇编代码应平衡使用这三种指令,根据具体场景选择最优方案。
2025-04-19 11:29:34
1030
原创 ESP32驱动BMP280和MQ4传感器
在物联网和环境监测应用中,传感器是获取环境数据的关键组件。本文将详细介绍如何使用ESP32微控制器同时驱动BMP280大气压力传感器和MQ4甲烷气体传感器一、
2025-03-26 10:40:39
1107
原创 HTTP请求方法详解:GET、POST、PUT在微信小程序中的应用
HTTP(超文本传输协议)是Web应用程序通信的基础,在微信小程序开发中,我们经常需要与服务器进行数据交互。本文将深入探讨三种最常用的HTTP请求方法:GET、POST和PUT。HTTP协议定义了多种请求方法,用于指定对服务器上资源执行的操作。GET:请求获取资源POST:提交数据,创建新资源PUT:更新已有资源DELETE:删除资源HEAD:获取响应头OPTIONS:获取服务器支持的HTTP方法PATCH:对资源进行部分修改。
2025-03-16 10:55:37
1711
原创 FTP 与 TFTP 的详细异同点
在网络文件传输协议中,FTP(File Transfer Protocol)和 TFTP(Trivial File Transfer Protocol)是两种常见的协议。尽管它们都用于文件传输,但在设计目标、功能和使用场景上有显著差异。一、协议对比。
2025-03-10 17:06:32
1673
原创 使用 QML 和 QtSql 实现 SQLite 数据库操作
在现代应用程序开发中,数据库操作是不可或缺的一部分。Qt 提供了强大的 QtSql 模块,可以轻松地与 SQLite 数据库进行交互。本文将详细介绍如何使用 QML 和 C++ 后端实现 SQLite 数据库的增删改查(CRUD)操作。一、
2025-03-05 13:27:39
1062
1
原创 记录Qt 虚拟键盘样式修改与使用
在 Qt 开发中,虚拟键盘是移动设备和嵌入式设备中常用的输入工具。本文将详细介绍如何通过 QML 修改虚拟键盘样式,并实现从 QML 界面跳转到 QWidget 设计的 UI 界面并将Qt程序移植到嵌入式Linux开发板。一、使用虚拟键盘Qt 提供了虚拟键盘模块,只需在.pro文件中添加再在main.cpp中添加即可在输入框中使用虚拟键盘,在将程序移植到嵌入式linux开发板时,发现点击输入框时,虚拟键盘会覆盖整个显示屏,如下,于是使用qml来修改虚拟键盘的样式就非常有必要。二、项目文件定义。
2025-02-22 20:51:31
1826
2
原创 QML 与 QWidget:联系、区别与使用场景
在 Qt 框架中,QML 和 QWidget 是两种不同的技术,用于构建用户界面。它们各有优缺点,适用于不同的场景。本文将详细介绍它们的联系、区别以及使用场景。QML 和 QWidget 是 Qt 框架中两种不同的界面技术,各有优缺点和适用场景。QWidget 适合传统桌面应用和复杂界面,而 QML 适合现代用户界面和快速开发。在实际项目中,可以根据需求选择合适的技术,甚至混合使用它们。
2025-02-22 20:03:26
985
原创 基于 Qt 的 TCP 客户端和服务端通信实现
文章目录前言一、功能需求二、代码实现2.1 服务端代码2.2 客户端代码 三、编译运行本文将介绍如何使用 Qt 实现一个简单的 TCP 客户端和服务端通信程序。服务端监听指定 IP 和端口,客户端连接到服务端后,双方可以互相发送消息。其中客户端的ip为192.168.10.50的嵌入式Linux开发板。1. 服务端:2. 客户端:mainwindow.h mainwindow.cpp2.2 客户端代码mainwindow.hmainwindow.cpp 三、编译运行对于客户端
2025-02-20 21:47:36
1026
原创 嵌入式 Linux:使用设备树驱动GPIO全流程
在嵌入式 Linux 开发中,设备树(Device Tree)和 GPIO 子系统是控制硬件设备的重要工具。本文将详细介绍如何使用设备树和 GPIO 子系统驱动 LED 灯,包括在设备树中添加 pinctrl 节点、设备节点,以及编写驱动程序的全流程。一、通过设备树和 GPIO 子系统驱动 LED 灯的流程如下:1. 在设备树中添加 pinctrl 节点,配置 GPIO 引脚。2. 在设备树中添加 LED 设备节点,描述 LED 的 GPIO 引脚和属性。
2025-02-20 12:44:53
1936
原创 嵌入式 Linux :Pinctrl 与 GPIO 子系统详解
Pinctrl(Pin Control)子系统是 Linux 内核中用于管理芯片管脚复用的框架。它负责配置芯片的管脚功能,例如将某个管脚配置为 GPIO、UART、I2C 等。管脚复用配置:将芯片的物理管脚配置为特定的功能。管脚电气属性配置:配置管脚的电气属性,如上拉、下拉、驱动能力等。GPIO(General Purpose Input/Output)子系统是 Linux 内核中用于管理通用输入输出管脚的框架。它提供了统一的接口来控制 GPIO 管脚,包括设置方向、读取输入、设置输出等。
2025-02-19 13:44:21
901
原创 嵌入式 Linux 设备树中的标准属性详解
在嵌入式 Linux 系统中,设备树(Device Tree)是一种描述硬件资源的数据结构,用于将硬件信息从内核代码中分离出来。设备树的引入极大地简化了嵌入式 Linux 系统的移植和维护工作。本文将详细介绍设备树中的标准属性。设备树是一种树形结构的数据格式,用于描述硬件平台的资源信息,如 CPU、内存、外设等。
2025-02-18 14:49:45
746
原创 嵌入式 Linux 设备树:为什么需要设备树?
设备树为驱动提供了硬件信息,驱动通过解析设备树获取硬件配置以完成驱动的加载。总之,设备树是嵌入式 Linux 系统中描述硬件资源的重要机制,它实现了硬件与内核的分离,简化了系统的移植和维护。
2025-02-17 20:55:42
867
原创 嵌入式 Linux 设备驱动:自动创建设备节点详解
在嵌入式 Linux 设备驱动开发中,设备节点是用户空间与内核空间交互的桥梁。传统的手动创建设备节点方式(mknod)不仅繁琐,而且容易出错,在每次加载设备驱动时都要手动对设备的节点进行创建。本文将详细介绍如何在 Linux 驱动中实现设备节点的自动创建。设备节点是 Linux 系统中用于访问硬件设备的特殊文件,位于 /dev 设备目录下。字符设备节点:用于字符设备(如 LED、按键等)。块设备节点:用于块设备(如硬盘、U 盘等)。
2025-02-17 19:54:56
736
原创 嵌入式 Linux 驱动开发:点灯大法
在嵌入式 Linux 系统中,设备驱动是连接硬件与操作系统的桥梁。点灯大法好,通过编写 Linux 驱动,可以方便地控制开发板上的 LED 灯。
2025-02-15 22:04:04
724
原创 HTTP 与 HTTPS:协议详解与对比
HTTP 是一种无状态的应用层协议,主要用于在客户端和服务器之间传输超文本(如 HTML 文件)。HTTP 协议基于请求-响应模型,客户端发送请求,服务器返回响应。HTTPS 是在 HTTP 基础上增加了 SSL/TLS 加密层的协议,用于保护数据传输的安全性。HTTPS 通过加密和身份验证,防止数据被窃听、篡改和冒充。
2025-02-15 21:03:44
1447
原创 Linux 驱动开发:字符设备、块设备与网络设备驱动详解
Linux 内核支持多种类型的设备驱动,主要包括字符设备驱动、块设备驱动和网络设备驱动。字符设备是指以字节流形式进行数据读写的设备,例如键盘、鼠标、串口等。字符设备驱动的主要特点是数据按顺序访问,不支持随机访问。块设备是指以数据块为单位进行读写的设备,例如硬盘、SSD 等。网络设备是指用于网络通信的设备,例如网卡、无线网卡等。1. 定义设备结构体,包含设备名称、MAC 地址等信息。1. 定义设备结构体,包含设备号、设备名称等信息。1. 定义设备结构体,包含设备号、设备名称等信息。
2025-02-14 23:21:22
1060
原创 ESP32通过MQTT连接阿里云平台实现消息发布与订阅
本文将介绍如何使用ESP32开发板通过MQTT协议连接阿里云物联网平台,并实现消息的发布与订阅功能。我们将使用Arduino IDE进行开发,并借助PubSubClient库实现MQTT通信。通过本文,能够成功实现了ESP32与阿里云物联网平台的MQTT通信。
2025-02-13 12:54:14
845
原创 TCP与UDP:网络通信中的“可靠先生”与“极速先锋”
在计算机网络中,TCP和UDP是传输层的两大核心协议,它们像性格迥异的兄弟,分别以不同的方式完成数据传输。理解它们的特性是开发高性能网络应用的关键。本文将深入对比二者差异,并探讨它们的适用场景。TCP和UDP就像汽车的刹车与油门——没有绝对的好坏,只有适合的场景。理解它们的本质,才能在开发中做出最佳选择。下次设计网络模块时,不妨先问自己:这个场景需要的是TCP的可靠,还是UDP的速度?
2025-02-13 10:59:46
364
原创 深入理解 MQTT 协议:物联网通信的核心
MQTT(Message Queuing Telemetry Transport)是一种轻量级的发布/订阅消息传输协议,专为低带宽、不稳定网络环境下的物联网设备设计。它由 IBM 在 1999 年开发,现已成为物联网(IoT)领域最流行的通信协议之一。
2025-02-12 23:48:11
1188
1
原创 基于Qt 和微信小程序的用户管理系统:WebSocket + SQLite 实现注册与登录
本文将介绍如何通过 Qt 和 微信小程序实现一个用户管理系统,其中Qt服务端运行在嵌入式Linux设备IMX6ULL上,支持用户和运维人员的注册与登录功能,并将数据存储到开发板设备的SQLite 数据库中。支持微信小程序端和Qt服务端同时对用户的个人信息数据进行增删改查操作。在微信小程序注册时,将数据通过WebSocket写入到开发板的SQLite数据库中,在进行登陆时,通过WebSocket校验输入的用户名和密码与开发板SQLite数据库中的数据进行对比,当数据存在且正确是可登陆进系统。
2025-02-12 21:31:56
3034
1
原创 Qt和微信小程序WebSocket通信
在开发过程中,我们经常需要在不同平台之间实现通信。本文将详细介绍如何在虚拟机中运行的Qt应用程序与主机上开发运行的微信小程序之间通过WebSocket实现实时通信。通过本次实验,实现虚拟机中Qt应用程序与主机上微信小程序之间的WebSocket通信。即进行跨平台的实时通信。
2025-02-10 00:09:20
794
原创 WebSocket学习记录
本文旨在深入探讨WebSocket协议的基础知识、工作原理以及在实际开发中的应用场景。通过本文的学习,读者将对WebSocket有一个全面的理解,并能将其应用于自己的项目中。WebSocket是一种在单个TCP连接上进行全双工通信的协议。它使得客户端和服务器之间的数据交换变得更加简单,允许服务端主动向客户端推送数据。WebSocket API是纯事件驱动,通过监听事件可以处理到来的数据和改变的链接状态。WebSocket提供了一种高效可靠的双向通信解决方案,适用于各种需要实时交互的应用程序。
2025-02-08 23:44:34
671
原创 基于STM32的智能空调遥控器——主控代码端实现
此外,该系统还提供了标准的NEC格式的另一种发射方式。在本次智能遥控器的程序设计中,对格力空调控制采用对格力空调遥控器控制红外码进行解码来对格力空调进行控制的思路,对新的红外控制信号采用红外接收-->主控进入中断程序-->数据写入flash进行编号存储-->调用已存数据进行红外信号的再现或修改-->发送红外信号为主要的设计思路。在单片机将数据学习,记录到flash区后,进入到的查看模式可对特定区域存储的控制信号的码值,即一段高电平和低电平持续时间的记录,用户可以在特定的区域查看自己存入的信号是否正确。
2025-02-08 13:50:24
1382
原创 记录IMX6ULL开发板上移植SQLite3并运行Qt程序
基于上一章对使用Qt运行对应的实验实例来完成对用户使用ui界面完成对SQLite数据库的增删改查等操作。本文旨在对上一句节的Qt程序部署到IMX6ULL开发板,并且完成对SQLite数据库在IMX6ULL开发板上的移植。这里--host指定了我们的交叉编译器,--enable-static表示我们需要静态链接库,而--prefix则是指定安装路径。目录中,使用scp指令将文件拷贝到开发板。可进行数据的增删改查到指定的数据库文件。这将生成所需的库文件和可执行文件。将生成的库文件复制到开发板的。
2025-02-07 23:43:44
636
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人