- 博客(64)
- 收藏
- 关注
原创 关于IMX6ULL的OV5640配置
本文详细介绍了在正点原子IMX6ULL开发板上配置OV5640摄像头的完整流程。首先需要准备OV5640驱动文件(ov5640.c和mx6s_capture.c),修改设备树文件添加摄像头节点配置。接着进行内核配置,确保启用IPUv3核心支持,然后编译生成驱动模块。最后通过V4L2应用程序测试摄像头功能,将采集画面显示在4.3寸LCD屏上。文章提供了完整的设备树修改示例、内核配置步骤和测试程序代码,并提示了可能遇到的驱动兼容性问题及解决方案。该教程适合嵌入式Linux开发者参考,帮助快速实现摄像头驱动移植。
2025-11-30 15:08:38
735
原创 FreeRTOS中的内存管理
FreeRTOS提供5种内存管理方案(heap_1~heap_5)以适应不同嵌入式场景需求。heap_1仅支持分配,适合静态应用;heap_2支持释放但碎片严重;heap_3封装标准库函数;heap_4采用标记-整理减少碎片,是推荐方案;heap_5扩展heap_4支持多段RAM。与标准库相比,FreeRTOS方案具有实时性确定、线程安全、碎片优化等优势。开发者可根据应用特性(如实时性、安全性、资源限制等)选择合适方案,通过pvPortMalloc/vPortFree等API进行内存管理。
2025-11-27 14:07:40
754
原创 FreeRTOS的Tickless低功耗模式
FreeRTOS Tickless低功耗模式通过暂停SysTick定时器让MCU进入深度睡眠,显著降低空闲功耗。该模式适用于电池供电设备,在系统空闲时计算最长休眠时间,暂停任务调度基准,由外部中断或定时器唤醒后恢复系统时钟并校准Tick计数。实现涉及内核空闲任务检测、硬件适配层睡眠配置及唤醒后的时间补偿机制,需合理选择低功耗模式(睡眠/停机/待机)并处理时钟恢复问题。关键点包括WFI/WFE指令使用、独立定时器计时补偿及唤醒中断配置,可延长电池设备续航时间,但需权衡低功耗与实时性需求。
2025-11-26 18:53:52
982
1
原创 FreeRTOS中的同步与互斥
本文系统介绍了FreeRTOS中的同步与互斥机制。同步用于协调任务执行顺序(如信号量、事件组),互斥则解决资源竞争问题(如互斥锁)。重点分析了信号量(二值/计数/互斥/递归互斥)、事件组(32位事件位)、任务通知(轻量级同步)和临界区(原子操作保护)的工作原理及API使用。特别探讨了优先级翻转问题及互斥锁的优先级继承解决方案,通过示例代码展示了如何避免高优先级任务被延迟。这些机制为嵌入式实时系统提供了灵活的任务协作和资源保护方案。
2025-11-24 21:12:21
751
原创 FreeRTOS中的消息队列
FreeRTOS消息队列是核心的进程间通信机制,采用环形缓冲区和队列控制块实现任务间安全数据传递。其结构包含读写指针、阻塞任务列表和消息计数等要素,支持值传递和指针传递两种方式。消息队列通过临界区保护确保多任务/ISR访问安全,提供动态/静态创建、发送接收等API接口,并衍生出信号量等同步机制。队列集机制扩展了多队列管理能力,使任务能同时等待多个队列事件。该机制具有高效存取、避免忙等、接口简洁等特点,是嵌入式实时系统数据通信的重要基础。
2025-11-23 12:54:30
1125
原创 FreeRTOS中的软件定时器
FreeRTOS软件定时器是基于系统Tick实现的虚拟定时器,提供两种工作模式(单次/周期),通过服务任务异步执行回调。核心特性包括:纯软件实现、灵活控制接口(创建/启动/修改/删除)、优先级可配置。其工作原理依赖SysTick中断进行计数管理,超时后通过消息队列通知服务任务执行回调。提供任务和中断两套API接口,支持动态调整周期和自定义数据传递。相比硬件定时器,软件定时器精度较低(ms级)但资源占用少,适用于中低精度定时场景。合理使用需注意回调执行延迟和服务任务优先级配置。
2025-11-22 18:12:33
956
原创 FreeRTOS任务管理
FreeRTOS作为实时操作系统,其核心是多任务调度机制。本文概述了FreeRTOS任务管理的关键要素:1)任务本质是拥有独立栈空间和优先级的执行单元;2)优先级调度机制(0-55级,数值越大优先级越高);3)任务状态转换(就绪、运行、阻塞、挂起、删除);4)核心API包括任务创建(xTaskCreate)、删除(vTaskDelete)、延时(vTaskDelay)等;5)抢占式+时间片轮转的混合调度策略;6)通过PendSV中断实现高效上下文切换。
2025-11-22 14:42:41
1132
原创 FreeRTOS源码分析
FreeRTOS源码结构分析摘要: FreeRTOS源码主要包含核心文件和移植层文件两部分。核心文件位于Source目录,包括任务管理(tasks.c)、队列(queue.c)等模块,可根据需求选择性裁剪。移植层文件按编译器+MCU架构分类存放于portable子目录,关键文件为port.c(实现任务切换、中断管理等)和portmacro.h(定义架构相关宏)。项目配置通过FreeRTOSConfig.h实现,包含堆大小、时钟频率等参数。源码采用统一的数据类型命名规范
2025-11-22 12:06:59
847
原创 初始FreeRTOS
FreeRTOS是一款轻量级开源实时操作系统,专为资源受限的嵌入式设备设计。其核心优势包括:内核小巧(4-9KB)、开源免费(MIT许可证)、高移植性(支持ARM/ESP32/STM32等主流芯片)。提供多任务调度、内存管理、中断处理等核心功能,支持动态和静态内存分配,并带有堆栈溢出检测等稳定性保障。相比Linux,FreeRTOS更注重实时响应和低功耗设计,适合物联网设备、工业控制等嵌入式场景。通过STM32CubeMX可快速配置FreeRTOS项目,但需注意解决时基冲突、编译器版本等常见问题。FreeR
2025-11-19 13:25:06
1037
原创 QT开发---数据库
本文介绍了QtSQL模块的三个层次架构(驱动层、SQLAPI层、用户界面层)及其核心类,包括数据库连接管理、SQL查询执行和模型视图操作。详细讲解了SQLite数据库的特点、安装配置及在Qt中的使用方式,重点阐述了数据库连接管理、基本CRUD操作、事务处理以及三种SQL模型类(QSqlQueryModel、QSqlTableModel、QSqlRelationalTableModel)的应用场景和使用方法。
2025-08-21 15:16:57
1166
原创 QT开发---QT布局与QSS样式设置
本文介绍了Qt中的布局管理机制,重点讲解了五种常用布局管理器(QHBoxLayout、QVBoxLayout、QGridLayout、QFormLayout、QStackedLayout)的基本用法和特点。详细说明了布局参数设置方法,包括边距控制、间距调整、对齐方式、伸缩因子等核心功能。文章还介绍了QSplitter布局的特殊用法和QSS样式表的应用技巧,包括选择器语法、常用属性设置等实用内容。通过示例代码展示了如何构建一个包含标题、表单和按钮的典型界面布局,帮助开发者掌握Qt界面设计的基本方法。
2025-08-21 15:15:54
1468
原创 QT开发---图形与图像(补充)
本文介绍了Qt框架中三个核心技术模块:1. QGraphicsView坐标映射机制,详细解析了视图、场景和图元之间的坐标转换方法;2. Qt属性动画系统,包括QPropertyAnimation的基础用法和QAnimationGroup的组合动画控制;3. QCustomPlot图表库,涵盖其核心功能、图层管理和坐标轴系统。文章重点讲解了各模块的关键API和使用场景,如视图与场景的mapToScene/mapFromScene转换、属性动画的插值曲线设置、图表的多图层渲染等,并提供了实用的代码示例和注意事项
2025-08-01 21:18:03
871
原创 QT开发---图形与图像
本文介绍了Qt框架中的图形绘制功能,重点讲解了paintEvent()函数的触发机制、QPainter绘图核心类及其相关工具类(QPen、QBrush、QFont)的使用方法,以及GraphicsView框架的三层结构(QGraphicsScene、QGraphicsView、QGraphicsItem)。文章详细说明了如何实现基础图形绘制、文本渲染、图像处理和坐标变换,并深入分析了GraphicsView框架在复杂图形场景管理中的优势和使用技巧。此外,还介绍了自定义图形项的创建和像素合成模式的应用。
2025-07-31 17:25:25
1132
原创 QT开发---网络编程下
本文介绍了HTTP协议的基本概念、特点及请求/响应格式,重点讲解了Qt中的网络编程API(QNetworkAccessManager、QNetworkRequest和QNetworkReply类)的使用方法。主要内容包括:HTTP协议的无连接、无状态特性;GET/POST等请求方法的实现;JSON数据格式解析;以及通过实际代码演示了如何发送网络请求、处理响应和解析JSON数据。文章还提供了利用HFS搭建简易服务器进行测试的方法,最后展示了完整的Qt网络请求示例代码,包括文件读写和JSON数据解析的详细实现。
2025-07-27 18:05:05
796
原创 QT开发---网络编程上
QtNetwork模块提供了强大的网络编程功能,支持TCP、UDP、HTTP等多种协议。该模块采用异步操作模式,通过信号槽机制处理网络事件,避免阻塞UI线程。主要类包括:QTcpSocket/TcpServer实现可靠TCP通信,QUdpSocket支持无连接UDP传输,QNetworkAccessManager处理HTTP请求,QHostInfo进行域名解析等。文章详细介绍了各核心类的用法,包括连接建立、数据收发、错误处理等关键操作,并提供了TCP/UDP客户端和服务端的完整代码示例.
2025-07-26 19:43:15
925
原创 QT开发---多线程编程
本文介绍了Qt中多线程编程的多种实现方法。主要包含三种方式:1)继承QThread类并重写run()方法;2)使用QObject+moveToThread()实现任务与线程分离;3)通过QThreadPool+QRunnable构建线程池处理短期任务。文章详细讲解了每种方法的实现原理、核心类和注意事项,重点比较了不同方式的优缺点,如任务耦合度、扩展性和事件循环支持等。此外还介绍了QtConcurrent高级并发框架,包括其自动线程管理、简化并行代码等特性。
2025-07-25 20:56:40
1429
原创 QT开发---文件操作
摘要:Qt的QIODevice是支持块数据读写的设备基类,为QFile、QBuffer等提供通用接口。包含随机访问(可定位)和顺序访问设备两类。常用子类有QFile(文件操作)、QBuffer(内存缓冲)、QTcpSocket(网络通信)等。操作包括open()、read()/write()、close()等,配合QFileInfo获取文件信息。QTextStream提供文本流操作,支持格式化和编码设置;QDataStream实现二进制数据序列化,支持基本和自定义类型。
2025-07-25 12:46:55
1115
原创 QT开发---字符编码与QString和QByteArray
文章摘要:字符编码经历了从ASCII到Unicode的演进过程,早期单字节编码无法满足多语言需求,催生了GB2312、Big5等区域编码。Unicode通过UTF-8等方案实现全球字符统一编码,现已成为主流。Qt框架中的QString和QByteArray提供了强大的字符串处理能力,QString专为Unicode设计,QByteArray则适用于二进制数据。二者支持多种编码转换(如UTF-8、Latin1等),并采用隐式共享机制优化性能。开发者需注意编码一致性、特殊字符处理等问题,根据场景选择合适的数据类
2025-07-24 20:26:23
1192
原创 QT开发---信号与槽,事件处理
摘要:本文系统介绍了Qt框架中的信号与槽机制及事件处理模型。信号与槽是Qt特有的松耦合通信方式,通过emit触发信号、slot响应信号,支持多对多连接及跨线程通信(含5种连接类型)。事件处理机制则基于QEvent派生类,通过事件循环、重写事件函数或事件过滤器实现底层交互。两者协同工作:信号槽封装常用交互,事件处理提供底层控制,共同构成Qt高效灵活的消息传递体系,适用于GUI开发中的各类场景。
2025-07-24 16:47:58
1504
原创 QT开发---基础介绍及环境搭建
Qt是一个跨平台C++应用程序开发框架,由挪威程序员于1991年创建,1996年发布1.0版本。它最初专注于图形用户界面开发,通过"信号与槽"机制简化跨平台开发。经过多次所有权变更和技术演进,Qt现已成为支持桌面、移动和嵌入式系统的多功能框架,最新版本基于C++17,提供丰富的UI组件和模块化架构。其核心特点包括跨平台性、面向对象设计、丰富的开发工具和广泛的应用领域,适用于从工业控制到多媒体应用等多种场景。安装过程包括下载官方安装包、配置构建工具等步骤。
2025-07-23 22:29:20
1473
原创 网络编程---UDP协议与IP协议
摘要:本文系统介绍了UDP协议、IP协议和数据链路层的核心概念。UDP是无连接、不可靠但高效的传输层协议,适用于实时性要求高的场景,其数据报结构简单且处理速度快。IP协议负责网络层寻址和路由,IPv6解决了IPv4地址不足的问题。数据链路层通过MAC地址实现设备间通信,ARP协议完成IP到MAC的地址解析,交换机则基于MAC地址实现高效数据转发。全文从协议特性、数据结构到实际应用,全面解析了计算机网络的基础原理和关键技术。
2025-07-23 13:53:34
1973
1
原创 网络编程---TCP协议
TCP协议是互联网核心传输协议,提供可靠、面向连接的数据传输服务。其核心特性包括:通过三次握手建立连接和四次挥手断开连接;使用序列号、确认应答、超时重传等机制确保可靠性;采用滑动窗口进行流量控制和拥塞控制。TCP报文结构包含源/目的端口、序列号、确认号等字段,通过控制位(SYN/ACK/FIN等)实现连接管理。三次握手防止失效连接请求,四次挥手确保双向数据完整传输,客户端需等待2MSL时间保证连接完全关闭。这些机制共同保障了TCP的可靠数据传输能力。
2025-07-22 19:01:54
827
原创 网络编程---网络基础知识
计算机网络按覆盖范围可分为PAN(个人区域网)、LAN(局域网)、MAN(城域网)和WAN(广域网)。PAN用于短距离个人设备连接,LAN实现建筑内高速数据传输,MAN覆盖城市范围,WAN则跨越广域互联。按拓扑结构分为总线型、星型、环型、树型、网状和混合型,各有优缺。OSI七层模型(物理层至应用层)与TCP/IP四层模型(网络接口层至应用层)分别从理论和实践角度描述网络通信。不同网络类型在范围、技术和应用场景上存在显著差异,需根据需求选择合适方案。
2025-07-22 19:01:32
751
原创 Camera Compact Module (摄像头模块,简称CCM)
嵌入式摄像头模块是一种专为嵌入式系统设计的小型化、集成化的摄像设备。它通常集成了镜头、图像传感器、图像信号处理器(ISP)、以及必要的控制和接口电路,有时还包括一些辅助功能如自动曝光控制、自动白平衡、自动对焦等。这种模块可以直接嵌入到各种电子设备中,以实现图像捕捉和视频录制功能。
2025-02-18 15:27:07
2320
原创 IIC总线,也称为I²C或Inter-Integrated Circuit协议
1980年:飞利浦公司(现恩智浦半导体)开始研发一种用于低速设备通信的总线技术,目标是减少电子产品内部的布线复杂性。1982年:I2C总线的原始版本发布,支持100kHz的通信速率,提供7位地址,最多可连接112个设备。1992年:I2C总线的第一个规范版本1.0发布,引入了400kHz的快速模式(Fast Mode)和扩展的10位地址空间。1998年:随着技术进步,I2C总线的通信速率进一步提升至高速模式(High Speed Mode),达到3.4MHz。
2025-02-13 20:32:20
1247
原创 SPI(Serial Peripheral Interface)串行外围设备接口
SPI协议最初由Motorola公司(现为NXP Semiconductors的一部分)在20世纪80年代中期开发。最初是为了在其68000系列微控制器中实现高速、高效的串行通信。该协议旨在简化微控制器与外围设备之间的数据传输。1980年代:SPI协议迅速被其他半导体制造商采纳,并逐渐成为嵌入式系统中的事实标准。尽管SPI从未被任何正式的标准组织或行业标准小组正式标准化,但它在实际应用中被广泛接受。
2025-02-04 21:08:48
1295
原创 wire单总线通信
1-Wire技术由美国Dallas Semiconductor公司于1989年首次推出,最初的1-Wire标准主要用于便携数据传输模块,减少了设备之间的连接复杂性 每个1-Wire从设备都有一个唯一的64位ROM ID,其中:节省I/O口线:仅需一根信号线和地线,大大减少了硬件资源的占用。结构简单:硬件连接简单,易于实现。成本低廉:由于硬件需求少,整体成本较低。易于扩展:可以方便地在总线上添加或移除设备。设备识别能力强:每个设备都有唯一的ROM ID,便于管理和识别。
2025-02-03 20:16:13
1654
原创 I.MX6ULL 中断介绍上
中断是计算机系统中的一种关键机制,它允许在程序执行过程中,当特定事件或条件发生时,处理器能够暂停当前正在运行的程序,转而去处理这些紧急或高优先级的事件。处理完这些事件后,处理器会返回到被中断的程序继续执行。中断机制是现代计算机系统的基础,它使得系统能够及时响应外部事件,如用户输入、设备状态变化等,同时也支持多任务操作系统中的进程调度和系统稳定性。
2025-01-31 20:05:47
1110
原创 ARM内核:嵌入式时代的核心引擎
在当今智能设备无处不在的时代,ARM(Advanced RISC Machines)处理器凭借其高性能、低功耗的特性,成为智能手机、物联网设备、汽车电子等领域的核心引擎。作为精简指令集(RISC)的典范,ARM核通过独特的架构设计和技术创新,重塑了芯片产业的格局。本文将从技术特点、工作模式、发展历程及实际应用等方面,全面解析ARM核的核心竞争力。
2025-01-31 19:00:21
2120
原创 PWM(Pulse Width Modulation,脉冲宽度调制)
PWM(Pulse Width Modulation,脉冲宽度调制)是一种利用数字输出引脚来模拟模拟信号的技术,在电子电路和控制系统中应用广泛。
2025-01-16 19:25:52
4685
2
原创 ADC(Analog-to-digital converter)模拟-数字转换器
ADC(Analog-to-Digital Converter),即模拟-数字转换器,是一种将模拟信号转换成数字信号的电子设备。它在现代电子系统中扮演着至关重要的角色,广泛应用于传感器信号处理、通信系统、医疗设备、工业自动化等多个领域无论你是初学者还是有经验的开发者,我希望我的博客能对你的学习之路有所帮助。
2025-01-15 19:08:48
1788
原创 RTC(Real_Time Clock)
RTC(实时时钟,Real-Time Clock)是一种用于跟踪当前日期和时间的计时设备。RTC可以是独立的芯片,也可以是集成在微控制器或处理器中的一个模块。RTC是现代电子设备中不可或缺的一部分,为各种应用提供了可靠的时间服务。独立电源:RTC可以配备一个独立于主电源的电源,如纽扣电池或超级电容,以确保在主电源断开时仍能持续运行。低功耗:RTC设计为低功耗设备,以便在备用电源供电时能够长时间运行。持续运行:与系统时钟或处理器时钟不同,RTC在系统断电或处于睡眠模式时也能持续运行。日期和时间显示。
2025-01-15 15:06:48
1252
原创 GPT(General Purpose Timer)定时器
在嵌入式系统中,General Purpose Timer(GPT)是一种非常重要的硬件组件,用于提供定时功能。定义:通用定时器是一种能够提供精确时间测量和控制功能的电子设备或电路模块。它可以产生周期性的时钟信号,通常可提供从微秒级到毫秒级的定时时钟功能。也可以对事件进行计时和计数,广泛应用于各种需要时间控制和测量的场景。工作原理:通常基于振荡器产生基准时钟信号,然后通过分频、计数等操作来实现特定的时间间隔和定时功能。
2025-01-14 16:11:37
1429
原创 看门狗计时器(Watchdog Timer,WDOG)
看门狗计时器(Watchdog Timer,WDT),是一种在嵌入式系统中广泛使用的硬件计时设备,其主要作用是用于系统恢复和稳定性保障。看门狗定时器的设计原理是一种简单的但有效的系统恢复机制,其核心目的在于防止微控制器单元(MCU)进入无限循环或“跑飞”(即程序失控)的状态。和其他计算机控制的设备通常会使用Watchdog通常是由于人们无法轻易接触该设备,或者无法及时对故障做出反应。例如,如空间探测器之类的远程嵌入式系统,人类无法其进行直接的物理操作。车辆中的嵌入式系统,驾驶员也难以进行直接的物理操作。
2025-01-14 16:10:30
1954
原创 嵌入式串口通信
串口通信是一种计算机硬件设备间的数据传输方法,它允许数据通过单一的通信线路按位(bit)顺序传输。串口通信广泛应用于各种设备,包括计算机、嵌入式系统、移动设备等。串口通信是一种数据传输方式,它通过一条传输线将数据一位一位地顺序传送。串口通信的特点是通信线路简单,成本低,适用于远距离通信。串口通信通常使用两条线实现双向通信,一条用于发送,一条用于接收。
2024-11-19 20:57:58
1499
1
原创 嵌入式软件开发环境的搭建
1.keil软件的安装 2.Ubuntu 和 Windows 文件互传下载xftp软件 3.代码编辑器vscode软件的安装4.下载Linaro的交叉编译器
2024-11-14 20:33:45
1386
原创 操作系统(Operating System)
操作系统(Operating System,简称OS)是计算机系统中的一种系统软件,它管理和控制计算机硬件与软件资源,并为计算机用户提供使用接口。嵌入式操作系统(Embedded Operating System,EOS),是一种专门设计用于嵌入式系统的操作系统。嵌入式系统通常是指那些嵌入在其他设备中,用于控制和管理设备硬件与软件资源的计算机系统。
2024-10-16 21:14:00
2250
原创 计算机系统基础概述
计算机是一种利用电子技术进行信息处理的设备,它能够接收、存储、处理和提供数据。计算机通过执行一系列预定义的指令来处理数据,这些指令通常被称为程序。计算机的核心功能包括算术运算、逻辑判断、数据存储和信息检索
2024-10-05 19:15:19
1765
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅