yao00037
码龄10年
求更新 关注
提问 私信
  • 博客:83,966
    社区:1
    问答:5
    83,972
    总访问量
  • 47
    原创
  • 84
    粉丝
  • 46
    关注
IP属地以运营商信息为准,境内显示到省(区、市),境外显示到国家(地区)
IP 属地:陕西省
加入CSDN时间: 2015-07-02

个人简介:7年干到了底层软件工程师

博客简介:

yao00037的博客

查看详细资料
个人成就
  • 获得170次点赞
  • 内容获得12次评论
  • 获得328次收藏
  • 代码片获得1,680次分享
  • 原力等级
    原力等级
    4
    原力分
    569
    本月获得
    3
创作历程
  • 9篇
    2024年
  • 6篇
    2023年
  • 6篇
    2022年
  • 26篇
    2021年
成就勋章
TA的专栏
  • 计算机网络
    12篇
  • PCIe
    4篇
  • UEFI
    2篇
  • 工具使用
    9篇
  • C/C++基础
    4篇
  • 大规模分布式存储系统
    7篇
  • edk2
    1篇
  • 数据结构与算法
    1篇
  • 开源库使用
    1篇
  • 笔试经验积累
  • 找工作呀

TA关注的专栏 2

TA关注的收藏夹 0

TA关注的社区 3

TA参与的活动 0

兴趣领域 设置
  • 编程语言
    c语言
  • 开发工具
    githubgitwindowssvnidevisual studiodockervscodevisual studio code
  • 网络与通信
    udptcpdump网络协议tcp/ip
  • 嵌入式
    stm32
  • 操作系统
    linuxubuntucentos
  • 开源
    github
  • 最近
  • 文章
  • 专栏
  • 代码仓
  • 资源
  • 收藏
  • 关注/订阅/互动
更多
  • 最近

  • 文章

  • 专栏

  • 代码仓

  • 资源

  • 收藏

  • 关注/订阅/互动

  • 社区

  • 帖子

  • 问答

  • 课程

  • 视频

搜索 取消

glibc与msvc CRT

运行库是平台相关的,因为它与操作系统结合得非常紧密。C语言的运行库从某种程度上来讲是C语言的程序和不同操作系统平台之间的抽象层,它将不同操作系统的API抽象成相同的库函数。比如我们可以在不同操作系统平台下使用fread来读取文件,而事实上fread在不同操作系统平台下的实现是不同的,但是作为运行库使用者我们不需要关心这一点。
原创
发布博客 2024.08.19 ·
508 阅读 ·
5 点赞 ·
0 评论 ·
8 收藏

PCIe——学习计划

学习计划第1周:基础知识和总览目标:了解计算机架构基础,总线系统概述以及 PCIe 的基础知识。内容:计算机体系结构基础总线系统概述PCIe 的发展历史和基本概念第2-3周:PCIe 体系结构目标:理解 PCIe 的分层模型及其拓扑结构。内容:PCIe 分层模型(物理层、数据链路层、事务层)PCIe 链路和拓扑结构第4-5周:物理层目标:掌握 PCIe 物理层的信号传输、电气特性和速率。内容:信号传输与编码电气特性Lane 和带宽PCIe 各版本速
原创
发布博客 2024.06.11 ·
391 阅读 ·
2 点赞 ·
2 评论 ·
0 收藏

PCIe学习——重点提纲

PCIe学习-重点提纲基础知识计算机架构基础总线系统概述PCI vs PCI-X vs PCIePCIe 概述PCIe 的发展历史PCIe 与其他总线的对比PCIe 的优势和应用场景PCIe 体系结构PCIe 分层模型物理层(Physical Layer)数据链路层(Data Link Layer)事务层(Transaction Layer)PCIe 链路(Lane)PCIe 拓扑结构(Point-to-Point, Switch, Root Compl
原创
发布博客 2024.06.11 ·
613 阅读 ·
9 点赞 ·
0 评论 ·
7 收藏

DMA是什么,在PCIe中DMA如何理解

广义的DMA和PCIe中的DMA在基本原理上是一致的,都是为了实现设备与内存之间的直接数据传输,减轻CPU的负担。然而,PCIe中的DMA更加专注于高性能应用,结合了PCIe总线的高带宽特性和IOMMU的地址映射功能,为现代高性能计算设备提供了高效的数据传输机制。
原创
发布博客 2024.06.04 ·
3625 阅读 ·
9 点赞 ·
0 评论 ·
26 收藏

主机CPU访问PCIe设备内存空间和PCIe设备访问主机内存空间

虚拟地址(VA) -> 物理地址(PA):通过MMU和页表转换。物理地址(PA) -> PCIe地址:通过PCIe BARs映射。通过PCIe总线传输到设备。
原创
发布博客 2024.06.04 ·
1775 阅读 ·
9 点赞 ·
1 评论 ·
14 收藏

字符集与字符编码

字符集:定义了可以使用的字符以及每个字符的唯一编号。字符编码:定义了如何将字符集中的字符转换为字节序列以便存储和传输。理解字符集和字符编码的区别和联系,对于正确处理文本数据、避免乱码和确保跨平台兼容性是至关重要的。
原创
发布博客 2024.06.03 ·
775 阅读 ·
22 点赞 ·
1 评论 ·
16 收藏

ABI是什么,由谁提供,写在什么规范里

这些规范确保了不同组件之间的二进制接口的一致性,使得在不同的编译器和操作系统上生成的二进制代码能够正确地交互和执行。促进不同编译器、操作系统和硬件平台之间的二进制兼容性。通过遵循统一的ABI规范,不同的软件模块(如库、驱动程序和应用程序)可以在相同的操作系统和硬件平台上无缝地协同工作,即使它们是由不同的开发者、使用不同编程语言或编译器生成的。开发者在编写、编译和链接应用程序时,需要遵循相应的ABI规范,以确保生成的二进制代码能够与目标平台的ABI兼容,从而实现正确的函数调用、内存访问和数据传递。
原创
发布博客 2024.02.08 ·
1274 阅读 ·
7 点赞 ·
0 评论 ·
9 收藏

Cpu指令集

ARM架构是一种低功耗、高性能的指令集架构,主要应用于移动设备和嵌入式系统。Power架构是由IBM开发的一种指令集架构,主要应用于大型服务器和超级计算机。x86架构的代表性处理器包括英特尔的Core系列和AMD的Ryzen系列。它定义了CPU能够理解和执行的指令集合,包括指令的格式、操作码(Opcode)、寻址模式和操作数等。除了上述常见的指令集架构,还有一些其他的指令集架构,如SPARC架构(Oracle的处理器架构)、Itanium架构(Intel和HP合作开发的处理器架构)等。
原创
发布博客 2024.02.08 ·
927 阅读 ·
7 点赞 ·
0 评论 ·
5 收藏

MinGW/MSYS/GCC/GNU/MSVC/Clang/LLVM都是什么

其中,LLVM编译器(clang)是LLVM项目的一个重要组成部分,它作为一个高质量、高性能的C、C++和Objective-C编译器前端,被广泛应用于各种开发工具和项目中。它支持多种C++标准,包括C++98、C++03、C++11、C++14、C++17和C++20,并提供了一系列的编译选项和优化选项,以满足开发者的需求。,其中包括一系列基本的系统工具和实用程序,如文本编辑器(Emacs)、编译器套件(GCC)、调试器(GDB)、构建工具(Make)、shell(Bash)等。
原创
发布博客 2024.02.08 ·
3101 阅读 ·
30 点赞 ·
0 评论 ·
27 收藏

UEFI HII驱动开发——HII资源绑定的方法

方法一 调用EFI_HII_DATABASE_PROTOCOL提供的NewPackageList()进行绑定在模块的inf文件中需要定义UEFI_HII_RESOURCE_SECTION = TRUE该方法不能满足模块中提供多个form的功能方法二 调用HiiLib中的HiiAddPackages接口进行绑定inf文件中不需要定义UEFI_HII_RESOURCE_SECTION = TRUE在源文件中需要声明extern UINT8 ModuleStrings[] 和 extern UIN
原创
发布博客 2023.06.19 ·
1030 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏

搭建linux环境uefi单元测试时遇到的问题

【代码】搭建linux环境uefi单元测试时遇到的问题。
原创
发布博客 2023.05.22 ·
255 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏

Option ROM的日志打印到哪里呢

发布问题 2023.04.25 ·
1 回答

声明、定义和extern

我们知道在预编译的时候会展开它所包含的头文件的内容。所以当多个文件都#include了这个.h文件,会导致.h中定义的全局变量多次定义(重复定义)编译器可能会报错。编译器会给该变量分配内存,并且还可以将内容初始化为某个值。
原创
发布博客 2023.02.07 ·
391 阅读 ·
0 点赞 ·
0 评论 ·
2 收藏

gcc编译/链接动态/静态库

I /home/hello/include表示将/home/hello/include目录作为第一个寻找头文件的目录,寻找的顺序是:/home/hello/include–>/usr/include–>/usr/local/include。-L /home/hello/lib表示将/home/hello/lib目录作为第一个寻找库文件的目录,寻找的顺序是:/home/hello/lib–>/lib–>/usr/lib–>/usr/local/lib。问题2:如果同时有动态库和静态库如何链接静态库?
原创
发布博客 2023.02.07 ·
911 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏

cmake和make

对于一个大工程编写makefile就很复杂,cmake工具是一个可以读入所有源文件自动生成makefile文件的工具,它可以输出各种各样的makefile或者project文件。同样cmake工具也需要有一个规则文件cmakelist文件,这个没有捷径可走需要脚踏实地的编写。源文件太多一个一个的编译特别麻烦。make工具就是一个批处理工具,是一个自动化编译工具,可以使用一条指令完成编译,但是需要写一个规则文件,make依据规则来进行批处理,这个文件就是makefile。
原创
发布博客 2023.02.07 ·
125 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏

什么是Socket

套接字”。是计算机之间进行通信的一种约定或方式。可以理解为socket也是一种特殊的文件,一些socket函数是对其进行操作(读写、打开、关闭)Socket()函数返回的是一个整型的Socket描述符,随后的建立、数据传输等操作都是通过Socket实现的。
原创
发布博客 2023.02.07 ·
1577 阅读 ·
0 点赞 ·
0 评论 ·
3 收藏

UEFI调试环境搭建

步骤1中添加的内容会被打印出来,同时去debug.log中查看HelloWorld.efi加载的位置,后面会用到。以上是一个UEFI application的调试例子,驱动和应用的调试一样,都可以用上述的方法进行调试。首先将HelloWorl添加到OvmfPkg中,方便一起编译。主要是为了辅助调试,比如确定符号是否正确加载、程序是否正确执行等。接下来可以加载符号,设定断点,并将GDB挂载到QEMU上准备调试。在主程序UefiMain中添加获取程序入口地址的日志。计算完成后可以卸载GDB加载的efi文件。
原创
发布博客 2022.12.19 ·
1397 阅读 ·
0 点赞 ·
0 评论 ·
3 收藏

linux 更改/home 挂载点

我的home目录默认挂载到了根目录/下,这就很难受。想要将/home单独挂载一块盘。上面设置完成后重启系统,/home挂载到了/dev/sdb1。将挂载在/分区下的/home 迁移到新盘中。
原创
发布博客 2022.09.11 ·
4842 阅读 ·
4 点赞 ·
0 评论 ·
13 收藏

Doxygen生成API接口说明文档配置

Doxygen是API文档生成工具,可以根据代码注释生成文档的工具。支持HTML、CHM、PDF等格式。主要支持C语言、Python语言,其它C语系语言也支持(如C++、Java、C#等)。本文档描述的内容包括:Doxygen工具下载安装、基本使用和配置、哪些注释支持Doxygen识别转换、Doxygen工具生成的LaTex文件转PDF的方法、Doxygen工具生成chm的方法等。1 下载安装软件Doxygen支持LINUX、Windows、Mac OSDoxygen下载路径:https://w.
原创
发布博客 2022.04.15 ·
994 阅读 ·
3 点赞 ·
1 评论 ·
8 收藏

vscode常用插件-c/c++开发

原创
发布博客 2022.03.20 ·
1527 阅读 ·
0 点赞 ·
0 评论 ·
3 收藏
加载更多