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

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

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

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

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

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

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

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

原创 Linux中的信号处理机制
信号就是一条消息,通知进程系统中发生了什么事,每种信号都对应着某种系统事件。一般的底层硬件异常是由内核的异常处理程序处理的,它对用户进程来说是透明的。而信号机制,提供了一种方法通知用户进程发生了这些异常。例如,一个进程试图除0,会引发内核向他发送SIGFPE信号;执行非法指令会引发SIGILL信号;非法内存访问引发SIGSEGV;当你从键盘上键入Ctrl + C会引发SIGINT;当某个子进程结...
2020-03-21 23:38:00
752
原创 一文了解FreeRTOS的中断设置
本文参考韦东山课程视频,以STM32F103芯片为例,讲述了FreeRTOS的中断体系结构,及配置系统的中断的相关函数和宏函数,对掌握RTOS 中断具有较好的参考借鉴意义。
2025-03-02 17:17:09
1054
原创 一文了解CortexM3_M4中断体系
文章讲述了ARM Cortex M3和M4体系架构下的中断体系架构,分析了各个相关寄存器的作用和使用方法。
2025-03-02 11:50:22
732
原创 使用HAL库对USART的初始化流程
【摘要】本文讲述了USART串口通信的基本概念,并以STM32F103为例,讲述了如何使用HAL库编写稳定的、以中断方式进行收发的串口使用方法。
2025-02-16 22:31:14
851
原创 一文详解TCP网络拥塞控制方法
TCP 拥塞控制是 TCP 协议的核心,如果不了解 TCP 拥塞控制就相当于不理解 TCP 协议。本文将通过一些案例,介绍在 TCP 拥塞控制中我们要避免踩的一些坑,以及在 TCP 性能调优时需要注意的事项。因为在 TCP 传输过程中引起问题的案例有很多,我会把把这些案例和具体的知识点结合起来,这样在你明白了这些知识点后,案例的分析过程就相对简单了。在这些问题中,TCP 的拥塞控制就在发挥着作用。
2025-02-06 13:02:38
1021
原创 Linux内核中有哪些配置项可以控制TCP收发包过程
TCP 收发包过程是最容易引起问题的地方之一,本文就来讲述TCP 数据在传输过程中会受到哪些配置项因素的干扰。是指数据到达网卡再到被应用程序开始处理的过程;则是应用程序调用发包函数到数据包从网卡发出的过程。TCP 收发包过程中容易发生的问题常有”网卡中断太多,占用太多 CPU,导致业务频繁被打断;应用程序调用 write() 或者 send() 发包,怎么会发不出去呢;数据包明明已经被网卡收到了,可是应用程序为什么没收到呢;
2025-01-29 14:48:22
1402
原创 TCP连接的建立和断开受哪些系统配置影响
如果你做过 Linux 上面网络相关的开发,或者分析过 Linux 网络相关的问题,那你肯定吐槽过 Linux 系统里面让人眼花缭乱的各种配置项,因为网络这一块涉及到的场景太多了,Linux 内核需要去处理各种各样的网络场景,不同网络场景的处理策略也会有所不同。而 Linux 内核的默认网络配置可能未必会适用我们的场景,这就可能导致我们的业务出现一些莫名其妙的行为。所以,要想让业务行为符合预期,你需要了解 Linux 的相关网络配置,让这些配置更加适 用于你的业务。
2025-01-28 16:03:21
1081
原创 内存泄漏的通用排查方法
本文聊一聊如何系统性地分析查找内存泄漏的具体方法,但不会具体到哪种语言和具体业务代码逻辑中,而是会从 Linux 系统上通用的一些分析方法来入手。这样,不论你使用什么开发语言,不论你在开发什么,它总能给你提供一些帮助。
2025-01-27 13:01:40
1393
原创 内核内存泄漏分析方法
如果你是一名应用开发者,那你对应用程序引起的内存泄漏应该不会陌生。但是,你有没 有想过,内存泄漏也可能是由操作系统(内核)自身的问题引起的呢?这是很多应用开发 者以及运维人员容易忽视的地方,或者是相对陌生的领域。然而陌生的领域不代表不会有问题,如果在陌生的领域发生了问题,而你总是习惯于分析 应用程序自身,那你可能要浪费很多的分析时间,却依然一无所获。所以,对于应用开发者或者运维人员而言,掌握基本的内核内存泄漏分析方法也是必需的,这样在它发生问题 时,你可以有一个初步的判断,而不至于一筹莫展。
2025-01-26 10:16:03
767
原创 Shmem:进程没有消耗内存,内存哪去了
有的内存泄漏会体现在进程内存里面,这种相对好观察些;而有的内存泄漏就很难观察了,因为它们无法通过观察进程消耗的内存来进行判断,从而容易被忽视,比如 Shmem 内存泄漏就属于这种容易被忽视的,本文我们重点来讲讲它。
2025-01-26 10:13:38
823
原创 如何预防内存泄漏导致的系统假死
内存泄漏是件非常容易遇到的事,但如果它不会给应用程序和系统造成危害, 那它就不会构成威胁。当然我不是说这类内存泄漏无需去关心,作为一名合格的程序员,还是需要彻底地解决掉它的。但有一些内存泄漏你却需要格外重视,比如说长期运行的后台进程的内存泄漏,这种泄漏日积月累,会逐渐耗光系统内存,甚至会引起系统假死。
2025-01-25 10:34:41
639
原创 进程的哪些内存类型容易引起内存泄漏
相信你在平时的工作中,应该遇到过下面这些场景: 伴随着服务器中的后台任务持续地运行,系统中可用内存越来越少; 应用程序正在运行时忽然被 OOM kill 掉了; 进程看起来没有消耗多少内存,但是系统内存就是不够用了;类似问题,很可能就是内存泄漏导致的。本文将带你了解进程的哪些内存类型最容易引起内存泄漏!
2025-01-22 22:58:00
783
原创 页缓存不当会产生哪些问题
前面几篇文章,我们讲了 Page Cache 的一些基础知识,以及如何去处理 Page Cache 引发的一些问题。今天我们来讲讲,如何判断问题是不是由 Page Cache 引起的。我们知道,一个问题往往牵扯到操作系统的很多模块,比如说,当系统出现 load 飙高的问题时,可能是 Page Cache 引起的,也可能是锁冲突太厉害,物理资源(CPU、内存、磁 盘 I/O、网络 I/O)有争抢导致的;也可能是内核特性设计缺陷导致的,等等。
2025-01-22 22:50:37
826
原创 Linux中的页缓存机制
Page Cache,又称pcache,中文名称为页高速缓冲存储器,简称页高缓。它是将磁盘上的数据加载到内存中,当系统需要访问这些数据时,可以直接从内存中读取,而不必每次都去读取磁盘。这种方式显著减少了磁盘I/O操作,从而提高了系统性能。Page Cache所占用的内存位于操作系统的内核空间中,通常与其他缓存层级(如CPU缓存、磁盘缓存)分开管理,这样的分层结构有助于提供不同层级的读取性能。
2025-01-22 22:47:23
1187
原创 Linux中的页缓存机制
PageCache,又称pcache,中文名称为页高速缓冲存储器,简称页高缓。它是将磁盘上的数据加载到内存中,当系统需要访问这些数据时,可以直接从内存中读取,而不必每次都去读取磁盘。这种方式显著减少了磁盘I/O操作,从而提高了系统性能。PageCache所占用的内存位于操作系统的内核空间中,通常与其他缓存层级(如CPU缓存、磁盘缓存)分开管理,这样的分层结构有助于提供不同层级的读取性能。
2025-01-18 22:54:22
1029
原创 二叉树的介绍
本文讲述了二叉树的类型,及其两种表示方法(链式、数组式)和三种递归式遍历方法(前序、中序、后序);之后,介绍了二叉搜索树的常见操作(查找、插入、删除)及其应用(中序遍历二叉搜索树可以将节点按照升序进行排序,平均时间复杂度为log(n) )。
2024-08-24 23:42:41
1201
1
原创 谈谈hash算法
哈希算法的设计是一个需要考虑许多因素的复杂问题。然而对于某些要求不高的场景,我们也能设计一些简 单的哈希算法。:对输入的每个字符的 ASCII 码进行相加,将得到的总和作为哈希值。:利用了乘法的不相关性,每轮乘以一个常数,将各个字符的 ASCII 码累积到哈希值中。:将输入数据的每个元素通过异或操作累积到一个哈希值中。**旋转哈希 **:将每个字符的 ASCII 码累积到一个哈希值中,每次累积之前都会对哈希值进行旋转操作。
2024-08-24 16:14:34
937
原创 基础C语言知识串串香11☞宏定义与预处理、函数和函数库
源码.c——> (预处理)——>预处理过的.i文件——>(编译)——>汇编文件.S——>(汇编)——>目标文件.o->(链接)——>elf可执行程序预处理用预处理器,编译用编译器,汇编用汇编器,链接用链接器,这几个工具再加上其他一些额外的会用到的可用工具,合起来叫编译工具链(gcc就是一个编译工具链)。-E:只预处理不编译(执行头文件的扩展、宏替换、条件编译筛选、去掉注释等),生成.i文件-S:只编译不汇编(将C/C++语言程序翻译成汇编语言),生成.S文件-c。
2024-06-23 21:03:22
737
原创 20_文件系统的制作 -JFFS2
JFFS2 文件系统是通过工具 mkfs.jffs2 将文件系统目录制成映像文件。制作工具mkfs.jffs2 需要编译 zhb 库和 mtd-utils,下面详细介绍其制作过程
2024-05-18 10:34:31
335
原创 19_文件系统的制作 -YAFFS2
如果开发板只有Nand Flash, 那么选择最合适的文件系统为YAFFS文件系统。例如,mini2440只有 Nand Flash 没有 Nor Flash,因此选择的文件系统为 YAFFS2 文件系统
2024-05-18 10:33:38
297
原创 18_文件系统的制作-Ramdisk
本文介绍如何制作文件系统。另外, 由于Busybox 集合了很多工具,编译起来也非常方便。在讲解制作文件系统的时候,也会介绍 busybox 的编译和安装过程;介绍制作文件系统时,会详细介绍 Ramdisk 、 YAFFS2、JFFS2 及其它文件系统的制作。
2024-05-12 16:18:16
127
原创 17_基于Flash和RAM的的文件系统选择
本文主要讲述在嵌入式系统中,常见的基于flash和内存(RAM)的文件系统类型,具体选择要结合实际需求灵活选配。
2024-05-12 16:16:57
298
原创 16_嵌入式文件系统选择
在进行嵌入式系统开发过程中,文件系统的选择和制作与硬件条件息息相关。根据硬件(Flash 或 RAM)的特性来指定相应的文件系统,能够充分利用硬件资源及提高系统效率。因为目前大部分的嵌入式文件系统都是建立在 Flash 之上,下面介绍 Flash 硬件方案比较与 Flash 的特点。
2024-04-02 10:48:17
686
原创 15_Linux内核升级
如果这一步省略,会在移植到开发板后 Bootloader 引导时出现机器 ID 错误的现象。出错的 ID 号将以十六进制给出, 将其转化为十进制, 替换 mach-types文件中的对应项。这里移植后报的错误是 0xFB,即对应十进制 251。查看对 System Type(系统类型) 的修改情况以确认进行正确的配置。将所有文件复制到工作目录下,然后解压内核文件和编译器文件。实际上就是完成对内核的配置。编译内核生成映像文件。
2024-04-02 10:47:21
537
原创 13_Linux内核配置选项
内核配置通常是对内核支持的各个功能进行取舍配置,将配置的方案保存到 configure文件中。在编译内核的时候,就会根据此配置对内核进行取舍编译。
2024-03-26 13:12:01
1648
原创 12_Linux内核结构
Linux 内核主要的 5 个部分:**进程调度、内存管理、虚拟文件系统、网络接口、进程通信**。在系统移植的时候,它们是内核的基本元素,这 5 个部分之间的关系
2024-03-17 16:20:27
980
原创 11_BootLoader分析
【摘要】本文详细介绍了基于嵌入式系统中的 OS 启动加载程序 ―― ==BootLoader 的概念、软件设计的主要任务以及结构框架==等内容。 在拿到空PCB板之后,硬件工程师首先会测试各主要**线路是否通连**(各焊点是否有空焊、断接或短路的情况),然后逐个模块焊接上去。之后需要验证系统上电之后,CPU与各组件的**供电电压是否正常**,供给CPU的震荡电路能否能够**正常起振**,外部存储器能否**正常读写**。
2024-03-17 16:19:29
1157
手撕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关注的人