自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

不能让自己太安逸,努力奋斗才是真

只有苦练七十二变,方能笑对八十一难

  • 博客(52)
  • 收藏
  • 关注

原创 Ubuntu 安装 Visual Studio Code

ubuntu 安装 VScode

2023-05-26 17:47:49 1912

原创 tar: invalid tar header checksum

linux tar 命令使用

2023-03-21 15:30:51 971

原创 You seem to have the current working directory in your LD_LIBRARY_PATH environment variable.

rv1109编译buildroot不过的问题解决办法

2023-03-09 15:21:55 641

原创 Telnet 首次登录Linux(密码正确登录不上)报错 Login incorrect

Telnet 首次连接不成功

2023-01-31 15:31:00 2012

转载 mips平台报错:报错信息:CPU 0 Unable to handle kernel paging request at virtual address 00000000, epc == 802bc

如何排查mips内核panic错误

2022-10-09 10:28:38 974

转载 Linux IIC 驱动分析(1) — 框架分析

介绍IIC驱动架构

2022-09-23 16:57:57 838

转载 Linux SPI 驱动分析(2)— 框架层源码分析

介绍spi驱动架构

2022-09-23 16:34:50 1099

转载 Linux SPI 驱动分析(1)— 结构框架

介绍SPI设备驱动框架

2022-09-23 16:05:27 1709

转载 Linux UART 驱动 Part-2 (tty 层流程)

介绍内核uart驱动架构

2022-09-23 15:02:26 865

转载 Linux UART 驱动 Part-1 (底层对接)

介绍底层UART驱动

2022-09-23 13:57:00 527

原创 君正 Halley6 开发板调试SPI LCD

介绍如何在君正平台移植一款LCD

2022-09-14 09:07:47 1120

转载 LCD 液晶屏驱动详解

最基础的讲解LCD驱动的开发流程

2022-08-25 10:44:16 8737

转载 关于技术能力的思考和总结

技术人成长的悖论在程序员界有一个悖论持续在困惑着很多技术人:在写代码的人的困惑是一直写代码是不是会丧失竞争力,会不会被后面年轻的更能加班写代码的人汰换。典型代表就是工作5年左右的核心技术骨干,此时正处于编码正嗨但也开始着手规划下一个职业发展阶段的时候;没在写代码的人困惑是我长时间不写代码(或者代码量较少)我的技术功底是不是在退化,我在市场上还会有竞争力吗,我的发展空间是不是被限制住了。典型代表就是带业务项目的架构师或者团队Team Leader,他们更多的精力是在业务需求理解和拆分,团队事务的管理上。这

2022-05-20 11:48:54 156

转载 C 程序内存布局

C 程序内存布局作为计算机专业的来说,程序入门基本都是从C语言开始的,了解C程序中的内存布局,对我们了解整个程序运行,分析程序出错原因,会起到事半功倍的作用 。C程序的内存布局包含五个段,分别是STACK(栈段),HEAP(堆段),BSS(以符号开头的块),DS(数据段)和TEXT(文本段)。每个段都有自己的读取,写入和可执行权限。如果程序尝试以不允许的方式访问内存,则会发生段错误,也就是我们常说的coredump。段错误是导致程序崩溃的常见问题。核心文件(核心转储文件)也与段错误相关联,开发人员使

2022-04-19 19:03:10 263

原创 Wireshark 如何抓带Vlan ID的报文

Wireshark如何抓带Vlan ID的报文 设置好后抓包标签带有Vlan ID 一、先设置Wireshark 1、打开Wireshark,点击 编辑–>首选项 2、选择 外观 --> 列(中文版),对应appearance–>columns,并点击下方 ...

2022-04-13 11:03:18 15143 5

转载 深入浅出计算机组成原理

深入浅出计算机组成原理基础篇计算机的基本硬件组成第一,广。组成原理中的概念非常多,每个概念的信息量也非常大。比如想要理解 CPU 中的算术逻辑单元(也就是 ALU)是怎么实现加法的,需要牵涉到如何把整数表示成二进制,还需要了解这些表示背后的电路、逻辑门、CPU 时钟、触发器等知识。第二,深。组成原理中的很多概念,阐述开来就是计算机学科的另外一门核心课程。比如,计算机的指令是怎么从你写的 C、Java 这样的高级语言,变成计算机可以执行的机器码的?如果我们展开并深入讲解这个问题,就会变成《编译原理》

2022-03-24 15:41:44 1488 1

转载 cpu的基本结构及其工作原理

cpu的基本结构及其工作原理中央处理器(CPU,Central Processing Unit)是一块超大规模的集成电路,是一台计算机的运算核心(Core)和控制核心( Control Unit)。它的功能主要是解释计算机指令以及处理计算机软件中的数据。中央处理器主要包括运算器(算术逻辑运算单元,ALU,ArithmeTIc Logic Unit)和高速缓冲存储器(Cache)及实现它们之间联系的数据(Data)、控制及状态的总线(Bus)。它与内部存储器(Memory)和输入/输出(I/O)设备合称为电

2022-03-24 14:32:22 7459

转载 计算机组成原理

计算机组成原理知识地图#冯诺依曼体系结构#提高 CPU 性能的方式增加 CPU 核心的数量,通过并行计算来提升性能使用更先进的 CPU 制造工艺加速大概率事件(比如机器学习中,99% 都是向量和矩阵计算)通过流水线提高性能,拆分 CPU 指令执行的过程,细化运行通过预测提高性能#MIPS 指令MIPS 指令是一个 32 位的整数,高 6 位叫操作码,代表这条指令具体是一条什么样的指令。R 指令一般用来做算数和逻辑操作,里面有读取和写入数据的寄存器的地址。如果是逻辑位移操作,后

2022-03-24 14:24:29 1419

转载 Linux 网络子系统中DMA机制的实现

LINUX网络子系统中DMA机制的实现本文由西邮陈莉君教授研一学生进行解析,由白嘉庆整理,薛晓雯编辑,崔鹏程校对.我们先从计算机组成原理的层面介绍DMA,再简单介绍Linux网络子系统的DMA机制是如何的实现的。一、计算机组成原理中的DMA以往的I/O设备和主存交换信息都要经过CPU的操作。不论是最早的轮询方式,还是我们学过的中断方式。虽然中断方式相比轮询方式已经节省了大量的CPU资源。但是在处理大量的数据时,DMA相比中断方式进一步解放了CPU。DMA就是Direct Memory Ac

2022-03-23 14:16:51 470

转载 一文搞懂 | Linux 驱动的来龙去脉

驱动相关的学习资料网上很多,但大部分都是碎片化的记录,很少有系统化的总结整理。本文旨在系统化的讲清楚 Linux 驱动的来龙去脉。先从总线,设备,驱动介绍内核对于驱动的模型设计;然后引入设备树的概念,打通设备和驱动的关系;最后手把手和你一起定制自己的开发板。这也是拿到芯片后,如何 bringup 板子的入门工作。详细交流可以加我微信 rrjike,一起学习进步! Linux 总线、设备、驱动模型的探究 设...

2022-03-23 11:00:29 474 1

转载 Linux 内核网络栈分析: 接收数据

本作品采用知识共享署名-非商业性使用-相同方式共享 4.0 国际许可协议进行许可。 本作品 (李兆龙 博文, 由 李兆龙 创作),由 李兆龙 确认,转载请注明版权。 文章目录 引言过程概述网卡启动硬中断软中断NAPI关闭条件igb_polligb_clean_rx_irq...

2022-03-21 16:14:10 305

转载 STP/RSTP/MSTP的概念及特点

一、STP 1 基本概念 STP(Spanning Tree Protocol)即IEEE 802.1D,其作用主要有三个,第一是eliminate logical loops消除逻辑环,第二自动选取最有效的网络路径,第三是当某条链路失效时,自动切换到备份链路,实现所谓的fail...

2022-03-11 17:08:34 7976

转载 生成树原来这么简单

文章目录 前言摘要什么是生成树?生成树的作用? 一、STP1.1 背景1.2 STP增强特性1.2.1 portfast 端口加速1.2.2 backbonefast 骨干加速1.2.3 uplinkfast 上行链路加速1.2.4 BPDU guard BPDU 防护1...

2022-03-11 14:22:52 847

转载 RSTP中端口角色选举进阶版

文章目录 参考阅读RSTP的端口角色先说结论案例演示例1: 简单入门例2: 逐步上道例3:进阶深入 总结 参考阅读 基础版请戳这里👇 生成树原来这么简单 RSTP的端口角色 RP:Root Port 根端口 DP:Design Port 指定端口...

2022-03-11 11:44:58 4931

转载 代码格式化工具 Clang-format

介绍 平时团队进行合作的时候需要注意代码的格式,虽然很难统一每个人的编码风格,但是通过工具能够很好的管理代码格式。这里介绍下clang-format,它是基于clang的一个命令行工具,能够自动化格式C/C++/Obj-C代码,支持多种代码风格:Google, Chromium, LLVM, Mozilla, WebKit,也支持自定义风格(通过编写.clang-format文件)很方便的同意代码格式。 使用方法 Linux下下安装Clang-format : sudo apt-get install

2021-09-24 17:17:44 1743

原创 C/C++ 宏定义中#、##、#@的含义

#:表示将对应变量字符串化##:表示把宏参数名与宏定义代码序列中的标识符连接在一起,形成一个新的标识符#@:表示将单字符标记符变换为单字符,即加单引号。例如:#define A(x) #@x则A(a)即’a’,A(1)即’1’,但A(abc)却不甚有效。#include <stdio.h> #define trace(x, format) printf(#x " = %" #format "\n", x) #define trace2(i) trace(x##i,

2021-09-10 15:35:40 7027

转载 23 张图详解路由协议:计算机网络的核心技术

开门见山,先来一张全景图。 路由的概念 在 TCP/IP 通信中,网络层的作用是实现终端的点对点通信。IP 协议通过 IP 地址将数据包发送给目的主机,能够让互联网上任何两台主机进行通信。IP 地址可以识别主机和路由器,路由器可以把全世界的网络连接起来。 什么是路由器 路由器可以连接多个网络。它有多个端口,分别连接不同的网络区域。**通过识别目的 IP 地址的网络号,再根据路由表进行数据转发。路由器会维护一张路由表,通过路由表的信息,路由器才能正确的转发 IP 报文。 什么是路由 路由

2021-08-23 14:53:11 229

翻译 Illustrated Guide to Monitoring and Tuning the Linux Networking Stack: Receiving Data

Illustrated Guide to Monitoring and Tuning the Linux Networking Stack: Receiving Data太长不读(TL; DR)这篇文章用一系列图表扩展了以前的博客文章Monitoring and Tuning the Linux Networking Stack: Receiving Data,旨在帮助读者形成一个更清晰的视野来了解Linux网络协议栈是如何工作的在监控或调优 Linux 网络协议栈试没有捷径可走。如果你希望调整或优化

2021-08-20 15:57:00 299

原创 交换机的二三层接口、PVID及VLANIF介绍

二层接口,可以简单理解为只具备二层交换能力的接口,例如二层交换机上的物理接口,或者三层交换机的物理接口,一般情况下,这些接口缺省时都可认为是二层模式。**二层接口不能直接配置IP地址,并且不能直接终结广播帧。二层接口收到广播帧后,会将其从同属一个广播域(VLAN)的所有其他接口泛洪出去。二层接口有几种类型:access、trunk、hybrid。三层接口维护IP地址与MAC地址。三层接口可以终结广播帧,三层接口在收到广播帧后,不会进行泛洪处理。三层接口有物理形态的,也有逻辑形态的,典型的物理

2021-08-19 15:30:11 7161 1

转载 三层接口和二层接口 - Vlan之间通信 三层交换机原理介绍

Vlanif逻辑接口来实现 在三层交换机上配置VLANIF接口来实现VLAN间路由 什么是三层交换机 二层交换机和路由器在功能上的集成构成了三层交换机,三层交换机在功能上实现了VLAN的划分、VLAN内部的二层交换和VLAN间路由的功能 三层交换机的原理 就是二层交换机和路由器的结合体,但是会比这种方式更加高效 三层交换机里面有路由引擎和交换引擎当三层交换机识别到主机发送...

2021-08-19 14:52:03 4127

转载 路由表和三层转发(ping过程)详解

1、路由表概述        路由表的表项根据设备不同,可能是不同的。但是目的IP地址、网络掩码、网关、接口、标志这几项是必须存在的。例如跃点数metric,引用次数ref等在不同设备上可能不同。 1.1、表项理解的问题 诸如IP地址、网络掩码等很好理解,那么网关和接口表项使用来做什么的呢? (1)    &...

2021-08-19 14:27:04 5917

转载 Linux 路由表之route 命令详解

参考资料 Linux 内核的路由表 通过 route 命令查看 Linux 内核的路由表: [root@VM_139_74_centos ~]# routeKernel IP routing tableDestination Gateway Genmask Flags Metric Ref Use Ifacedefault gateway 0.0.0.0 UG 0 0 0

2021-08-17 16:34:29 4635

转载 基于vlan的二层、三层转发原理

开门见山,含有vlan的二层转发原理文字描述和流程图如下: 基于Vlan的二层转发流程主要包括:确定和查找Vlan、查找和学习源MAC、查找目的MAC并转发数据帧。 1) 确定和查找Vlan:交换机端口接收到一个数据帧时,首先通过TPID值判断该帧是否带标签[1]。 若是tagged帧,且Vid≠0,则在端口所属的Vlan表中查找该帧标签中的Vid是否存在,若存在,则进入下一步,否则丢弃该帧(或提交CPU处理...

2021-07-30 16:55:52 5428

转载 ARM结构和MIPS结构的地址空间

无论在哪种体系结构中,地址空间的访问都是CPU运行的基本,CPU的每一条指令的地址,都必须在CPU所能访问的地址空间内,当然这个空间指的是虚拟地址空间。每个CPU所能访问多大的虚拟地址这是和CPU的位数有关的,32位地址总线,最大的虚拟地址就是2的32次方,64位同理。当然在实际的使用中,是不会出现这么大的地址范围的,我们都会根据设备的地址和内存的范围来配置一些窗口来给CPU访问,这就限制了CPU实际所使用的地址空...

2021-07-02 15:00:50 2327

转载 浅谈Buffer I/O 和 Direct I/O

通常来说,文件I/O可以分为两种: Buffer I/ODirect I/O Buffer I/O 缓存 I/O 又被称作标准 I/O,大多数文件系统的默认 I/O 操作都是缓存 I/O。 在 Linux 的缓存 I/O 机制中,这种访问文件的方式是通过两个系统调用实现的:read() 和 write()。调用read()时,如果 操作系统内核地址空间的页缓存( page cache )有数据就读取出该数据并直接返回给应用程序,如果没有就从磁盘读取数据到页缓存。然后再从页缓存拷贝到应用程序的地址空

2021-04-22 10:51:02 492

转载 Page Cache引起的业务问题处理

在工作中,你可能遇见过与 Page Cache 有关的场景,比如: 服务器的 load 飙高;服务器的 I/O 吞吐飙高;业务响应时延出现大的毛刺;业务平均访问时延明显增加。 这些问题,很可能是由于 Page Cache 管理不到位引起的,因为 Page Cache 管理不当除了会增加系统 I/O 吞吐外,还会引起业务性能抖动,我在生产环境上处理过很多这类问题。 什么是 Page Cache? 通过这张图片你可以清楚地看到,红色的地方就是 Page Cache,很明显,Page Cache 是内核

2021-04-22 10:43:12 551

原创 Core文件的生成和GDB调试

Core文件的生成和GDB调试一、什么是core文件?有问题的程序运行后,产生“段错误 (核心已转储)”时生成的具有堆栈信息和调试信息的文件,我们可以理解为是程序在当前工作状态存储生成的第一个文件,许多的程序出错的时候都会产生一个core文件,通过工具分析core文件,我们可以定位到程序异常退出的时候对应的堆栈调用等信息,找出问题所在并进行及时解决。编译程序时需要加 -g 选项使程序生成调试信息: gcc -g core_test.c -o core_test二、怎样配置生成 core 文件1、co

2021-04-14 15:23:15 223

原创 gcc 编译时对’xxxx’未定义的引用问题

gcc编译时对’xxxx’未定义的引用问题gcc编译时对’xxxx’未定义的引用问题原因解决办法gcc 依赖顺序问题在使用gcc编译的时候有时候会碰到这样的问题,编译为.o(obj) 或者动态库.so文件时没有问题,但是编译(链接)为可执行文件的时候会出现找不到’xxx’的定义的情况。例如:sl:02$ gcc -fPIC -shared -I. hard_disk_factory.c seagate_hard_disk.c toshiba_hard_disk.c -o lib

2021-04-14 13:58:37 17010 1

转载 Python中Scapy网络嗅探模块的使用

目录 Scapy scapy的安装和使用  发包 发包和收包  抓包  将抓取到的数据包保存 查看抓取到的数据包  格式化输出 过滤抓包 Scapy scapy是python中一个可用于网络嗅探的非常强大的第三方库,可以用它来做 packet 嗅探和伪造 packet。 scapy已经在内部实现了大量的网络协议。如DNS、ARP、IP、TCP...

2021-04-06 15:55:32 5276

原创 Linux Pipe 管道性能

在交换机项目中有使用命名管道用于线程与主进程间的通信,由于瞬间的数据量特别大(主要是瞬间可能并发学习到大量的mac),现有管道的性能会出现丟事件的问题,因此,查阅了相关资料整理如下可以尝试提高管道的性能。容量限制在 Linux 中管道的能力是有限的,对于一个应用来说,如果管道满了,那么会导致 write() 系统调用被阻塞 (依赖于程序是否设置了 O_NONBLOCK 标志)。不同的系统对应的 Pipe 能力不同,所以应用应该做到尽快读取 Pipe 中的数据,以防止阻塞。最大容量在 man 7 pi

2021-04-06 11:04:25 1610

空空如也

空空如也

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

TA关注的人

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