- 博客(479)
- 资源 (24)
- 收藏
- 关注

原创 详解linux内核链表list_head及其接口应用
摘要:本文介绍了内核代码中经常使用的list_head链表的原理,及其它的各种接口函数(宏函数)的使用方法和技巧,对理解Linux内核数据结构和代码有较好参考意义。
2022-09-14 23:23:33
861
4

原创 虚拟机双网卡设置(外网+内网)
本文主要介绍了在开发过程中,实现开发板利用网线直连电脑实现开发工作,而电脑又可以通过另一个无线或有线网卡正常连接互联网。
2022-09-11 22:17:13
14360
2

原创 软考高级系统架构设计师你想知道的全在这
2021年准备参加软考获取高级职业技术资格认证的小伙伴咱们约起吧?今年刚参加完系分考试,不知道有没有通过,但感觉应该差不多,这里给自己点个赞!自软考系列文章发表之后有很多准备参加软考的小伙伴加我微信,关注我的微博,也有很多因此成了好朋友,甚至是同事。自前年开始,我会在CSDN、简书、GITHUB等平台将我在工作、学习的道路上遇到的各种问题都写成一篇技术博客,因为这样既能给日后查找资料方便,也能进一步提高自己的文档编写能力,还能广交朋友,拓展人脉,何乐而不为呢。
2020-11-12 23:00:28
14561
18

原创 2020软考高级系统分析师,你想知道的全在这
2020年准备参加软考获取高级职业技术资格认证的小伙伴咱们约起吧?!去年刚参加完嵌入式系统设计师考试,并以高分通过,这里给自己点个赞!自这篇发表之后有很多致力于嵌入式开发的小伙伴加我微信,关注我的微博,也有很多因此成了好朋友,甚至是同事。自前年开始,我会在CSDN、简书、GITHUB等平台将我在学习嵌入式的道路上遇到的各种问题都写成一篇技术博客,因为这样既能给日后查找资料方便,也能进一步提高自己的文档编写能力,还能广交朋友,拓展人脉,何乐而不为呢。当然也希望大家能和我一样,把自己在学习中的问题写成博客放在
2020-08-16 22:36:29
4134
1

原创 2022年备考[嵌入式系统设计师]你准备好了吗?
2020年准备参加软考获取中级职业技术资格认证的小伙伴咱们约起吧?!去年刚参加完嵌入式系统设计师考试,并以高分通过,这里给自己点个赞!自这篇发表之后有很多致力于嵌入式开发的小伙伴加我微信,关注我的微博,也有很多因此成了好朋友,甚至是同事。自前年开始,我会在CSDN、简书、GITHUB等平台将我在学习嵌入式的道路上遇到的各种问题都写成一篇技术博客,因为这样既能给日后查找资料方便,也能进一步提高自己的文档编写能力,还能广交朋友,拓展人脉,何乐而不为呢。当然也希望大家能和我一样,把自己在学习中的问题写成博客放在
2020-07-23 22:56:54
5282

原创 经典生产者-消费者问题解析
摘要:生产者和消费者问题在现实系统中是很普遍的。例如在一个多媒体系统中,生产者编码视频帧,而消费者消费(解码)视频帧,缓冲区的目的就是减少视频流的抖动。又如在图形用户接口设计中,生产者检测到鼠标和键盘事件,并将其插入到缓冲区中。消费者以某种基于优先级的方式从缓冲区中取出这些事件并显示在屏幕上。生产者和消费者模式共享一个有n个槽位的有限缓冲区。
2020-04-09 14:35:33
15072
2

原创 Linux下的网络编程看这篇就够了
【摘要】本文主要讲述了网络编程的基本概念,包括各种协议、地址、套接字等,重点叙述了套接字的地址结构、操作函数及其编程方法和示例。
2020-03-26 11:28:31
817

原创 Linux中的信号处理机制
信号就是一条消息,通知进程系统中发生了什么事,每种信号都对应着某种系统事件。一般的底层硬件异常是由内核的异常处理程序处理的,它对用户进程来说是透明的。而信号机制,提供了一种方法通知用户进程发生了这些异常。例如,一个进程试图除0,会引发内核向他发送SIGFPE信号;执行非法指令会引发SIGILL信号;非法内存访问引发SIGSEGV;当你从键盘上键入Ctrl + C会引发SIGINT;当某个子进程结...
2020-03-21 23:38:00
798
原创 一文讲清libmodbus在STM32上基于FreeRTOS的移植
libmodbus是一个跨平台的Modbus协议库,支持RTU和TCP模式,适用于多种操作系统。其代码结构分为核心层、硬件底层和应用层三层架构:核心层提供协议处理接口,硬件底层实现串口/网络通信,应用层提供读写寄存器等操作函数。源码主要包含modbus.c/h核心文件、RTU/TCP相关实现文件及私有数据结构定义。该库采用模块化设计,通过抽象硬件接口实现跨平台支持,开发者可通过清晰的API快速构建Modbus主从设备通信功能。
2025-07-02 00:38:49
934
原创 一文详解Modbus协议原理、技术细节及软件辅助调试
Modbus协议是一种工业控制领域广泛应用的通信协议,采用主从架构实现设备间数据交互。文章详细介绍了Modbus的四种通信形式(RTU、ASCII、TCP、Plus),重点阐述了RTU模式的报文结构(从机ID+数据+CRC校验)及其校验机制。同时解析了Modbus的软件数据链路(主机/从机协议栈)和硬件实现(MCU结合串口/以太网电路),并推荐了相关调试工具。作为应用层协议,Modbus通过标准化消息结构实现了不同设备间的互联互通,在工业自动化领域具有重要应用价值。
2025-06-30 21:27:15
1136
原创 STM32 USBX 虚拟串口移植详解
本文基于STM32H563单片机,移植STM32Cube_FW_H5_V1.1.1固件库中的usbx驱动,并实现将单片机上的USB口作为虚拟串口连接到PC的目的。文章参考百问网全场景工业互联设备管理系统解决方案课程
2025-06-30 08:00:00
710
原创 STM32 中USB 包数据缓冲原理(Packet Buffer Memory)
摘要:STM32系列MCU的USB外设包含一个专用数据缓冲区(PMA),用于主机与MCU间的数据通信。PMA最大512字节,包含缓冲描述表和端点缓冲区两部分。缓冲描述表按端点号顺序存放,每个端点占用4个半字。合理配置端点号可以减少描述表占用空间,增加可用缓冲区。数据通信时,USB内核通过16位对齐访问,APB1总线通过32位对齐访问。实例分析表明,端点号连续配置更节省PMA空间。使用时需注意缓冲区分配不能重叠,且接收数据长度不能超过缓冲区限制。
2025-06-29 17:13:47
573
原创 详解C语言输入缓冲机制,分析scanf()和getchar()函数用法
本文主要讲述C语言中scanf()、getchar()等输入读取函数的行为细节,特别是标准I/O的3种缓冲方式对函数行为的影响。最后还分析了scanf()格式化输入函数一些特殊用法。
2025-06-22 22:34:21
805
原创 通用GPIO口模拟I2C协议的原理及代码实现
本文主要讲述了IIC协议的基本原理和硬件实现细节,最后用C语言代码分别模拟了IIC协议各个功能的底层驱动实现。
2025-06-06 17:54:14
984
原创 STM32CubeMX配置使用通用定时器产生PWM
本文详细介绍了STM32定时器的PWM(脉冲宽度调制)功能及其配置方法。首先概述了PWM的基本概念,包括频率、占空比和幅值等关键参数,并分析了通用定时器和高级定时器的结构与差异。通过呼吸灯实例,逐步讲解了使用STM32CubeMX配置PWM输出的步骤,包括时钟源设置、预分频、重装载值、比较值等参数的调整。最后给出了HAL库的代码实现,通过动态修改PWM占空比实现LED亮度渐变效果。文章为STM32开发中的PWM应用提供了实用指南,适合嵌入式开发者参考。
2025-05-26 22:21:15
1673
2
原创 STM32CubeMX配置使用定时器一般方法
本文讲述了使用STM32CubeMX配置和使用定时器实现周期延时的一般方法,区分HAL库和LL库,分别实现了对全局标志的周期性状态反转。
2025-05-26 17:15:34
1611
原创 一文搞懂系列之KEIL工程配置详解
【摘要】工欲善其事必先利其器,本文详细讲述了KEIL5软件中魔术棒下各个选项的具体含义,帮助大家更好了解手中软件的使用方法,避免编译中奇奇怪怪的问题。【参考】官方手册http://www.keil.com/support/man/docs/uv4/uv4_ut_keysequence.html通过图中1位置的"search"框可以输入芯片名称,快速找到对应的芯片。在图中2的位置芯片结构图里也可以选择芯片,这里芯片是按厂家区分的。
2025-05-26 00:06:49
1157
转载 RT-Thread 系统下,实现对板载外部Flash W25Q64的读写
STEP 1:打开RT-Thread Setting SPI SFUD 中已经操作实现。STEP 2:定义与spi总线相关的宏,例如#define BSP_USING_SPI1STEP 3:修改stm32xxxx_hal_config.h文件以支持spi外围设备。定义与外围设备相关的宏,例如#define HAL_SPI_MODULE_ENABLED。
2025-05-24 00:32:55
121
1
原创 GPIO引脚的上拉下拉以及转换速度到底怎么选
本文讲述在进行单片机开发当中,新手小白常常为GPIO端口的种种设置感到迷惑,例如到底设置什么模式?它们之间的区别是什么?到底是设置上拉还是下拉电阻,有什么讲究?端口的输出速度又该如何设置?如果你有以上疑惑,本文通过电路底层原理统统告诉你问题答案。
2025-05-05 16:15:30
1392
原创 KEIL5环境下利用HAL库开发STM32项目_工程搭建方法
本文主要讲述在KEIL5环境下,如何搭建基于HAL库的STM32项目模板工程,全篇以STM32F103ZE芯片为例进行讲解,并对工程中主要的几个关键文件作用进行了阐述,适合入门级别同学参考借鉴。
2025-05-04 12:17:14
1292
转载 图文并茂、一条龙 讲述利用Keil5 开发STM32项目全过程
本文是作者偶然间在CSDN上看到的一篇,主要讲解了以下内容:1.Keil5 MDK下载、安装、注册;2.芯片支持包和标准库下载;3.STLINK、CH340(USB转串口芯片)驱动安装;4.Keil MDK工程创建(寄存版和标准库版);5.通过STLINK、串口下载程序。
2025-04-16 18:24:33
347
原创 一文了解FreeRTOS的中断设置
本文参考韦东山课程视频,以STM32F103芯片为例,讲述了FreeRTOS的中断体系结构,及配置系统的中断的相关函数和宏函数,对掌握RTOS 中断具有较好的参考借鉴意义。
2025-03-02 17:17:09
1140
原创 一文了解CortexM3_M4中断体系
文章讲述了ARM Cortex M3和M4体系架构下的中断体系架构,分析了各个相关寄存器的作用和使用方法。
2025-03-02 11:50:22
814
原创 使用HAL库对USART的初始化流程
【摘要】本文讲述了USART串口通信的基本概念,并以STM32F103为例,讲述了如何使用HAL库编写稳定的、以中断方式进行收发的串口使用方法。
2025-02-16 22:31:14
935
原创 一文详解TCP网络拥塞控制方法
TCP 拥塞控制是 TCP 协议的核心,如果不了解 TCP 拥塞控制就相当于不理解 TCP 协议。本文将通过一些案例,介绍在 TCP 拥塞控制中我们要避免踩的一些坑,以及在 TCP 性能调优时需要注意的事项。因为在 TCP 传输过程中引起问题的案例有很多,我会把把这些案例和具体的知识点结合起来,这样在你明白了这些知识点后,案例的分析过程就相对简单了。在这些问题中,TCP 的拥塞控制就在发挥着作用。
2025-02-06 13:02:38
1250
原创 Linux内核中有哪些配置项可以控制TCP收发包过程
TCP 收发包过程是最容易引起问题的地方之一,本文就来讲述TCP 数据在传输过程中会受到哪些配置项因素的干扰。是指数据到达网卡再到被应用程序开始处理的过程;则是应用程序调用发包函数到数据包从网卡发出的过程。TCP 收发包过程中容易发生的问题常有”网卡中断太多,占用太多 CPU,导致业务频繁被打断;应用程序调用 write() 或者 send() 发包,怎么会发不出去呢;数据包明明已经被网卡收到了,可是应用程序为什么没收到呢;
2025-01-29 14:48:22
1433
原创 TCP连接的建立和断开受哪些系统配置影响
如果你做过 Linux 上面网络相关的开发,或者分析过 Linux 网络相关的问题,那你肯定吐槽过 Linux 系统里面让人眼花缭乱的各种配置项,因为网络这一块涉及到的场景太多了,Linux 内核需要去处理各种各样的网络场景,不同网络场景的处理策略也会有所不同。而 Linux 内核的默认网络配置可能未必会适用我们的场景,这就可能导致我们的业务出现一些莫名其妙的行为。所以,要想让业务行为符合预期,你需要了解 Linux 的相关网络配置,让这些配置更加适 用于你的业务。
2025-01-28 16:03:21
1112
原创 内存泄漏的通用排查方法
本文聊一聊如何系统性地分析查找内存泄漏的具体方法,但不会具体到哪种语言和具体业务代码逻辑中,而是会从 Linux 系统上通用的一些分析方法来入手。这样,不论你使用什么开发语言,不论你在开发什么,它总能给你提供一些帮助。
2025-01-27 13:01:40
2100
原创 内核内存泄漏分析方法
如果你是一名应用开发者,那你对应用程序引起的内存泄漏应该不会陌生。但是,你有没 有想过,内存泄漏也可能是由操作系统(内核)自身的问题引起的呢?这是很多应用开发 者以及运维人员容易忽视的地方,或者是相对陌生的领域。然而陌生的领域不代表不会有问题,如果在陌生的领域发生了问题,而你总是习惯于分析 应用程序自身,那你可能要浪费很多的分析时间,却依然一无所获。所以,对于应用开发者或者运维人员而言,掌握基本的内核内存泄漏分析方法也是必需的,这样在它发生问题 时,你可以有一个初步的判断,而不至于一筹莫展。
2025-01-26 10:16:03
836
原创 Shmem:进程没有消耗内存,内存哪去了
有的内存泄漏会体现在进程内存里面,这种相对好观察些;而有的内存泄漏就很难观察了,因为它们无法通过观察进程消耗的内存来进行判断,从而容易被忽视,比如 Shmem 内存泄漏就属于这种容易被忽视的,本文我们重点来讲讲它。
2025-01-26 10:13:38
916
原创 如何预防内存泄漏导致的系统假死
内存泄漏是件非常容易遇到的事,但如果它不会给应用程序和系统造成危害, 那它就不会构成威胁。当然我不是说这类内存泄漏无需去关心,作为一名合格的程序员,还是需要彻底地解决掉它的。但有一些内存泄漏你却需要格外重视,比如说长期运行的后台进程的内存泄漏,这种泄漏日积月累,会逐渐耗光系统内存,甚至会引起系统假死。
2025-01-25 10:34:41
671
原创 进程的哪些内存类型容易引起内存泄漏
相信你在平时的工作中,应该遇到过下面这些场景: 伴随着服务器中的后台任务持续地运行,系统中可用内存越来越少; 应用程序正在运行时忽然被 OOM kill 掉了; 进程看起来没有消耗多少内存,但是系统内存就是不够用了;类似问题,很可能就是内存泄漏导致的。本文将带你了解进程的哪些内存类型最容易引起内存泄漏!
2025-01-22 22:58:00
803
原创 页缓存不当会产生哪些问题
前面几篇文章,我们讲了 Page Cache 的一些基础知识,以及如何去处理 Page Cache 引发的一些问题。今天我们来讲讲,如何判断问题是不是由 Page Cache 引起的。我们知道,一个问题往往牵扯到操作系统的很多模块,比如说,当系统出现 load 飙高的问题时,可能是 Page Cache 引起的,也可能是锁冲突太厉害,物理资源(CPU、内存、磁 盘 I/O、网络 I/O)有争抢导致的;也可能是内核特性设计缺陷导致的,等等。
2025-01-22 22:50:37
859
原创 Linux中的页缓存机制
Page Cache,又称pcache,中文名称为页高速缓冲存储器,简称页高缓。它是将磁盘上的数据加载到内存中,当系统需要访问这些数据时,可以直接从内存中读取,而不必每次都去读取磁盘。这种方式显著减少了磁盘I/O操作,从而提高了系统性能。Page Cache所占用的内存位于操作系统的内核空间中,通常与其他缓存层级(如CPU缓存、磁盘缓存)分开管理,这样的分层结构有助于提供不同层级的读取性能。
2025-01-22 22:47:23
1431
原创 Linux中的页缓存机制
PageCache,又称pcache,中文名称为页高速缓冲存储器,简称页高缓。它是将磁盘上的数据加载到内存中,当系统需要访问这些数据时,可以直接从内存中读取,而不必每次都去读取磁盘。这种方式显著减少了磁盘I/O操作,从而提高了系统性能。PageCache所占用的内存位于操作系统的内核空间中,通常与其他缓存层级(如CPU缓存、磁盘缓存)分开管理,这样的分层结构有助于提供不同层级的读取性能。
2025-01-18 22:54:22
1144
全场景工业互联设备管理系统解决方案(PC上位机+中控+多传感器)
2025-05-13
基于STM32F103+FreeRTOS搭建智能家居系统(实现微信小程序远程控制)
2025-05-13
手撕Linux0.1.1内核代码
2025-01-14
pandoc-3.1.11.1-windows-x86-64.msi
2025-01-01
RIO包-用于网络编程的健壮读写函数.md
2020-03-26
一文教你如何构建静态链接库.md
2020-03-19
该程序能求解n皇后问题,即在n*n方格棋盘上放置n个皇后,要求每个皇后不同行、不同列、不同左右对角线
2023-02-09
软考学习笔记(重要).docx
2021-03-18
2021年系统架构复习笔记(按章节).docx
2021-03-18
信息系统项目管理师考试论文范文集
2022-03-04
软考高项考前必须要会做的百题精讲
2022-03-04
一百篇架构师论文范例(备考必备,备考必背!).rar
2021-08-02
网络规划设计师历年真题09-19年.zip
2021-08-02
自写嵌入式系统设计师考试笔记.doc
2020-07-28
系统分析师核心考点归纳.pdf
2021-03-18
历年真题12-18.zip
2020-07-28
picgo_typora.zip
2020-03-25
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人