自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(91)
  • 问答 (1)
  • 收藏
  • 关注

原创 基于全志H616的硬件知识详解

H616板是一款功能丰富的开发板,核心采用全志H616四核处理器,配备256MB/512MB DDR3内存。主要接口包括:调试串口用于系统开发、USB2.0和Type-C支持外设连接与供电、Micro-HDMI实现高清输出、千兆网口(RTL8211F芯片)保障网络性能。此外还集成双频WiFi+蓝牙5.0(带天线)、26Pin扩展接口和13Pin多功能接口(含音频/USB/TV/红外)。电源管理芯片和LED指示灯完善了电源控制与状态显示功能,适用于各类嵌入式开发场景。

2025-09-03 15:21:07 302

原创 了解名词ARM Linux的SOC

SOC(片上系统)是将计算机系统的核心组件(CPU、GPU、内存控制器等)集成到单一芯片的集成电路,相比传统分立元件设计具有体积小、功耗低、效率高的优势。常见基于ARMCortex-A53架构的SOC包括AmlogicS905X、树莓派3的BCM2837等。在Linux开发中,需要针对SOC进行Bootloader配置、内核移植、设备驱动开发等适配工作,使系统能充分利用SOC的硬件功能。SOC是嵌入式Linux系统开发的基础平台。

2025-09-02 22:08:42 487

原创 Linux串口开发

struct termios是POSIX标准中用于控制终端I/O的结构体,包含输入/输出/控制/本地模式标志、波特率设置和控制字符等。主要功能包括:1)通过c_cflag设置数据位、停止位等硬件参数;2)通过c_iflag/c_oflag控制输入输出处理;3)通过c_lflag管理本地终端行为;4)使用c_cc数组定义特殊控制字符。常用函数有tcgetattr/tcsetattr获取/设置属性,以及波特率设置函数。典型应用场景包括串口通信配置,需要合理设置模式和错误处理。

2025-08-30 16:06:39 870

原创 Linux软件定时器回顾

摘要: 本文对比了三种定时器实现方式: setitimer() + 信号:传统POSIX方法,微秒级精度但依赖信号处理,仅支持3种定时器,存在异步信号安全问题。 timerfd(推荐):基于文件描述符,可集成epoll,支持纳秒级精度和多定时器,避免信号复杂性,适合高性能场景,但仅限Linux。 timer_create():POSIX定时器,支持线程回调,灵活性高但需处理信号竞争。 核心对比: setitimer简单但功能有限;timerfd更现代、安全,适合复杂应用;timer_create适合多线程。

2025-08-30 11:19:05 727

原创 Linux时间处理函数

是 Linux 系统中一个用于获取当前时间的系统调用函数。它能够获取从 Unix 纪元(1970年1月1日 00:00:00 UTC)到当前时刻的秒数和微秒数。

2025-08-29 16:20:12 484

原创 Linux设备驱动

Linux设备驱动分为字符设备、块设备和网络设备三大类。字符设备(如串口、键盘)以字节流顺序访问,通过/dev节点使用标准文件操作接口;块设备(如硬盘、U盘)以固定块随机访问,通常作为文件系统底层,数据经过缓存;网络设备(如网卡)通过Socket API处理数据包,无传统/dev节点。开发字符设备驱动需分配设备号、实现文件操作函数、注册设备、处理模块加载/卸载等步骤,涉及内核编程和调试技术。

2025-08-29 16:10:24 839

原创 POSIX消息队列之香橙派的应用

本文介绍了POSIX消息队列的基本用法及其与SystemV消息队列的区别。POSIX消息队列提供了更现代的接口,包括mq_open、mq_send、mq_receive等函数,支持优先级消息和异步通知功能。文章详细说明了: 消息队列的创建、发送、接收和关闭操作 异步通知机制的使用方法,包括mq_notify函数和sigevent结构体 两种实现方式:阻塞读写方式和异步通知方式 消息队列属性设置和权限控制 提供了完整的代码示例,包括使用线程和信号通知的实现方案

2025-08-27 16:07:41 851

原创 阿里云人脸识别方案

本文介绍了在OrangePi Zero2上实现阿里云人脸搜索1:N方案的步骤。首先需在阿里云人脸数据库中存储照片样本,然后通过Python SDK调用接口进行人脸比对。文章详细说明了环境变量配置、请求参数设置以及结果解析方法,其中比对成功的关键指标是score值大于0.6。还展示了如何将Python代码封装为函数供C语言调用,并解释了使用列表推导式提取score值的实现原理。最后给出了成功和失败的响应数据示例,为开发者提供了完整的实现参考。

2025-08-27 15:21:22 503

原创 Ubuntu解决makefile交叉编译的问题

摘要:本文记录了交叉编译过程中遇到的三个主要问题及解决方案:1) 找不到wiringPi库,通过安装ARM64版本并复制到交叉编译路径解决;2) 输出文件目录问题,修正Makefile中的目录创建规则;3) Python运行时依赖库缺失问题,通过添加lexpat、lz等必要库解决。最终成功生成ARM64架构的可执行文件。文中详细展示了Makefile的配置,包括编译器设置、源文件处理、头文件路径、库文件链接等关键参数,为类似交叉编译问题提供了完整参考方案。

2025-08-22 21:09:45 362

原创 Makefile的入门

本文介绍了软件开发中常用的编译工具和构建系统。首先讲解了从gcc到make工具的演进过程,以及更高级的构建系统如cmake、qmake、ninja和automake的功能特点。然后详细讲解了Makefile的基本语法规则、变量赋值、常用函数和条件判断等核心内容,包括wildcard等实用函数的使用方法,以及伪目标、变量替换等关键概念。文章通过具体示例演示了如何编写一个完整的Makefile,涵盖从源文件编译到目标文件生成的全过程,并展示了如何利用函数和条件判断优化Makefile的结构和可维护性。

2025-08-21 22:05:37 1053

原创 基于OrangePi Zero2的系统移植及其交叉编译

本文介绍了OrangePi Zero2的Linux SDK开发环境配置及交叉编译方法。主要内容包括:1. SDK环境搭建,要求Ubuntu 22.04系统,详细说明了orangepi-build工具链的获取方式和首次编译流程;2. 交叉编译工具链配置,讲解了本地编译与交叉编译的区别,并通过示例演示了如何在x86平台为ARM架构交叉编译程序;3. 提供了完整的编译配置步骤,包括环境变量设置、工具链版本验证以及交叉编译程序在目标板上的运行测试。该文档为开发者提供了从环境搭建到程序编译的完整指导。

2025-08-20 17:13:24 781 1

原创 获取虚拟机WiFi IP地址方法并通过MobaXterm连接虚拟机

本文介绍了在虚拟机中获取IP地址并解决SSH连接问题的完整方案。主要内容包括:1. 通过dhclient命令续租IPv4地址;2. 检查虚拟机网络连接模式(NAT或桥接);3. 安装和配置SSH服务;4. 设置防火墙允许SSH连接;5. 在主机端测试网络连通性。文章提供了详细的命令行操作步骤,并针对不同网络环境和连接问题给出了具体的排查方法,帮助用户快速定位和解决虚拟机网络连接问题。

2025-08-20 13:29:22 1009

原创 虚拟机核心文件解析与恢复方法

摘要:VMware虚拟机的核心是.vmx和.vmdk文件。.vmx是配置文件,记录硬件设置;.vmdk是虚拟磁盘,存储系统所有内容。恢复虚拟机时,只需将两文件放在同一文件夹,通过VMware"打开"功能加载.vmx文件即可。建议定期备份整个虚拟机文件夹,移动时需确保所有相关文件完整。保留好这两个关键文件,就能随时重建虚拟机系统。

2025-08-20 11:08:05 592

原创 fswebcam图像保存问题排查———USB摄像头配置

摄像头捕获与mjpg-streamer启动问题分析 fswebcam命令成功执行并保存图像,但可能因sudo权限导致文件不可见,需检查权限或修改文件所有者。 mjpg-streamer启动时出现两类问题: 摄像头驱动兼容性问题:默认UYVY格式不被支持,需强制使用MJPG格式 端口冲突问题:8080端口被占用,需终止占用进程或更换端口 解决方案包括修改start.sh脚本参数,调整格式和端口设置,以及检查系统进程释放被占用的端口。

2025-08-19 09:36:24 392

原创 USB摄像头配置---OrangePi全志H616

本文介绍了在OrangePi开发板上测试USB摄像头的完整步骤。首先通过lsmod和v4l2-ctl命令检测设备信息,然后分别使用fswebcam工具进行静态拍照和mjpg-streamer实现视频流功能。详细说明了mjpg-streamer的编译安装过程,包括依赖安装、编译命令和启动方法。最后提供了设置开机自动启动摄像头服务的完整方案,包括创建启动脚本、配置.desktop文件以及验证服务是否正常运行。整套流程涵盖了从基础检测到高级应用的完整操作指南,适用于需要实现OrangePi摄像头功能的开发者。

2025-08-18 12:43:23 348

原创 Python语言---OrangePi全志H616

本文介绍了Python基础知识和C语言调用Python的方法。主要内容包括:1)Python特点:动态解释型、跨平台、面向对象简化实现、强类型等特点;2)字典嵌套结构示例及解析方法;3)C语言调用Python的三种方式:直接执行语句、调用无参函数和带参函数,详细说明了初始化、模块导入、参数构建、返回值处理等流程。文中提供了完整的代码示例和编译命令,展示了C与Python的混合编程技术,适用于需要在C程序中嵌入Python功能的开发场景。

2025-08-16 19:43:41 671

原创 掌握 chmod 命令是Linux文件权限管理的核心技能。

Linux文件权限管理摘要:系统定义三类用户(所有者u、组g、其他o)和三种权限(读r4、写w2、执行x1)。修改权限有两种方法:符号模式(如chmod u+x)直观易用,数字模式(如chmod 755)高效便捷。关键技巧包括-R递归修改、--reference参照权限及特殊权限设置(SUID/SGID)。典型场景如600保护私密文件、755共享脚本等。注意事项强调最小权限原则,避免777风险,目录需x权限才能进入。最佳实践推荐755/644作为安全基线,修改前后用ls -l验证结果。

2025-08-16 09:24:49 459

原创 orangePi H616安装python3.9.18

本文提供了在Linux系统上安装Python 3.9.18的详细步骤:首先通过apt命令安装编译环境,然后下载并解压Python源码包;接着配置优化选项并编译安装;最后设置Python软链接和配置pip国内镜像源。整个过程包括环境准备、源码编译、版本切换和pip配置等关键环节,最终实现Python 3.9.18的正确安装和基本环境搭建。

2025-08-16 01:00:00 267

原创 嵌入式数据库---OrangePi全志H616

SQLite是一种轻量级嵌入式数据库,具有无服务器、自包含的特点,适合单设备数据管理。与传统服务器型数据库相比,SQLite体积小、易于设置和使用,适合基础开发和测试,但缺乏用户管理功能且扩展性有限。安装SQLite可通过命令行或下载源码编译完成。基本操作包括创建数据库、表格,以及增删改查等SQL命令。SQLite还提供C语言接口,通过sqlite3_open、sqlite3_exec等函数实现数据库的编程操作,包括创建表、插入数据和查询等功能。这些特性使SQLite成为嵌入式系统和小型应用的理想选择。

2025-08-15 20:44:36 1064

原创 SQLite3库链接与加载问题解决方案

摘要: 在Linux系统下运行SQLite程序时出现"libsqlite3.so未找到"错误,虽然该库文件存在于/usr/local/lib目录。这是由于系统默认不搜索该路径导致的。解决方案包括:1) 临时设置LD_LIBRARY_PATH环境变量;2) 永久性修改/etc/ld.so.conf并运行ldconfig;3) 编译时使用-Wl,-rpath指定库路径;4) 静态链接库文件。最推荐的方法是修改系统库路径配置或编译时指定运行时路径。可通过ldd命令验证问题是否解决。

2025-08-15 14:04:47 542

原创 H616基于官方外设开发----3

本文介绍了Linux系统中的UDEV机制和守护进程相关知识。UDEV是用户空间的设备管理工具,通过监听内核事件动态管理/dev目录下的设备文件。文章详细讲解了守护进程的特点、开发方式(使用daemon函数)以及应用实例(如监控进程运行状态)。同时阐述了守护进程与后台进程的区别,并提供了UDEV配置文件的规则说明,包括自动挂载U盘的实现方法。最后给出了UDEV规则的匹配键和自动挂载U盘的具体操作步骤。这些内容为Linux系统设备管理和进程管理提供了实用指导。

2025-08-15 10:47:59 706

原创 H616基于官方外设开发----2

本文介绍了基于OrangePi Zero2的OLED屏幕和串口开发应用。主要内容包括:1)通过I2C协议驱动OLED屏幕,展示系统信息和动态效果;2)实现Linux原生串口通信功能,包括串口初始化和数据传输;3)开发语音控制刷抖音项目,通过语音指令控制手机滑动、点赞等操作,涉及adb工具使用、UDEV规则配置和shell命令模拟触屏操作。文章提供了完整的代码实现,涵盖了硬件接口配置、驱动开发和系统集成等关键技术点。

2025-08-14 13:24:01 625

原创 H616基于官方外设开发----1

本文介绍了基于Orange Pi开发板的外设开发流程,包括:1. wiringPi库的安装与验证;2. 蜂鸣器控制开发,演示了IO口输出高低电平实现蜂鸣;3. 超声波测距模块HC-SR04的使用方法,详细说明了测距原理和时间函数计算距离的实现;4. SG90舵机控制,讲解了PWM信号控制原理,并提供了基于Linux定时器的软件PWM实现代码。文章涵盖了从基础IO操作到定时器、PWM等高级外设的开发方法,为嵌入式开发提供了实用参考。

2025-08-13 20:52:11 946

原创 解决H616编译路径问题

【摘要】当编译时出现"libwiringPi.so文件被截断"错误,表明库文件已损坏。解决方法包括:1)检查并删除损坏的库文件;2)通过apt重装wiringPi;3)推荐使用OrangePi专用源码编译安装;4)配置正确的库路径并更新缓存;5)在编译命令中显式指定库路径。若问题持续,需检查文件系统或更换SD卡。关键步骤为卸载重装或源码编译安装,并确保编译时正确链接库文件。

2025-08-13 14:46:44 1088

原创 解决H616用网络的IP地址连不上

先用cmd工具进行对单片机的ip地址进行ping是否存在,存在就改变wifi的网关地址。电脑的wifi网关与h616不一致,需要改变WiFi的网关。电脑是192.168.0.105。单片机是192.128.1.55。

2025-08-12 19:52:15 475

原创 Orangepi Zero2 全志H616开发学习

摘要:本文介绍了基于ARM架构的Linux系统学习必要性,重点分析了OrangePi开发板的学习优势。主要内容包括:1)Linux系统在智能设备开发中的不可替代性;2)OrangePi开发板硬件配置(全志H616处理器、1GB内存等)及特性;3)系统刷机步骤(镜像烧写、串口登录);4)基础配置方法(密码修改、WiFi连接、SSH远程登录)。该开发板适合Linux系统学习,能为后续嵌入式开发打下基础,配套Ubuntu系统方便入门者快速上手。

2025-07-02 16:45:14 1296

原创 Linux系统环境编程之网络编程

本文主要介绍了TCP/UDP网络编程的核心概念和实现方法。TCP与UDP的主要区别在于:TCP是面向连接的可靠传输协议,保证数据有序到达;而UDP是无连接的不可靠协议,适合实时应用。文中详细说明了端口号的作用、"IP地址+端口号"的服务识别机制、字节序转换API,并给出了完整的Socket服务器和客户端开发步骤(创建套接字、绑定信息、监听连接、数据交互等)。最后通过C语言代码实例,展示了TCP服务器和客户端的实现过程,包括socket创建、bind绑定、listen监听、accept接受

2025-07-01 18:41:41 1064

原创 Linux系统环境编程之线程

摘要:本文详细介绍了Linux系统中的线程概念及其相关API。线程是进程中的执行单元,相比进程更轻量级,共享进程资源但拥有独立的栈和寄存器。文章比较了进程与线程的区别,指出线程具有更高的创建效率和便捷的通信机制,但需要同步机制保护共享数据。重点讲解了pthread库中的线程创建(pthread_create)、退出(pthread_exit)、等待(pthread_join)等基本操作,以及互斥锁(mutex)和条件变量(condition variable)两种同步机制的使用方法。

2025-06-30 17:36:50 645

原创 Linux简单操作代码指令

Vim编辑操作摘要:在命令模式下,复制操作使用"yy"复制单行,"nyy"复制n行;粘贴用小写"p"(下一行)或大写"P"(上一行);删除用"dd"删除当前行,"ndd"删除n行;增行用小写"o"(下方插入)或大写"O"(上方插入)。这些快捷键提供高效的文本编辑功能。(149字)

2025-06-30 14:06:21 518

原创 Linux系统环境编程之进程间的通信

进程间通信(IPC)是不同进程间交换信息的重要机制。常见IPC方式包括无名/命名管道(半双工、仅亲缘进程)、消息队列(随机读取、优先级)、共享内存(最快但需同步)、信号量(PV操作)、信号(软中断处理)以及Socket(跨主机通信)。其中,管道适用于父子进程通信,消息队列支持类型过滤,共享内存配合信号量实现同步,信号处理异步事件。文章以Linux C为例,详细介绍了各机制的API使用、特点及示例代码,如pipe()、mkfifo()、msgget()、shmget()、sigaction()等系统调用

2025-06-29 15:33:06 1022

原创 Linux系统环境编程之进程2

本文介绍了Linux系统中的exec族函数、system函数和popen函数。exec族函数用于在当前进程中执行新程序,替换原进程映像,常用于配合fork创建子进程执行不同程序。system函数通过创建子进程调用shell执行命令,适合执行简单shell命令但无法获取输出。popen函数则更为灵活,能通过管道获取命令执行结果,适用于需要处理命令输出的场景。文章通过具体代码示例展示了三种函数的典型用法,并对比了它们的适用场景和优缺点,为Linux进程管理和程序执行提供了实用参考。

2025-06-28 22:59:23 723

原创 Linux系统环境编程之进程1

本文介绍了进程的基本概念和操作。程序是静态的可执行文件,进程是程序的运行实例。进程通过PID唯一标识,其中PID 1是init进程。使用fork()创建子进程时,父进程获得子进程PID,子进程返回0;vfork()则直接共享父进程空间且子进程先运行。父进程需用wait()等待子进程退出,否则会产生僵尸进程;若父进程先退出,子进程成为孤儿进程并被init进程接管。文中提供了多个C代码示例,演示了进程创建、退出状态获取及孤儿进程的处理。

2025-06-28 22:35:47 1061

原创 Linux系统环境编程之文件

本文介绍了Linux系统下文件编程的基本操作流程,包括文件创建、读写、光标定位和关闭等API函数的使用方法。主要内容涵盖:1) open函数参数说明及文件权限设置;2) write/read函数实现文件读写;3) lseek函数控制文件指针位置;4) 文件操作的一般步骤及实际应用案例,如实现Linux cp命令、修改配置文件参数以及存储整数、结构体和结构体数组等数据。通过多个C语言代码示例,演示了如何利用系统调用完成文件的自动化操作。

2025-06-24 22:24:38 1103

原创 P7 QT项目----会学天气预报(完结)

摘要:本文介绍了在Qt中使用QMap解析JSON数据的方法,并通过一个天气应用实例展示了具体实现。首先说明了如何将JSON键值对存入QMap的基本步骤,包括创建QJsonDocument、遍历JSON对象等。然后详细展示了一个天气应用的开发过程,包括网络请求获取天气数据、JSON解析到自定义结构体、UI更新(显示温度曲线、天气图标等)以及城市搜索功能。文中还包含了错误处理、鼠标交互事件和自定义绘图等高级功能的实现代码。该示例完整呈现了从数据获取到界面展示的Qt应用开发流程。

2025-06-20 21:27:57 900 1

原创 P7 QT项目----会学天气预报

本文摘要介绍了天气预报数据接口解析和软件开发中的网络通信架构。首先展示了一个福州天气预报的JSON接口响应示例,包含温度、天气状况、空气质量等实时数据。接着对比了BS(浏览器-服务器)和CS(客户端-服务器)两种架构的特点与适用场景。文章详细讲解了HTTP协议的基本概念,包括请求响应模型、状态码等核心要素。最后通过Qt编程实例,演示了HTTP请求的实现方法以及JSON数据的生成、解析技术,包括使用QJsonDocument处理嵌套JSON结构和数组数据。这些内容为开发网络应用程序提供了基础技术参考。

2025-06-19 17:28:40 1020

原创 P7 QT项目----会学天气预报

摘要:本文记录了一个Qt界面开发项目的技术要点,主要包括:1)使用stylesheet设置控件样式,包括边框弧度、背景颜色和父控件样式继承;2)实现无边框窗口和右键菜单退出功能;3)窗口拖拽移动的实现逻辑,通过计算鼠标位置与窗口位置的偏移量,在鼠标移动时更新窗口位置。项目还涉及JSON解析、HTTP通信和自定义温度控件开发等内容,展现了Qt界面开发的多个核心功能实现方法。(139字)

2025-06-18 21:04:53 981

原创 P6 QT项目----汽车仪表盘(6.4)

摘要:本文实现了一个基于Qt的仪表盘控件,主要功能包括绘制圆形表盘、刻度线、指针、渐变内圆和动态速度显示。代码通过QPainter进行图形绘制,使用240度刻度范围(210°至-30°)表示0-240km/h车速,红色渐变圆环表示高转速区域,指针随定时器动态摆动(50ms刷新)。关键功能还包括:坐标原点平移至画布中心、抗锯齿处理、径向渐变效果实现,以及通过数学计算精确控制刻度位置和指针角度。该控件采用分层绘制策略,依次完成背景、刻度、指针、装饰元素的渲染,最后显示当前车速数值和单位标识。

2025-06-17 17:59:19 1234

原创 P6 QT项目----汽车仪表盘(6.3)

摘要:本文展示了一个使用Qt框架实现的仪表盘控件开发过程。代码通过QPainter绘制了具有径向渐变效果的圆形表盘,包含刻度线、数值显示和动态指针。指针数值在0-50之间循环变化,通过QTimer实现动画效果。仪表盘采用抗锯齿技术提升视觉效果,并绘制了扇形区域作为指针背景。开发中处理了坐标变换、刻度标注旋转和数值显示等关键问题,最终实现了一个具有专业外观的动态仪表盘控件。

2025-06-16 19:36:37 840

原创 小综合----雷达图

摘要:该代码实现了一个动态雷达图的绘制功能,使用Qt框架中的QPainter进行图形渲染。主要特点包括:1)通过定时器实现扇形扫描动画效果,每100毫秒更新角度;2)绘制7个同心圆作为雷达背景;3)添加十字交叉坐标轴;4)使用锥形渐变(QConicalGradient)实现扫描区域的渐隐效果;5)支持抗锯齿渲染。雷达图以窗口中心为原点,背景为黑色,扫描区域为半透明绿色,具有类似真实雷达的视觉效果。

2025-06-16 00:47:22 1001

原创 P6 QT项目----汽车仪表盘(6.2)

本文介绍了Qt框架中的三种渐变效果实现方法:线性渐变(QLinearGradient)、径向渐变(QRadialGradient)和圆锥形渐变(QConicalGradient)。线性渐变沿直线平滑过渡颜色,径向渐变从中心向外辐射,而圆锥渐变则沿圆周方向变化颜色。每种渐变类型都通过创建对应对象、设置颜色停靠点、生成QBrush并应用QPainter来完成渲染。文章提供了每种渐变的具体代码示例,说明了参数设置方法,并给出使用建议,如启用抗锯齿效果、调整渐变位置和添加多个颜色停靠点等技巧。

2025-06-15 18:00:13 1106

空空如也

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

TA关注的人

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