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

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

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

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

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

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

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

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

原创 Linux中的信号处理机制
信号就是一条消息,通知进程系统中发生了什么事,每种信号都对应着某种系统事件。一般的底层硬件异常是由内核的异常处理程序处理的,它对用户进程来说是透明的。而信号机制,提供了一种方法通知用户进程发生了这些异常。例如,一个进程试图除0,会引发内核向他发送SIGFPE信号;执行非法指令会引发SIGILL信号;非法内存访问引发SIGSEGV;当你从键盘上键入Ctrl + C会引发SIGINT;当某个子进程结...
2020-03-21 23:38:00
787
原创 STM32CubeMX配置使用通用定时器产生PWM
本文详细介绍了STM32定时器的PWM(脉冲宽度调制)功能及其配置方法。首先概述了PWM的基本概念,包括频率、占空比和幅值等关键参数,并分析了通用定时器和高级定时器的结构与差异。通过呼吸灯实例,逐步讲解了使用STM32CubeMX配置PWM输出的步骤,包括时钟源设置、预分频、重装载值、比较值等参数的调整。最后给出了HAL库的代码实现,通过动态修改PWM占空比实现LED亮度渐变效果。文章为STM32开发中的PWM应用提供了实用指南,适合嵌入式开发者参考。
2025-05-26 22:21:15
887
原创 STM32CubeMX配置使用定时器一般方法
本文讲述了使用STM32CubeMX配置和使用定时器实现周期延时的一般方法,区分HAL库和LL库,分别实现了对全局标志的周期性状态反转。
2025-05-26 17:15:34
962
原创 一文搞懂系列之KEIL工程配置详解
【摘要】工欲善其事必先利其器,本文详细讲述了KEIL5软件中魔术棒下各个选项的具体含义,帮助大家更好了解手中软件的使用方法,避免编译中奇奇怪怪的问题。【参考】官方手册http://www.keil.com/support/man/docs/uv4/uv4_ut_keysequence.html通过图中1位置的"search"框可以输入芯片名称,快速找到对应的芯片。在图中2的位置芯片结构图里也可以选择芯片,这里芯片是按厂家区分的。
2025-05-26 00:06:49
842
转载 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
35
原创 GPIO引脚的上拉下拉以及转换速度到底怎么选
本文讲述在进行单片机开发当中,新手小白常常为GPIO端口的种种设置感到迷惑,例如到底设置什么模式?它们之间的区别是什么?到底是设置上拉还是下拉电阻,有什么讲究?端口的输出速度又该如何设置?如果你有以上疑惑,本文通过电路底层原理统统告诉你问题答案。
2025-05-05 16:15:30
1139
原创 KEIL5环境下利用HAL库开发STM32项目_工程搭建方法
本文主要讲述在KEIL5环境下,如何搭建基于HAL库的STM32项目模板工程,全篇以STM32F103ZE芯片为例进行讲解,并对工程中主要的几个关键文件作用进行了阐述,适合入门级别同学参考借鉴。
2025-05-04 12:17:14
1032
转载 图文并茂、一条龙 讲述利用Keil5 开发STM32项目全过程
本文是作者偶然间在优快云上看到的一篇,主要讲解了以下内容:1.Keil5 MDK下载、安装、注册;2.芯片支持包和标准库下载;3.STLINK、CH340(USB转串口芯片)驱动安装;4.Keil MDK工程创建(寄存版和标准库版);5.通过STLINK、串口下载程序。
2025-04-16 18:24:33
299
原创 一文了解FreeRTOS的中断设置
本文参考韦东山课程视频,以STM32F103芯片为例,讲述了FreeRTOS的中断体系结构,及配置系统的中断的相关函数和宏函数,对掌握RTOS 中断具有较好的参考借鉴意义。
2025-03-02 17:17:09
1108
原创 一文了解CortexM3_M4中断体系
文章讲述了ARM Cortex M3和M4体系架构下的中断体系架构,分析了各个相关寄存器的作用和使用方法。
2025-03-02 11:50:22
782
原创 使用HAL库对USART的初始化流程
【摘要】本文讲述了USART串口通信的基本概念,并以STM32F103为例,讲述了如何使用HAL库编写稳定的、以中断方式进行收发的串口使用方法。
2025-02-16 22:31:14
916
原创 一文详解TCP网络拥塞控制方法
TCP 拥塞控制是 TCP 协议的核心,如果不了解 TCP 拥塞控制就相当于不理解 TCP 协议。本文将通过一些案例,介绍在 TCP 拥塞控制中我们要避免踩的一些坑,以及在 TCP 性能调优时需要注意的事项。因为在 TCP 传输过程中引起问题的案例有很多,我会把把这些案例和具体的知识点结合起来,这样在你明白了这些知识点后,案例的分析过程就相对简单了。在这些问题中,TCP 的拥塞控制就在发挥着作用。
2025-02-06 13:02:38
1180
原创 Linux内核中有哪些配置项可以控制TCP收发包过程
TCP 收发包过程是最容易引起问题的地方之一,本文就来讲述TCP 数据在传输过程中会受到哪些配置项因素的干扰。是指数据到达网卡再到被应用程序开始处理的过程;则是应用程序调用发包函数到数据包从网卡发出的过程。TCP 收发包过程中容易发生的问题常有”网卡中断太多,占用太多 CPU,导致业务频繁被打断;应用程序调用 write() 或者 send() 发包,怎么会发不出去呢;数据包明明已经被网卡收到了,可是应用程序为什么没收到呢;
2025-01-29 14:48:22
1421
原创 TCP连接的建立和断开受哪些系统配置影响
如果你做过 Linux 上面网络相关的开发,或者分析过 Linux 网络相关的问题,那你肯定吐槽过 Linux 系统里面让人眼花缭乱的各种配置项,因为网络这一块涉及到的场景太多了,Linux 内核需要去处理各种各样的网络场景,不同网络场景的处理策略也会有所不同。而 Linux 内核的默认网络配置可能未必会适用我们的场景,这就可能导致我们的业务出现一些莫名其妙的行为。所以,要想让业务行为符合预期,你需要了解 Linux 的相关网络配置,让这些配置更加适 用于你的业务。
2025-01-28 16:03:21
1103
原创 内存泄漏的通用排查方法
本文聊一聊如何系统性地分析查找内存泄漏的具体方法,但不会具体到哪种语言和具体业务代码逻辑中,而是会从 Linux 系统上通用的一些分析方法来入手。这样,不论你使用什么开发语言,不论你在开发什么,它总能给你提供一些帮助。
2025-01-27 13:01:40
1937
原创 内核内存泄漏分析方法
如果你是一名应用开发者,那你对应用程序引起的内存泄漏应该不会陌生。但是,你有没 有想过,内存泄漏也可能是由操作系统(内核)自身的问题引起的呢?这是很多应用开发 者以及运维人员容易忽视的地方,或者是相对陌生的领域。然而陌生的领域不代表不会有问题,如果在陌生的领域发生了问题,而你总是习惯于分析 应用程序自身,那你可能要浪费很多的分析时间,却依然一无所获。所以,对于应用开发者或者运维人员而言,掌握基本的内核内存泄漏分析方法也是必需的,这样在它发生问题 时,你可以有一个初步的判断,而不至于一筹莫展。
2025-01-26 10:16:03
808
原创 Shmem:进程没有消耗内存,内存哪去了
有的内存泄漏会体现在进程内存里面,这种相对好观察些;而有的内存泄漏就很难观察了,因为它们无法通过观察进程消耗的内存来进行判断,从而容易被忽视,比如 Shmem 内存泄漏就属于这种容易被忽视的,本文我们重点来讲讲它。
2025-01-26 10:13:38
883
原创 如何预防内存泄漏导致的系统假死
内存泄漏是件非常容易遇到的事,但如果它不会给应用程序和系统造成危害, 那它就不会构成威胁。当然我不是说这类内存泄漏无需去关心,作为一名合格的程序员,还是需要彻底地解决掉它的。但有一些内存泄漏你却需要格外重视,比如说长期运行的后台进程的内存泄漏,这种泄漏日积月累,会逐渐耗光系统内存,甚至会引起系统假死。
2025-01-25 10:34:41
658
原创 进程的哪些内存类型容易引起内存泄漏
相信你在平时的工作中,应该遇到过下面这些场景: 伴随着服务器中的后台任务持续地运行,系统中可用内存越来越少; 应用程序正在运行时忽然被 OOM kill 掉了; 进程看起来没有消耗多少内存,但是系统内存就是不够用了;类似问题,很可能就是内存泄漏导致的。本文将带你了解进程的哪些内存类型最容易引起内存泄漏!
2025-01-22 22:58:00
793
原创 页缓存不当会产生哪些问题
前面几篇文章,我们讲了 Page Cache 的一些基础知识,以及如何去处理 Page Cache 引发的一些问题。今天我们来讲讲,如何判断问题是不是由 Page Cache 引起的。我们知道,一个问题往往牵扯到操作系统的很多模块,比如说,当系统出现 load 飙高的问题时,可能是 Page Cache 引起的,也可能是锁冲突太厉害,物理资源(CPU、内存、磁 盘 I/O、网络 I/O)有争抢导致的;也可能是内核特性设计缺陷导致的,等等。
2025-01-22 22:50:37
843
原创 Linux中的页缓存机制
Page Cache,又称pcache,中文名称为页高速缓冲存储器,简称页高缓。它是将磁盘上的数据加载到内存中,当系统需要访问这些数据时,可以直接从内存中读取,而不必每次都去读取磁盘。这种方式显著减少了磁盘I/O操作,从而提高了系统性能。Page Cache所占用的内存位于操作系统的内核空间中,通常与其他缓存层级(如CPU缓存、磁盘缓存)分开管理,这样的分层结构有助于提供不同层级的读取性能。
2025-01-22 22:47:23
1312
原创 Linux中的页缓存机制
PageCache,又称pcache,中文名称为页高速缓冲存储器,简称页高缓。它是将磁盘上的数据加载到内存中,当系统需要访问这些数据时,可以直接从内存中读取,而不必每次都去读取磁盘。这种方式显著减少了磁盘I/O操作,从而提高了系统性能。PageCache所占用的内存位于操作系统的内核空间中,通常与其他缓存层级(如CPU缓存、磁盘缓存)分开管理,这样的分层结构有助于提供不同层级的读取性能。
2025-01-18 22:54:22
1106
原创 二叉树的介绍
本文讲述了二叉树的类型,及其两种表示方法(链式、数组式)和三种递归式遍历方法(前序、中序、后序);之后,介绍了二叉搜索树的常见操作(查找、插入、删除)及其应用(中序遍历二叉搜索树可以将节点按照升序进行排序,平均时间复杂度为log(n) )。
2024-08-24 23:42:41
1238
1
原创 谈谈hash算法
哈希算法的设计是一个需要考虑许多因素的复杂问题。然而对于某些要求不高的场景,我们也能设计一些简 单的哈希算法。:对输入的每个字符的 ASCII 码进行相加,将得到的总和作为哈希值。:利用了乘法的不相关性,每轮乘以一个常数,将各个字符的 ASCII 码累积到哈希值中。:将输入数据的每个元素通过异或操作累积到一个哈希值中。**旋转哈希 **:将每个字符的 ASCII 码累积到一个哈希值中,每次累积之前都会对哈希值进行旋转操作。
2024-08-24 16:14:34
962
原创 基础C语言知识串串香11☞宏定义与预处理、函数和函数库
源码.c——> (预处理)——>预处理过的.i文件——>(编译)——>汇编文件.S——>(汇编)——>目标文件.o->(链接)——>elf可执行程序预处理用预处理器,编译用编译器,汇编用汇编器,链接用链接器,这几个工具再加上其他一些额外的会用到的可用工具,合起来叫编译工具链(gcc就是一个编译工具链)。-E:只预处理不编译(执行头文件的扩展、宏替换、条件编译筛选、去掉注释等),生成.i文件-S:只编译不汇编(将C/C++语言程序翻译成汇编语言),生成.S文件-c。
2024-06-23 21:03:22
766
原创 20_文件系统的制作 -JFFS2
JFFS2 文件系统是通过工具 mkfs.jffs2 将文件系统目录制成映像文件。制作工具mkfs.jffs2 需要编译 zhb 库和 mtd-utils,下面详细介绍其制作过程
2024-05-18 10:34:31
352
原创 19_文件系统的制作 -YAFFS2
如果开发板只有Nand Flash, 那么选择最合适的文件系统为YAFFS文件系统。例如,mini2440只有 Nand Flash 没有 Nor Flash,因此选择的文件系统为 YAFFS2 文件系统
2024-05-18 10:33:38
314
全场景工业互联设备管理系统解决方案(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
该程序能求解n皇后问题,即在n*n方格棋盘上放置n个皇后,要求每个皇后不同行、不同列、不同左右对角线
2023-02-09
信息系统项目管理师考试论文范文集
2022-03-04
软考高项考前必须要会做的百题精讲
2022-03-04
网络规划设计师历年真题09-19年.zip
2021-08-02
一百篇架构师论文范例(备考必备,备考必背!).rar
2021-08-02
2021年系统架构复习笔记(按章节).docx
2021-03-18
系统分析师核心考点归纳.pdf
2021-03-18
软考学习笔记(重要).docx
2021-03-18
自写嵌入式系统设计师考试笔记.doc
2020-07-28
历年真题12-18.zip
2020-07-28
RIO包-用于网络编程的健壮读写函数.md
2020-03-26
picgo_typora.zip
2020-03-25
一文教你如何构建静态链接库.md
2020-03-19
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人