- 博客(242)
- 资源 (24)
- 收藏
- 关注
原创 《并发编程核心机制系列(一):Linux原子操作API完整指南》
Linux原子操作API提供了一套完整的原子操作机制,通过合理使用这些API,我们可以实现高效的并发控制。在实际开发中,需要根据具体场景选择合适的API,并注意性能和正确性的平衡。作者:Morgan这是我的学习笔记,记录了对Linux原子操作API的深入理解。持续学习,不断进步!Lumière Notes - 用代码点亮前行之路。
2025-04-27 10:01:45
559
原创 《并发编程核心机制系列(二):原子操作与互斥量的抉择》
原子操作适合简单、高性能的场景互斥量适合复杂、功能性的场景选择时需要权衡性能和功能需求选择合适的同步机制不是简单地说原子操作比互斥量好或者互斥量比原子操作强大,而是要根据具体场景做出正确的选择。在实际开发中,可能需要同时使用多种同步机制来实现最优的解决方案。作者:Morgan这是我的学习笔记,记录了对并发编程中同步机制的理解。持续学习,不断进步!Lumière Notes - 用代码点亮前行之路。
2025-04-27 10:01:00
371
原创 cJSON - JSON 解析器设计与实现(三):类型安全的参数配置封装
在嵌入式系统中,JSON 作为一种轻量级的数据交换格式被广泛使用。虽然 cJSON 库提供了基础的 JSON 解析功能,但在实际应用中还需要考虑内存限制、类型安全等问题。本文介绍了一个基于 cJSON 的二次封装模块,提供了更安全、更易用的 JSON 处理接口。
2025-04-21 08:46:37
2240
原创 Linux防御式编程完全指南
防御式编程是一种全面的编程思想,需要在代码的各个层面都保持警惕。输入验证和边界检查内存管理和资源控制并发安全和同步机制信号处理和异常处理文件和网络操作安全错误处理和日志记录配置管理和验证系统调用防御进程间通信安全资源限制和清理提高程序的健壮性和可靠性增强安全性改善可维护性减少运行时错误提供更好的用户体验记住:永远不要对输入做任何假设,永远要考虑最坏的情况,这就是防御式编程的核心理念。
2025-04-14 08:39:14
2047
原创 Linux 多线程编程实战指南
多线程编程是一项复杂但必要的技术,需要深入理解并发原理,合理使用同步机制,注意性能优化。通过本文的实例和最佳实践,相信读者能够更好地掌握 Linux 多线程编程技术。
2025-04-11 16:46:26
1862
原创 轻量级设备驱动框架设计与实现
define SL_EOK 0 /* 成功 */#define SL_ERROR -1 /* 一般错误 */#define SL_EBUSY -2 /* 设备忙 */#define SL_ETIMEOUT -3 /* 超时错误 */
2025-04-11 14:16:40
1799
原创 Linux RTC 从入门到精通教程
RTC(Real-Time Clock)是实时时钟,是计算机系统中的一个独立时钟电路,即使在系统断电的情况下也能继续计时。
2025-04-11 14:15:54
1479
原创 linux 定时器管理系统设计与实现
SL Timebase模块是一个简单高效的定时器管理系统,通过单线程多任务的方式优化了系统资源的使用。它提供了秒级精度的定时执行能力,适用于多种嵌入式应用场景。模块的设计遵循了低耦合、易用性和资源效率的原则,为系统提供了稳定可靠的定时服务支持。
2025-04-11 13:25:35
1184
原创 嵌入式Linux按键监控模块详解:实现设备重启与长按检测
/ 按键事件类型KEY_EVENT_SHORT_PRESS, // 短按事件KEY_EVENT_LONG_PRESS, // 长按事件// 按键事件回调函数类型// 初始化按键检测模块// 停止按键检测// 快速初始化函数这个简洁的接口定义了两种按键事件类型和必要的初始化/反初始化函数。这个按键监控模块虽然代码量不大,但涵盖了Linux设备交互、事件处理、多线程编程等多个技术要点。它通过精心设计,在资源消耗与功能实现之间取得了很好的平衡,适合在各类嵌入式Linux系统中使用。
2025-04-10 16:28:35
2428
1
原创 C语言深入剖析:高性能事件队列的设计艺术
/ 事件处理函数类型定义// 结果回调函数类型定义// 事件结构// 链表节点// 事件处理函数// 事件数据// 数据大小// 结果回调函数// 事件优先级// 事件队列结构// 事件链表头// 互斥锁// 条件变量// 运行状态// 统计信息// 最大队列大小事件结构设计巧妙,既包含基本的事件信息,又支持回调机制队列结构采用链表实现,支持动态增长使用互斥锁和条件变量实现线程同步包含统计信息,便于监控和调试内存管理高效,使用静态事件池。
2025-04-09 17:32:00
3036
原创 C语言资源自动释放实现详解:基于GCC cleanup属性
cleanup该宏用于定义清理函数,cleanup_fn将在变量作用域结束时自动调用。AUTO_FREE用于自动释放内存。用于自动关闭文件。模块通过自动资源管理机制,极大地简化了C语言中的资源管理工作。它不仅提高了代码的安全性和可维护性,还减少了资源泄漏的风险。对于需要频繁分配和释放资源的场景(如嵌入式开发、文件操作等),该模块是一个非常实用的工具。通过简单的宏定义和清理函数,为C语言开发者提供了一种类似RAII(资源获取即初始化)的编程体验。
2025-04-09 16:59:40
4155
原创 通用接口函数注册模块设计与实现
通用接口函数注册模块()是一个用于实现动态函数注册的轻量级工具。它通过偏移量计算和函数指针赋值的方式,实现了C语言中类似面向对象的接口机制。模块支持动态注册、调试日志输出,并且易于扩展。void* ctx;// 设备上下文通过接口注册模块,可以在C语言中实现类似面向对象的接口机制。它不仅简化了代码结构,还提高了模块的可扩展性和可维护性。无论是驱动开发还是插件系统,这个模块都能提供强大的支持。
2025-04-08 18:56:03
2695
原创 C语言-查表法详解与实践
查表法是一种将复杂的条件判断转换为表驱动的编程技术,通过建立映射表来替代繁琐的if-else或switch-case语句。fill:#333;color:#333;color:#333;fill:none;查表法表结构定义查找算法数组映射结构体映射顺序查找索引查找查表法是一种简单而有效的编程技术,通过合理使用可以显著提升代码质量和运行效率。
2025-04-03 13:52:30
1980
原创 cJSON- API 深度解析:设计理念与实现原理(二)
这些 API 的设计充分体现了 cJSON 的设计理念:简单、高效、安全。通过合理的抽象和封装,既保证了使用的便利性,又不失灵活性和性能。
2025-03-26 18:24:06
677
原创 cJSON-轻量级 C 语言 JSON 解析库的使用(一)
在当今互联网时代,JSON (JavaScript Object Notation) 已成为数据交换的通用格式。对于 C 语言开发者来说,cJSON 库提供了一种简单而强大的方式来处理 JSON 数据。本文将深入剖析 cJSON 的设计理念、核心功能和实际应用场景。cJSON 是由 Dave Gamble 开发的一个轻量级 JSON 解析和生成库,使用纯 C 语言编写,仅包含一个头文件和一个源文件,总代码量不到 4000 行。简单、高效、易用。
2025-03-26 17:05:50
1421
原创 epoll:Linux 高性能 I/O 多路复用技术
epoll 是 Linux 内核提供的高效 I/O 事件通知机制,于 2.6 版本内核中引入。它解决了传统 select 和 poll 在高并发场景下的性能瓶颈问题,成为构建高性能网络服务器的首选技术。epoll 作为 Linux 平台上的高性能 I/O 多路复用机制,通过创新的设计解决了传统 select/poll 的性能瓶颈,为构建高并发网络应用提供了强大支持。掌握 epoll 的使用,对于开发高性能服务器至关重要。《Linux 高性能服务器编程》,游双著。
2025-03-24 19:00:20
2263
原创 内存管理模块设计与实现
在嵌入式系统或需要精确控制内存使用的场景中,一个良好的内存管理模块至关重要。内存使用追踪内存分配记录内存泄漏检测线程安全设计内存对齐支持/* 链表节点 */void *ptr;/* 申请地址 *//* 申请大小 *//* 申请行数 *//* 申请函数名 *//* 已经使用内存 *//* 最大使用内存 *//* 信息记录 *//* 初始化标记 */完整的内存追踪能力线程安全的实现便捷的调试接口灵活的内存对齐支持详细的使用记录。
2025-03-24 17:24:44
764
原创 设计模式的六大原则
单一职责原则:一个类只做一件事开闭原则:对扩展开放,对修改关闭里氏替换原则:子类可以替换父类接口隔离原则:接口要小而专一依赖倒置原则:依赖抽象而不是具体迪米特法则:降低对象之间的耦合这六大原则是设计模式的基础,遵循这些原则可以帮助我们写出更好的代码。它们不是硬性规定,而是指导原则,需要根据实际情况灵活运用。
2025-03-23 20:02:27
424
原创 C语言-发布订阅模式详解与实践
发布订阅模式定义了一种一对多的依赖关系,让多个订阅者对象同时监听某一个主题。这个主题在状态发生变化时,会通知所有依赖于它的订阅者对象,使它们能够自动更新。发布订阅模式通过解耦发布者和订阅者,实现了灵活的消息通知机制。这种模式特别适合处理事件驱动的场景。
2025-03-23 19:55:06
1794
原创 C语言-MVC模式详解与实践 - 温度监控系统
MVC模式将应用程序分为三个核心部分:模型(Model)、视图(View)和控制器(Controller)。这种模式有助于实现关注点分离,使得程序更容易维护和扩展。MVC模式通过分离关注点,使得温度监控系统的代码结构更加清晰,便于维护和扩展。这种模式特别适合处理数据、显示和用户交互的系统。
2025-03-23 19:33:03
1614
原创 C语言-装饰器模式详解与实践 - LED控制系统
装饰器模式允许我们动态地向对象添加新的功能,而不改变其原有结构。在LED控制系统中,我们可以通过装饰器模式实现不同的LED效果叠加。装饰器模式在LED控制系统中的应用,使得我们可以灵活地组合不同的LED效果,同时保持代码的清晰和可维护性。这种模式特别适合需要动态组合多种LED效果的场景。
2025-03-23 19:24:02
1733
原创 C语言-状态模式详解与实践 - OTA升级状态机
在OTA升级过程中,设备会经历多个不同的状态(如空闲、下载、校验、升级等),每个状态下的行为和响应都不同。状态模式可以帮助我们清晰地管理这些状态转换和相应的行为。通过状态模式,我们实现了一个清晰、可维护的OTA升级状态机。这种设计方式使得复杂的升级流程变得条理分明,同时也便于后续功能扩展。
2025-03-23 19:11:03
2086
原创 C语言-访问者模式详解与实践
这个例子展示了访问者模式在嵌入式系统中的实际应用。通过将传感器数据采集和处理逻辑分离,我们可以灵活地添加新的数据处理方法,同时保持代码的清晰和可维护性。
2025-03-23 18:59:58
2300
原创 C语言-适配器模式详解与实践
适配器模式是一种结构型设计模式,它允许将一个类的接口转换成客户端所期望的另一个接口。适配器让原本由于接口不兼容而不能一起工作的类可以协同工作。适配器模式通过转换接口,使得原本不兼容的系统能够协同工作。这种模式特别适合系统升级或整合第三方库的场景。
2025-03-23 18:52:16
1120
原创 C语言-桥接模式详解与实践
桥接模式是一种结构型设计模式,它将抽象部分与其实现部分分离,使它们都可以独立地变化。这种模式通过组合的方式建立两个类之间的关系,而不是继承。桥接模式通过将抽象和实现分离,实现了它们的独立变化。这种模式特别适合处理跨平台或需要支持多种实现的场景。
2025-03-23 18:48:28
825
原创 C语言- 工厂模式详解与实践
工厂模式是一种创建型设计模式,它提供了一种创建对象的最佳方式。在工厂模式中,我们在创建对象时不会对客户端暴露创建逻辑,而是通过一个共同的接口来指向新创建的对象。工厂模式通过封装对象的创建过程,提供了一种灵活且可扩展的对象创建机制。这种模式特别适合处理需要创建多种类型对象的场景。
2025-03-23 18:43:13
1955
原创 【NXP i.MX6ULL 使用】IMX6Y2C-512M-EMMC 设备树配置文档
【代码】【NXP i.MX6ULL 使用】IMX6Y2C-512M-EMMC 设备树配置文档。
2025-02-12 10:45:32
549
原创 Linux 应用层 GPIO 编程指南
GPIO(General Purpose Input/Output)是通用输入输出端口,可以通过软件控制实现输入输出功能。
2024-10-31 14:25:51
2101
原创 signal() -函数的详细使用说明
函数用于设置特定信号的处理方式。它允许程序在接收到特定信号时执行自定义的处理函数,或者采用默认的处理方式,也可以选择忽略该信号。这些信号在不同的操作系统上可能会有一些细微的差别,但总体上它们的行为是相似的。在编写程序时,可以根据需要使用。函数或其他信号处理机制来改变这些信号的默认行为,以实现更灵活的程序控制和错误处理。这个函数接收两个参数,返回一个函数指针。以下是一个完整的示例代码,展示了如何使用。
2024-10-29 14:32:52
2037
原创 Modbus从机模式多包数据解析方案
多包循环解析指针偏移管理解析次数限制功能码分类处理有效解决了 Modbus 从机模式下的多包数据处理问题,提高了数据处理的可靠性和效率。
2024-10-29 10:43:25
287
原创 【modbus协议】Modbus-TCP消息帧格式
Modbus Application Header 是 Modbus TCP 通信中的关键部分,它提供了事务标识、协议标识、数据长度和设备标识等信息,帮助客户端和服务器正确解析和处理 Modbus 请求和响应。通过理解这些字段的含义和作用,可以更好地实现和调试 Modbus TCP 通信。
2024-10-28 15:51:59
1575
原创 TLS 加密的原理和过程
TLS(Transport Layer Security,传输层安全协议)是一种为网络通信提供安全及数据完整性保障的安全协议。TLS 的主要目的是在两个通信应用程序之间提供保密性和数据完整性。它通过使用对称加密、非对称加密和哈希函数等多种加密技术来实现这一目标。通过以上过程,TLS 实现了在不安全的网络环境中安全地传输数据。
2024-10-09 23:02:26
840
原创 MQTT嵌入式客户端的网络接口适配实现
通过合理的接口设计和非阻塞实现,可以有效避免lwIP的阻塞问题,提高MQTT客户端的网络通信效率和可靠性。
2024-09-18 22:07:16
699
原创 【QT】定时器使用
一、创建与初始化使用QTimer类来创建定时器。可以在构造函数中指定父对象,确保定时器在正确的对象生命周期内被管理。,这里的this表示定时器的父对象,通常是一个QObject派生类的实例,这样可以确保在父对象销毁时,定时器也能被正确清理。二、设置时间间隔通过方法设置定时器的时间间隔,单位为毫秒。设置定时器每 1000 毫秒触发一次。三、连接信号与槽使用connect函数将定时器的timeout信号与相应的槽函数连接起来,以便在定时器超时时执行特定的操作。,当定时器超时时,会调用。
2024-09-15 22:22:21
1895
原创 【QT】基础入门学习
槽是一个普通的成员函数,可以在任何 Qt 对象中定义。槽函数可以有不同的参数和返回值类型,具体取决于需要处理的信号。例如,一个槽函数可以用来处理按钮点击事件,执行一些特定的操作,如打开一个新窗口、更新数据等。为了建立信号与槽的连接,可以使用connect函数。这个函数接受发送者对象、发送者发出的信号、接收者对象和接收者的槽函数作为参数。例如:connect(senderObject, SIGNAL(signalName()), receiverObject, SLOT(slotName()));。
2024-09-08 19:12:01
960
原创 【MA35D1】buildroot 编译使用经验
NuMicro® MA35D1系列为一颗异核同构的多核心微处理器,适用于高端 Edge IIoT Gateway。它是基于双核 64 位 Arm® Cortex-A35 内核,执行速度可达 800 MHz,并搭载一颗 180 MHz Arm Cortex-M4 内核。基于此高性能内核,MA35D1 系列有助于 Tiny AI/ML 边缘运算。
2024-09-02 21:39:01
1630
DS-000189-ICM-20948-v1_1_89_translate.pdf
2019-10-09
用C-语言实现面向对象编程.pdf
2019-08-13
嵌入式技术与应用丛书 汽车电子KEA系列微控制器 基于ARM Cortex-M0+内核 [王宜怀,李跃华著][电子工业出版社].pdf
2019-04-08
AnalogDevices.ADuCM36x_DFP.1.0.0.pack
2019-04-04
AD7124英文手册
2019-03-29
AD7124中文手册
2019-03-29
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人