自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(87)
  • 收藏
  • 关注

原创 重载和重写这两个概念的区别

​。

2025-09-09 12:38:17 768

原创 TCP/IP、HTTP 和 HTTPS简介

特性TCP/IPHTTPHTTPS​​层级​​网络层、传输层应用层应用层(HTTP + SSL/TLS)​​角色​​互联网通信的​​基础架构​​Web内容的​​传输协议​​​​安全版​​的Web内容传输协议​​安全性​​不直接提供安全保证​​不安全​​,明文传输​​安全​​,加密传输​​功能​​寻址、路由、建立可靠连接定义Web请求和响应的格式在HTTP基础上增加加密、认证​​比喻​​高速公路和交通规则在高速公路上运输的​​明信片​​在高速公路上运输的​。

2025-09-08 19:37:25 1517 2

原创 文件系统简介

文件系统是计算机科学中一个核心且基础的概念。它就像是计算机存储设备的"图书管理员",负责用一套巧妙的方法来组织、管理、存储和检索我们所有的数据。

2025-09-08 17:52:57 496

原创 内存对齐简介

​ 让编译器自动处理对齐,你才能获得最佳性能和最好的平台兼容性。

2025-09-03 19:18:50 245

原创 linux可以直接用指针操作物理地址吗?

场景能否直接使用物理地址指针?原因与正确方法​​用户空间应用程序​​​​绝对不能​​所有地址都是虚拟地址,且无权限访问硬件。​​内核空间驱动程序​​​​强烈不建议直接使用​​必须通过ioremap()将物理地址转换为虚拟地址,并使用readlwritel等安全接口访问。这是唯一正确、安全、可移植的方法。​​核心思想​​:Linux 通过虚拟内存机制抽象并保护了硬件资源。直接操作物理地址违背了这一设计哲学,会破坏系统的稳定性和安全性。必须通过内核提供的标准接口来安全、可控地访问硬件。

2025-09-03 19:18:36 595

原创 UART和SPI区别

​一个通信速率(即波特率,如9600bps)。发送方在数据前加上一个“起始位”来告知接收方数据开始,接收方则根据这个约定的波特率来采样数据。如果双方时钟有微小误差,长时间通信可能会产生错位。主设备控制时钟,从设备在时钟的上升沿或下降沿读取数据。​:有一根独立的时钟线 (​。这是两者最根本的区别。

2025-08-29 20:06:36 902

原创 克隆态驱动给用户态使用流程

光有电话不行,还得有通话规则。访客不能说“帮我打印”,而必须使用标准的指令,比如:“指令1:查询状态”“指令2:打印一份文件”在内核中,这是通过一个叫 ​​ioctl​​ 的机制实现的。驱动程序员会定义好各种指令(比如CMD_PRINT),并编写好处理这些指令的函数。​​关键点​​:数据传递必须通过“安检”。内核和用户程序的内存是隔离的,不能直接传递指针。驱动必须使用和这两个函数来安全地接收和发送数据,防止系统崩溃。简单来说,这个过程就是:​​驱动在内核层​​:创建一个设备文件(如。

2025-08-29 19:58:21 401

原创 Linux 线程调度核心要点

​:Linux 线程调度的核心是 ​。

2025-08-29 19:56:53 438

原创 spi,usb,iic他属于驱动还是设备

​。

2025-08-28 10:51:07 778

原创 柔性数组简介

​。

2025-08-28 10:50:35 420

原创 CAN协议​​及其核心精髓——​​仲裁机制​​。

​​CAN​​,全称为​​,即控制器局域网。它是由德国博世公司开发的一种主要用于​​汽车​​和​​工业控制​​领域的串行通信协议。其设计初衷是为了解决汽车中大量电子控制单元之间的可靠、实时、抗干扰的通信问题。CAN协议是一种为​​高可靠性、多主、实时​​控制场景设计的通信协议。其核心​​非破坏性仲裁机制​​通过巧妙的“线与”逻辑和标识符优先级,优雅地解决了总线冲突问题,确保了关键消息能够及时送达。这正是它成为汽车和工业领域绝对主流总线技术的根本原因。它与IIC的仲裁(基于地址和时钟同步)有本质区别,是​。

2025-08-27 14:27:25 1092

原创 volatile关键字:硬件编程的「防优化盾牌」

/ 寄存器映射标准写法// 控制寄存器// 状态寄存器// 数据寄存器// 启用UARTwhile (!// 等待发送就绪// 发送字符「​​一变三外​​用volatile」变量值会​​变​​ + ​​外部​​因素修改 = 必须volatile三种「外部因素」场景:​​硬件寄存器​​(外部设备修改)​​中断服务程序​​修改的全局变量​​多线程共享变量​​(需配合其他同步机制)记住:volatile不是万能的,但在硬件编程中,没有volatile是万万不能的!

2025-08-26 11:38:07 246

原创 寄存器位级访问的完美解决方案:位域结构体

​高效可读性差​。

2025-08-26 11:32:35 830

原创 结构体与联合体:内存布局、应用场景与技术实践详解

在C/C++系统编程中,​​和​​是两种基础且强大的复合数据类型。它们虽然语法相似,但在内存管理、数据组织和应用场景上存在根本性差异。理解这些差异对于编写高效、内存敏感的系统级代码至关重要。本文将深入剖析两者的技术特性,并通过实际案例展示其最佳实践。

2025-08-26 11:09:11 331

原创 内联函数(Inline Functions)详解

内联函数是 C++ 中的重要特性,用于优化小型、频繁调用的函数:使用inline关键字声明或定义减少函数调用开销,提高性能适合小型函数和访问函数可能导致代码膨胀,需谨慎使用编译器最终决定是否内联比宏更安全,提供类型检查和作用域正确使用内联函数可以提高程序性能,但过度使用可能导致代码膨胀,反而降低性能。通常建议只对小型、频繁调用的函数使用内联。

2025-08-26 10:23:15 781

原创 FreeRTOS 中合理分配任务栈空间

在 FreeRTOS 中合理分配任务栈空间是系统稳定性的生命线。

2025-08-07 19:38:21 677

原创 内联函数 vs 宏函数

内联函数(inline)和宏函数(#define)都能减少函数调用开销,但存在​​。

2025-08-07 19:02:42 653

原创 嵌入式-数据传入速度快于处理速度怎么办?

【代码】嵌入式-数据传入速度快于处理速度怎么办?

2025-08-07 18:41:04 1105

原创 STM32串口通信指南

测试条件:发送1KB数据包,间隔100ms,持续60秒。​(Modbus为例)2️⃣ 复杂协议增加​。3️⃣ 量产前进行​。

2025-08-06 16:04:21 308

原创 memcpy()和strcpy()的区别

​(源和目标区域重叠时行为未定义),此时需用。

2025-08-06 15:44:13 859

原创 交叉编译器介绍

交叉编译器(Cross Compiler)是一种在​​(Host Machine,如x86 PC)上运行,但生成​​(Target Machine,如ARM嵌入式设备)可执行代码的编译工具链。它解决了不同硬件架构或操作系统间的代码转换问题,是嵌入式开发、操作系统移植和跨平台软件开发的核心工具。

2025-08-06 15:38:07 1089

原创 页表实现机制,分页的缺点,三层页表的原理,页表的意义

页表(Page Table)是现代操作系统内存管理的核心机制,通过多级分页实现虚拟地址到物理地址的转换。

2025-08-05 20:31:40 1340

原创 Uboot 启动的流程/Linux启动流程

Uboot与Linux的启动流程是嵌入式系统从硬件上电到操作系统就绪的核心过程,二者紧密协作,共同完成硬件初始化、内核加载及系统启动。

2025-08-05 20:25:11 1636

原创 FreeRTOS源码如何实现任务调度

FreeRTOS 的任务调度通过 ​​TCB 管理任务状态​​、​​双中断协作切换上下文​​(SysTick 触发 + PendSV 执行)、以及 ​​SVC 启动首个任务​​实现。其抢占式调度保障实时性,时间片轮转确保公平性,而低优先级中断设计避免阻塞关键操作。开发者可通过调整宏定义(如)和任务优先级优化系统性能。

2025-08-05 11:37:22 863

原创 RTOS如何保证实时性

​:RTOS的实时性源于​。

2025-08-04 20:08:46 817

原创 Linux系统调用过程的生动解析

你动嘴,它跑腿,后厨干活不操心!想碰硬件?没门!但喊一嗓子——牛排、网络、文件全搞定 👍。

2025-07-06 17:15:12 346

原创 线程安全如何保障?

线程安全 =

2025-07-04 13:57:54 281

原创 linux内核态(Kernel Mode) 和 用户态(User Mode)解析

运行用户应用程序,

2025-06-26 11:45:00 988

原创 构造函数和析构函数

在对象创建时自动调用,用于初始化对象。

2025-06-25 20:06:37 446

原创 Static的作用

在 C 语言中,static关键字有多个重要作用,通常用于控制变量或函数的生命周期和作用域。以下是对static。

2025-06-25 16:06:25 314

原创 U-Boot(Universal Bootloader)简介

是一种开源的、高度可定制的,专为嵌入式系统和特定硬件平台设计。它负责在设备上电后初始化硬件、加载操作系统内核,并将控制权移交给操作系统,是嵌入式设备启动过程中不可或缺的核心组件。

2025-04-19 17:42:22 1044

原创 U-Boot 启动过程详解

U-Boot的启动过程是一个分阶段初始化硬件并准备运行环境的复杂流程。

2025-04-19 17:42:04 1093

原创 Sigma-Delta ADC(ΣΔ-ADC)中的量化器简介

Sigma-Delta ADC(ΣΔ-ADC)是一种高精度的模数转换器,其中的是其核心组件之一。量化器负责将模拟信号转换为数字信号,并通过独特的噪声整形技术实现高分辨率。

2025-04-18 21:04:44 1679

原创 调制器的噪声传递函数(NTF)的零极点配置对其性能的影响

NTF的零点主导噪声整形性能,极点决定稳定性和动态响应。两者的协同设计是Delta-Sigma调制器实现高精度、高稳定性的关键,需结合具体应用需求(带宽、精度、功耗)进行优化。💡小贴士:设计时可以通过巧妙配置零极点的位置,平衡噪声抑制和系统稳定性,从而实现性能最优!⚖️。

2025-04-18 19:40:55 824

原创 #include <bits/stdc++.h> 头文件解析 [特殊字符]‍[特殊字符]

是 GCC 编译器特有的头文件,它可以一次性包含所有标准库头文件,在竞赛编程时非常方便。但它对程序性能的影响,需要从和两个角度来理解。

2025-04-17 16:15:56 428

原创 NP问题:计算复杂度理论中的核心挑战

属于NP类,且所有NP问题均可。

2025-04-17 10:42:19 448

原创 STL迭代器:C++泛型编程的核心工具 [特殊字符]

在C++中,STL(标准模板库)的迭代器是泛型编程的核心,它不仅解决了指针的局限性,还为算法与容器之间提供了抽象的访问接口。接下来,我们将探讨迭代器的核心作用、与指针的关键区别以及其设计哲学。

2025-04-16 14:53:33 501

原创 可编程逻辑单元(PLD)与数字电路基础:组合逻辑 vs 时序逻辑 [特殊字符]

PLD 是可以通过编程实现定制数字逻辑功能的集成电路。用户可以根据需求配置硬件逻辑,避免了定制专用芯片的高昂成本,适合快速原型设计或灵活修改的场景。

2025-04-16 14:36:33 512

原创 邻接矩阵与邻接链表:选择哪种图表示方式更合适? [特殊字符]

邻接矩阵和邻接链表是两种常见的图结构表示方法。它们的适用性因图的特点而异,选择合适的数据结构能大大提升程序的效率。下面我们将深入探讨它们的特点与适用场景,帮助你做出最佳选择!

2025-04-15 22:30:18 728

原创 C++ 中的二级指针与指针引用:核心区别

和。

2025-04-15 12:03:08 524

空空如也

空空如也

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

TA关注的人

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