- 博客(599)
- 资源 (30)
- 收藏
- 关注
原创 【C++特殊工具与技术】优化内存分配(六):运行时类型识别
运行时类型识别(Runtime Type Identification, RTTI)是 C++ 标准提供的一组机制,允许程序在运行时获取对象的类型信息。RTTI 主要用于处理多态场景下的类型判断,是面向对象编程中解决类型转换、动态分发等问题的重要工具。
2025-06-13 09:00:00
808
3
原创 吃透蓝牙协议栈:从物理层到应用层的硬核解析(高频考点 + 大厂真题)
对于嵌入式开发、物联网工程师而言,能否深度理解协议栈不仅决定了设备连接稳定性、功耗优化能力,更是华为、苹果、高通等大厂面试的核心考察点。本文将结合《蓝牙核心规范 5.4》(Bluetooth Core Specification v5.4)及近 3 年大厂面试真题,从物理层到应用层逐层拆解协议栈的技术逻辑,快速掌握高频考点与实战技巧。
2025-06-12 22:58:09
102
原创 【驱动设计的硬件基础】处理器的分类
从嵌入式的 “小而美” 到服务器的 “大而强”,从冯・诺依曼的 “经典” 到 RISC-V 的 “开源”,处理器的每一个 “标签” 都在诉说它的 “能力边界”。对于驱动开发者来说,理解这些标签(应用领域、体系结构、指令集),就像拿到了一把 “钥匙”—— 只有用对钥匙,才能打开硬件的 “能力之门”,写出高效、稳定的驱动代码。
2025-06-12 09:00:00
1117
4
原创 【Bluedroid】蓝牙启动之 RFCOMM_Init 流程源码解析
本文围绕蓝牙协议栈中 RFCOMM(无线射频通信)层与 L2CAP(逻辑链路控制和适配协议)层的核心初始化流程及交互机制展开,重点分析了 RFCOMM 模块的初始化函数(RFCOMM_Init)、RFCOMM 与 L2CAP 的接口注册函数(rfcomm_l2cap_if_init),以及 L2CAP 层的服务注册函数(L2CA_Register)。
2025-06-11 23:00:00
891
4
原创 【C++特殊工具与技术】优化内存分配(五):显式析构函数的调用
合理使用显式析构函数调用,可以提升内存管理的灵活性和性能(如内存池、资源重用),但需严格遵循使用规范,避免未定义行为。在大多数情况下,应优先依赖编译器自动调用析构函数,仅在必要时使用显式调用。
2025-06-11 09:00:00
1123
6
原创 【驱动设计的硬件基础】从处理器到存储器,揭秘驱动开发的底层密码
从通用处理器的 “全能” 到 DSP 的 “专业”,从寄存器的 “快” 到外存的 “大”,处理器和存储器就像驱动开发的 “地基”。只有搞懂它们的 “脾气”(比如处理器的中断优先级、存储器的缓存特性),驱动代码才能 “接地气”,真正让硬件 “听指挥”。
2025-06-10 08:58:04
2787
6
原创 【C++特殊工具与技术】优化内存分配(四):定位new表达式、类特定的new、delete表达式
在 C++ 中,内存管理是性能优化和资源控制的核心。除了标准的new/delete操作符外,C++ 还提供了两种高级机制:定位 new 表达式(Placement New)和类特定的new/delete表达式(Class-specific new/delete)。
2025-06-09 23:00:00
818
22
原创 【Bluedroid】蓝牙启动之btm_ble_init源码分析
本文围绕BLE协议栈的核心模块展开,重点解析 btm_ble_init 初始化函数、供应商能力管理、广播过滤功能及动态配置机制的实现逻辑。通过分析关键数据结构(如 tBTM_BLE_ADV_FILTER_CB 控制块)、硬件能力获取接口(BTM_BleGetVendorCapabilities)及支持性检查(is_filtering_supported),揭示了 BLE 协议栈如何通过状态重置、资源动态分配、硬件能力适配实现功能的稳定运行与灵活扩展。
2025-06-09 00:00:00
674
2
原创 从 “小白” 到 “驱动人”:Linux 设备驱动开发那些事儿
从裸机开发的 “单打独斗” 到 Linux 驱动的 “团队协作”,设备驱动的进化史其实就是一部软硬件协同发展的缩影。对于开发者来说,Linux 驱动开发既是 “技术活”,也是 “耐心活”—— 既要懂硬件寄存器的 “01 世界”,又要理解内核调度的 “人情世故”。
2025-06-08 18:00:00
727
2
原创 【C++特殊工具与技术】优化内存分配(三):operator new函数和opertor delete函数
内存管理是 C++ 的核心能力之一,而operator new和operator delete作为内存分配的底层接口,是理解 C++ 对象生命周期的关键。
2025-06-08 09:15:00
950
24
原创 蓝牙 BLE 扫描面试题大全(1):从基础到实战的深度解析
本文整理了10 + 道历年经典面试题,,并结合 BLE 协议栈(如 Bluedroid、Core Bluetooth)源码和实际开发案例,给出详尽解析。无论你是校招新人还是社招老兵,掌握这些内容足以应对 90% 的 BLE 扫描面试场景。
2025-06-07 17:00:00
194
2
原创 【C++特殊工具与技术】优化内存分配(二):allocator类
本文将从allocator的核心机制出发,结合代码,深入解析其在管理类成员数据、对象构造 / 销毁、内存重新分配等场景中的应用。
2025-06-07 09:00:00
862
20
原创 【Bluedroid】蓝牙启动之 SMP_Init 源码解析
本文围绕 Bluedroid SMP 协议的初始化流程展开,系统解析其核心控制块(tSMP_CB)的状态管理、与 L2CAP 层的接口注册,以及 P-256 椭圆曲线参数的初始化逻辑。通过分析SMP_Init函数的调用链,揭示tsmp_CB如何重置状态、初始化定时器与测试参数,smp_l2cap_if_init如何建立与 L2CAP 的通信接口,以及p_256_init_curve如何为安全连接(SC)提供密码学基础。这些步骤共同确保 SMP 协议栈的可靠启动与安全通信能力。
2025-06-06 23:00:00
582
1
原创 【C++特殊工具与技术】优化内存分配(一):C++中的内存分配
本文详细介绍了 C++ 中的内存分配相关知识,包括栈内存和堆内存的分配方式、new和delete操作符的使用、内存泄漏和悬空指针问题,以及智能指针在动态内存管理中的应用。合理选择和使用内存分配方式,正确处理内存管理问题,对于编写高效、稳定的 C++ 程序至关重要。在实际编程中,应根据具体需求选择合适的内存管理策略,充分利用 C++ 提供的内存管理工具,提高程序的质量和性能。
2025-06-06 09:00:00
1549
16
原创 福州朱紫坊惊现 “中国科技龙脉”!从萨镇冰到萨师煊,看一个家族如何撬动两个时代
当第八届数字中国峰会的璀璨光芒再次聚焦福州,这座承载千年历史的古城深处,雁门萨氏跨越数百年的家族史诗,正激荡起全新的时代回响。从甲午海战中萨镇冰为“海权图强”浴血奋战,铁血舰长萨师俊与中山舰生死共存,到萨本栋在抗战硝烟里铸就厦大“南方之强”的美誉,再到萨师煊在数字领域的荒芜之地夯筑起坚实的“信息基石”,这个家族以代际接力的坚韧与担当,书写出一部波澜壮阔的中国近代自立自强奋斗史。榕城朱紫坊萨氏大院那历经岁月洗礼、斑驳陆离的砖瓦,默默见证着从这里走出的巍峨身影,如何让家族血脉始终与中国变革的时代浪潮同频共振。
2025-06-05 14:52:00
909
13
原创 【C++高级主题】虚基类的声明
C++ 引入了 虚基类(Virtual Base Class)机制。通过在继承时使用virtual关键字,让多个派生类共享同一个基类的实例,从而消除数据冗余和访问二义性。
2025-06-05 08:45:00
1166
24
原创 【Bluedroid】蓝牙启动之gatt_init 流程源码解析
本文围绕Android蓝牙协议栈中 GATT(通用属性配置文件)模块的初始化函数gatt_init展开,深入解析其核心实现逻辑与关键步骤。
2025-06-04 22:53:26
692
1
原创 【C++高级主题】虚继承
在 C++ 面向对象编程中,多重继承(Multiple Inheritance)允许一个类继承多个基类的特性,这在设计复杂系统(如 “可序列化”+“可绘制” 的图形组件)时非常有用。但多重继承也带来了一个经典问题 ——菱形继承(Diamond Inheritance):当派生类通过不同路径继承同一个公共基类时,公共基类会在派生类中生成多份实例,导致数据冗余和访问二义性。
2025-06-04 09:00:00
1739
15
原创 【Bluedroid】蓝牙启动之sdp_init 源码解析
SDP 模块的初始化(sdp_init)是蓝牙服务发现功能的基础,通过控制块初始化、定时器创建、L2CAP 参数配置及回调注册,为 SDP 模块的运行奠定环境基础。核心数据结构(如tSDP_CB、tL2CAP_CFG_INFO)通过分层设计(全局控制 - 连接管理 - 协议交互),实现了状态管理、连接控制与协议协同的高效整合。理解这些初始化细节与数据结构的协作逻辑,是掌握蓝牙服务发现底层机制、解决实际开发中连接异常(如超时、数据乱序)及性能优化(如 MTU 调优)问题的关键。
2025-06-03 22:39:35
779
3
原创 【C++高级主题】多重继承下的类作用域
在 C++ 中,多重继承(Multiple Inheritance)允许一个派生类同时继承多个基类的特性,这在设计复杂系统(如 “可序列化”+“可绘制” 的图形组件)时提供了强大的灵活性。但随之而来的挑战是:多个基类的作用域重叠可能导致名字冲突(二义性,Ambiguity),例如两个基类拥有同名的成员变量或函数。
2025-06-03 09:00:00
1524
16
原创 【C++高级主题】转换与多个基类
在 C++ 的面向对象编程中,多重继承允许一个类同时继承多个基类的特性,这在实现复杂接口(如 “可绘制”+“可交互” 组件)或复用多组独立功能时非常有用。但随之而来的挑战是:当派生类对象被转换为不同基类的指针或引用时,如何确保虚函数调用的正确性?多个基类的虚析构函数如何协同工作?
2025-06-02 22:20:10
946
22
原创 【C++高级主题】多重继承
在 C++ 的面向对象编程中,继承(Inheritance)是实现代码复用和类型扩展的核心机制。我们熟悉的 “单继承”(Single Inheritance)允许一个派生类从一个基类继承属性和方法,但现实中的复杂场景往往需要更灵活的模型 —— 例如,一个 “智能手表” 类可能需要同时继承 “计时器”(Timer)和 “通信模块”(Communication)两个独立的基类。这时,C++ 提供的多重继承(Multiple Inheritance)就能大显身手。
2025-06-02 09:00:00
1254
16
原创 【Bluedroid】蓝牙启动之 l2c_init 源码解析
本文围绕 L2CAP 层的五大核心数据结构(全局控制块tL2C_CB、链路控制块tL2C_LCB、通道控制块tL2C_CCB、注册控制块tL2C_RCB及固定通道注册信息tL2CAP_FIXED_CHNL_REG)展开解析,结合初始化函数l2c_init的实现,阐述 L2CAP 层如何通过预分配资源池、状态隔离、协议适配和流量控制等机制,支撑蓝牙设备间的可靠数据传输与服务交互。
2025-06-01 21:20:27
675
2
原创 【C++高级主题】命令空间(六):重载与命名空间
在 C++ 中,函数重载(Overload)是实现多态的重要手段,允许同一作用域内同名函数通过不同的参数列表区分。然而,当函数分布在不同命名空间中时,重载的规则变得更为复杂 —— 命名空间的作用域规则、using声明 / 指示的引入机制,以及实参相关查找(ADL)会共同影响重载集的构成。
2025-06-01 08:45:00
1996
23
原创 【Bluedriod】蓝牙协议栈GD模块(GD_SHIM_MODULE)启动机制及源码解析
本文深入剖析Android蓝牙协议栈中GD模块的启动机制,从模块生命周期管理、状态转换、异步初始化,到核心组件(HCI层、协议栈管理器、广播/扫描/测距模块)的协同运作。通过源码分析揭示蓝牙协议栈如何通过分层设计实现硬件抽象化、事件驱动和线程安全管理,揭示了蓝牙协议栈从模块加载到功能就绪的底层实现细节,为理解蓝牙系统的模块化架构与跨层交互提供了技术视角。
2025-05-31 19:38:40
823
2
原创 【C++高级主题】命令空间(五):类、命名空间和作用域
在 C++ 中,类(Class)、命名空间(Namespace)与作用域(Scope)是代码组织的三大核心机制。它们既相互独立,又深度关联:类定义作用域,命名空间管理名称冲突,而作用域规则则决定了名称(如变量、函数、类)的可见性。本文将聚焦两个关键交叉点:实参相关的查找(Argument-Dependent Lookup, ADL)与隐式友元声明的命名空间规则,深入解析三者的交互逻辑。
2025-05-31 08:32:10
1148
17
原创 Android 代码阅读环境搭建:VSCODE + SSH + CLANGD(详细版)
在阅读Android源码(AOSP超过1亿行代码)时,开发者常面临索引失败、跳转卡顿等问题。本教程将手把手教你搭建基于VSCode + SSH + Clangd的终极阅读环境,实现秒级符号跳转、精准代码提示和高效远程开发。
2025-05-30 22:45:00
1105
5
原创 【C++高级主题】命令空间(四):命名空间成员的使用
在 C++ 中,命名空间(Namespace)是组织代码的核心工具,它通过逻辑分组避免命名冲突,提升代码的可维护性。但如何高效、安全地使用命名空间中的成员,却是一门 “细活”。本文将围绕 using声明 (using declaration)、命名空间别名(namespace alias)、using指示(using directive)三大核心机制展开,深入解析命名空间成员的使用规则与最佳实践。
2025-05-30 09:00:00
1662
30
原创 Android ADB:从安装到高级调试的终极指南(附跨平台实战教程)
ADB 作为 Android 开发与调试的核心工具,其功能远不止本文所述。从基础的文件传输到复杂的系统级调试,ADB 贯穿了应用开发的全生命周期。建议在实际项目中多尝试不同命令组合,并结合官方文档(ADB Documentation)深入探索。随着 Android 系统的更新,ADB 也在不断演进,保持对新技术的关注(如 ADB over TCP/IP、Wireless Debugging)将帮助您始终站在开发效率的前沿。
2025-05-29 22:59:34
1381
4
原创 【C++高级主题】命令空间(三):未命名的命名空间
在 C++ 编程中,命名空间(Namespace)是组织代码的重要工具,它能有效避免命名冲突,提高代码的可维护性。在前面的文章中,我们已经介绍了命名空间的基本概念和常见用法。本文将深入探讨一种特殊的命名空间 —— 未命名的命名空间(Unnamed Namespace),它在 C++ 中有着独特的用途和行为。
2025-05-29 08:30:00
1565
18
原创 【Bluedriod】蓝牙启动之 btm_init 源码解析
本文深入剖析蓝牙协议栈中 BTM(Bluetooth Manager)模块的初始化机制,以 Android 开源项目(AOSP)代码为例,详细解读 BTM 初始化过程、核心控制块(tBTM_CB)的结构设计、蓝牙经典与低功耗模式(BLE)的状态管理、安全模块初始化(BTM_Sec_Init)以及基于 RSSI 的设备搜索策略。通过剖析关键数据结构(如 tBTM_DEVCB、tBTM_BLE_CB、tBTM_SEC_CB)和回调机制,揭示蓝牙协议栈在设备发现、连接管理、安全配对等核心流程中的底层逻辑。
2025-05-28 23:00:00
1050
5
原创 【C++高级主题】命令空间(二):嵌套命名空间
在 C++ 编程中,嵌套命名空间(Nested Namespace)是组织大型项目代码的重要工具。它允许开发者在命名空间内部定义新的命名空间,形成层次化的逻辑结构,从而更清晰地管理代码组件。
2025-05-28 08:56:53
1342
21
原创 【Bluedroid】蓝牙启动之init_stack_internal 函数全流程源码解析
本文通过对Android蓝牙协议栈Bluedroid init_stack_internal函数进行深度剖析,全面揭示了蓝牙协议栈的初始化机制。通过分析MessageLoopThread、btif_init_bluetooth等核心组件,展示了Bluedroid如何实现线程管理、跨层通信和实时调度。
2025-05-27 23:02:11
812
2
原创 【C++高级主题】异常处理(五):异常说明
在 C++ 的异常处理体系中,异常说明(Exception Specification) 曾是一种用于声明函数可能抛出哪些异常的机制。从 C++98 引入到 C++17 弃用,异常说明经历了多次变革,其设计初衷与实际效果的差距引发了诸多争议。
2025-05-27 09:00:00
1159
29
原创 【C++高级主题】异常处理(四):auto_ptr类
在C++98标准中引入的auto_ptr是第一个智能指针实现,虽然它已在C++11中被正式弃用,但理解其设计原理和运作机制对于掌握现代C++内存管理思想具有重要价值。
2025-05-26 22:45:00
1787
32
原创 【Bluedroid】蓝牙Hid Host get_protocol全流程源码解析
本文以Android蓝牙协议栈中get_protocol()函数为入口,深入剖析HID设备协议模式(Boot/Report Protocol)获取的完整流程。通过逐层解析BTIF、BTA、HID Host模块的交互逻辑,揭示协议模式查询的跨层通信机制、HID控制命令的封装策略及L2CAP数据传输的底层实现,重点分析状态校验、异步回调、数据分片等关键技术实现。
2025-05-26 00:00:00
842
4
原创 【Bluedroid】蓝牙Hid Host set_info全流程源码解析
本文以Android蓝牙协议栈(Bluedroid)中HID主机模块的set_info()函数为切入点,深入剖析HID设备描述符配置与设备注册的完整流程。通过逐层解析BTIF、BTA、HID Host模块的交互逻辑,揭示蓝牙设备元数据(厂商ID、产品ID、报告描述符等)的传递路径、设备列表管理机制及底层协议栈的注册过程,并重点分析虚拟线缆设备与传统蓝牙设备的差异化处理策略。
2025-05-25 16:00:00
691
3
原创 【C++高级主题】异常处理(三):自动资源释放
在C++的世界里,异常处理是构建健壮、可靠软件系统的基石。它允许我们在程序执行过程中捕获和处理意外情况,防止程序崩溃或进入不可预测的状态。然而,仅仅捕获异常还远远不够,我们还需要确保在异常发生时,程序能够正确地释放已分配的资源,避免资源泄漏,保证程序的稳定性和资源利用率。这就是我们今天要深入探讨的主题——自动资源释放,以及它在C++异常处理中的核心地位。
2025-05-25 08:45:00
870
45
原创 【Bluedroid】蓝牙HID Host virtual_unplug全流程源码解析
本文基于 Android Bluedroid 源码,从上层应用触发virtual_unplug接口开始,深入解析 VUP 的全流程实现,涵盖异步事件传递、设备能力适配(虚拟线缆支持与否)、定时器监控、协议栈消息封装、L2CAP 数据发送等关键环节,并对比不同设备的差异化处理策略(虚拟暂停 vs 物理断开),最后总结 VUP 设计的核心目标与工程实践要点。
2025-05-24 17:30:00
568
蓝牙技术领域:Bluetooth SIG指定编号及其相关规范与应用说明
2025-03-21
蓝牙音频/视频遥控配置文件(AVRCP)v1.6.3规范
2024-11-27
基于Air Kiss技术的小型低功耗设备网络接入方案解析
2024-11-16
蓝牙通信协议中AirSyncDebugger异常情况的详细解析与应用
2024-11-16
nrf51822硬件环境搭建与资料检索全解析
2024-11-16
低功耗蓝牙nRF51822 USB Dongle使用指南与开发资源
2024-11-16
Nordic nRF52832蓝牙开发环境配置指南与实践
2024-11-16
蓝牙v6.0核心技术规范
2024-11-11
微信硬件产品接入及能力定义指南V1.2
2024-11-03
代码随想录单调栈算法详解及其应用
2024-09-17
《代码随想录》贪心算法详解与实战应用
2024-09-17
代码随想录:全面解析二叉树理论与应用实例
2024-09-17
深入解析栈与队列的实现及其应用案例
2024-09-17
《代码随想录》双指针算法及其应用详解
2024-09-17
《代码随想录》字符串算法精华汇总
2024-09-17
代码随想录:哈希表的应用与优化
2024-09-17
《代码随想录》链表算法详解及实现
2024-09-17
代码随想录:深入解析数组及其常用算法
2024-09-17
《代码随想录》最新PDF全集整理发布
2024-09-17
nRF-Sniffer-BLE-UG-v4.1.0
2024-09-03
蓝牙前世今生的书籍的讲述
2024-09-02
LT码matlab仿真
2018-04-12
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人