- 博客(55)
- 资源 (6)
- 收藏
- 关注
原创 【PCI】PCIe Bridge标准配置空间(十一)
本文参考PCIe协议 5.0:https://download.csdn.net/download/zz2633105/89204842。
2024-04-22 14:13:05 563
原创 【PCI】PCIe EP标准配置空间(十)
本文参考PCIe协议 5.0:https://download.csdn.net/download/zz2633105/89204842。
2024-04-22 14:00:58 753
原创 【PCI】PCIe配置空间访问(九)
本文参考PCIe协议 5.0:https://download.csdn.net/download/zz2633105/89204842。
2024-04-22 09:45:12 526
原创 SRNIC、选择性重传、伸缩性、连接扩展性、RoCEv2优化(六)
RDMA 被期望具有高度的可扩展性:在不可避免存在丢包的大规模数据中心网络中表现良好(高网络可伸缩性),并支持每个服务器的大量高性能连接(高连接可伸缩性)。商用 RoCEv2 网卡(rnic)由于依赖于无损的、有限规模的网络结构,缺乏可伸缩性,并且只支持少量的性能连接。最近的研究IRN通过放宽无丢包网络的要求来提高网络的可扩展性,但连接的可扩展性问题仍未得到解决。本文描述旨在提高网络可伸缩性及连接可扩展性。
2024-04-09 20:31:35 813
转载 Memory Region & Memory Window (五)
Type 1Type 2AType 2B关联关系PDQPPD + QPR_Key的key域段归属驱动+硬件用户用户绑定方式Bind MW 绑定后之前的R_Key自动失效Post Send Bind MW WR 绑定前需要先使之前的R_Key无效化Post Send Bind MW WR 绑定前需要先使之前的R_Key无效化是否支持零长度是否否是否支持Invalidate否是是关联的QP是否可以被销毁否是。
2023-10-11 17:28:01 476 6
原创 RDMA Shared Receive Queue(四)
参考知乎文章《RDMA之Shared Receive Queue》:https://zhuanlan.zhihu.com/p/279904125。
2023-09-27 14:26:33 406
原创 RDMA操作类型(三)
接收端在接收到对端Send过来的数据后,会从RQ中获取一个可用的RWQE,将接收数据存放到RWQE所描述的内存区域中,这个RWQE是由上层app用户下发的,也就是说,数据存放区域是由接收端上次app用户指定的。RDMA write操作是单边操作,数据传输过程中,不需要对端CPU参与,相比于send双边操作,单边操作能极大降低对端CPU在数据传输中的负载,将对端CPU从数据传输中解放出来干其他事,这也是IB协议的初衷。注意,read操作的数据源地址在对端内存上,目的地址为本端内存,这与write操作相反。
2023-09-27 14:08:29 416
原创 RDMA服务类型(二)
参考IB协议版本V1.4:https://download.csdn.net/download/zz2633105/88148107参考知乎文章《RDMA基本服务类型》:https://zhuanlan.zhihu.com/p/144099636。
2023-08-08 09:31:08 819
原创 NVMe协议详解(二)
host在给SSD加载驱动(linux 内核驱动)后,将在host ddr上建立admin queue和I/O queue,如下图所示。注意看上图,每个CPU core上一般只会创建一个I/O,这是SSD的硬件I/O,而我们在linux系统用户态使用FIO创建的queue是block层的软件queue,也就是说,block层上可能多个软件queue对应一个SSD的I/O。下面所说的I/O queue都是指SSD的硬件I/O,host提交I/O请求过程如下图所示。
2023-06-30 17:31:50 2254 7
原创 【PCI】ARM架构——PCI总线驱动、RC驱动、Host Bridge驱动、xilinx xdma ip驱动(八)
讲解xilinx RC驱动(host bridge驱动、pci总线驱动)、级联中断。
2022-05-31 09:10:50 8319 16
原创 【PCI】pcie-switch应用——热拔插(七)
内核热插拔驱动PCI设备在BIOS启动阶段枚举,之后传给linux内核,由linux内核将每个PCI设备注册到pci_bus_type总线上,进而匹配pci驱动,如下图所示。PCI桥设备也会匹配pci驱动,这个驱动名称为pcieport,该驱动在portdrv_pci.c文件中注册,来看一下它的匹配规则,如下所示。static int __init pcie_portdrv_init(void){ if (pcie_ports_disabled) return -EACCES; pcie
2022-05-09 20:30:00 5742 16
原创 yocto(五)——构建SDK及添加工具链
1 为什么使用SDK在上一篇文章中讲解了如何添加自定义软件,整个过程还是较麻烦的,那若有一些软件是开源工具呢?比如某个性能测试工具,按上一篇文章添加方式添加太麻烦,并且标准工具也不需要修改,所以不需要将工具源码一起加入项目工程编译,只需使用yocto工程编译环境编译好工具再加入映像中即可。以下为SDK生成输出工作流。构建输出的是一组特定形式文件,其中包括SDK自解压安装程序(*.sh)、主机、目标清单文件以及用于SDK测试的文件。SDK详细介绍可参阅 https://www.yoctoproject
2022-02-12 09:00:00 5533 8
原创 yocto(四)——添加程序和脚本
前部分文章讲解了Bitbake工作流程及yocto配方语法,但对于大部分未接触过yocto的朋友来说,还是难以理解的,正如yocto官方手册所说,yocto学习曲线无疑是十分陡峭。记得刚学编程时,就由编写运行一个“hello world!”程序入门,那么这篇文章同样由“hello world!”模块开启我们的学习之旅~~~本文参考https://docs.yoctoproject.org/dev-manual/common-tasks.html#writing-a-new-recipe手册第3章节及htt
2022-02-10 18:51:58 7376
原创 【linux iic子系统】gpio模拟i2c(八)
刚学i2c子系统时写的程序,一个简单的参考~~~注意,gpio的硬件地址信息需要根据实际填写~~gpio_i2c.h文件#ifndef _HIK_GPIO_I2C_H#define _HIK_GPIO_I2C_Hint init_gpio(void);void exit_gpio(void);long gpio_tmp_read_data(struct i2c_client *client, unsigned char reg_addr);long gpio_tmp_write_d
2022-01-26 14:51:52 4196
原创 (二) redfish简单信息获取
redfish有个开源调试工具redfishtool,不过它就如同ipmitool工具一样为命令行操作方式,似乎并不友好?除这个工具之外,还有两款强大的图形化调试工具——postman和apipost。简要介绍一下这两款工具Postman是Google开发的一款接口测试工具,提供功能强大的 Web API & HTTP 请求调试。它能够发送任何类型的HTTP 请求 (GET, HEAD, POST, PUT…),附带任何数量的参数+ headers支持不同的认...
2022-01-26 14:36:53 13935
转载 linux程序运行时间精确计算(转载)
写程序时,程序的运行效率很重要,其往往是评价程序优劣性的直接标准。程序运行效率的最简单方法就是计算程序的运行时间。为了提高程序效率,使用适当的方法对程序的各个部分进行运行时间的计算是很有必要的。在 Linux/Unix 环境下,计算 C 程序运行时间可以通过以下三个函数来实现:clock()、time()、gettimeofday()。clock() 函数clock()函数是 ANSI C 的标准库函数,是 C/C++ 十分常用的计时函数,其声明定义在 time.h 头文件中:clock_t clo
2022-01-12 09:31:47 6090
原创 yocto(二)——bitbake工作流程
本文参考yocto官方手册,如有理解不当之处,欢迎留言指出。项目概述和概念手册:https://docs.yoctoproject.org/overview-manual/index.html项目参考手册:https://docs.yoctoproject.org/ref-manual/index.htmlyocto项目的厨师——bitbake bitbake是OpenEmbedded构建系统的引擎,通过解析一系列配置文件(主要为recipes,即bb/bbappend文件)来创建任务列表,并根据
2022-01-08 08:30:00 24654 35
原创 yocto(三)——yocto任务与语法
任务空任务 如果不想使用某个任务可以在配方文件将任务定义为空,比如将do_install任务定义为空:do_install() {}禁用任务 如果不想使用某个任务且也不想在配方文件将任务定义为空,则可以使用下面的语句,比如将禁用do_install任务:do_install[noexec] = "1" 如果想确保一个任务一定执行(某个任务可能在bb配方设置了noexec标志),那可以在bbappend追加配方中加入以下:unset do_install[noexec]删除任
2022-01-06 10:01:45 9228 1
原创 OpenBmc(一)——编译工程
环境准备1.准备一台安装有ubuntu18.04系统的主机,当然可以在虚拟机上安装ubuntu18.04,。2.配置虚拟机,让ubuntu18.04系统至少保证有12G内存可用,并保证硬盘大小不少于100G。3.启动ubuntu系统,配置软件源。备份原有源sudo cp /etc/apt/sources.list /etc/apt/sources.list_back修改源sudo gedit /etc/apt/sources.list内容填入以下# 中科大镜像..
2022-01-03 21:31:07 9204 5
原创 (三)PostMan设置Token(从响应数据或响应头)
在上一节说到使用postman获取redfish信息时,需要先创建会话,然后使用返回的token才能后续获取数据,这个过程我们是通过手动拷贝的,那能否自动填写呢?当然可以,分为两种情况。token在响应头打开postman,在创建会话url的Tests中填写如下:var loginToken = postman.getResponseHeader("X-Auth-Token");pm.globals.set("zhengji_token", loginToke...
2021-10-30 16:21:50 21740
原创 强制打印方法,输出重定向解决
在平常调试程序时候,经常发现标准输出被重定向了,也就是说printf无法打印,以下提供三种方法强制打印。方法一:#include <syslog.h>#include <sys/syslog.h>#include <stdarg.h>#include <stddef.h>#include <stdio.h>#include <unistd.h> static int doser_debug_print_messa
2021-10-24 11:28:25 1030
原创 PCA9548/PCA954X配置方法及实现分析
1 基础知识 pca9548芯片系统框图如下图1.1所示:图1.1 如上图所示,通过配置pca9548的寄存器,即可切换开关完成i2c switch。在子总线下设备地址没有冲突的情况下,可以接通多个子总线,如同时接通子总线0和7。 pca9548内核驱动支持自动切换i2c switch,前提是配置好设备树。设备树的配置示例如下图1.2所示:图1.2 通过上图1.2所示配置后,pca9548的内核驱动程序会注册虚拟的i2c总线16-23,这样...
2021-10-24 10:52:08 9583 14
原创 根文件系统(四)——U盘文件系统制作
U盘根文件系统制作方法 首先准备一个稍微大一点的U盘,其次对U盘进行分区,然后将某个区当做根文件系统区,格式化成想要加载的文件系统类型,在将自己制作的rootfs目录下的东西都拷贝到这个区,最后在U盘第一个分区添加linux内核和grub配置文件。(1)分区格式化将U盘插入装有Linux系统的设备,然后使用fdisk命令进行分区:fdisk /dev/sdx输入 p:查询当前分...
2021-09-04 15:32:04 1049
原创 根文件系统(三)——initramfs文件系统制作
什么是initramfs文件系统? 在 根文件系统分类 章节中讲述了内核会去挂载一个特殊的rootfs,然后再通过解析"root=xxx"命令行,去挂载 /dev/xxx 真正的根文件系统,那么,我们是否可以直接使用这个rootfs当做最终的根文件系统呢?当然可以,这便是 initramfs 内嵌式文件系统,它是一种ramfs文件系统,既可以当做最终的根文件系统,也可作为临时过渡的文件系统。关于initramfs 的前世今生不在这讲述,这里只讲述如何制作使用它!怎么制作initra...
2021-09-04 15:25:40 3916
原创 根文件系统(二)
根文件系统怎么挂接的? 我们常常说内核起来之后会第一个挂接根文件系统,这个根文件系统就是我们制作的吗?其实。。。并不是! 仔细想一想,我们自己制作的根文件系统放在哪???在存储介质上,flash、硬盘、u盘等,那么我们怎么去访问它呢?我们平常读取存储介质中的文件,需要使用文件系统通过挂载点(mount /dev/xxx /mnt)才能获取介质中文件,同样,挂接我们自己做的根文件系统也要这样做,其根因是VFS,我们无法直接去读取介质中文件。 通过上面所述,就...
2021-09-04 15:23:01 437
原创 根文件系统(一)
什么是根文件系统? 根文件系统首先是一种文件系统,该文件系统不仅具有普通文件系统的存储数据文件的功能,但是相对于普通的文件系统,它的特殊之处在于,它是内核启动时所挂载(mount)的第一个文件系统,内核代码的映像文件保存在根文件系统中,系统引导启动程序会在根文件系统挂载之后从中把一些初始化脚本(如rcS,inittab)和服务加载到内存中去运行。我们要明白文件系统和内核是完全独立的两个部分。在嵌入式中移植的内核下载到开发板上,是没有办法真正的启动Linux操作系统的,会出现无法加载文件系...
2021-09-04 15:17:47 2167
原创 【PCI】PCIE设备映射关系图(五)
本文以某PCIE设备为例,画出映射关系图。主片测将PCIE设备所需的资源拷贝到BAR空间对应的虚拟内存中,通过TLP总线事务传递到PCIE设备内存,从而使PCIE设备运行起完整的linux系统完成特定功能。注意,PCI设备空间与PCIE配置空间不同。...
2021-07-10 22:14:56 5558 2
原创 【PCI】RC与PCH关系(二)
基本概念PCH全称为Platform Controller Hub,是intel公司的集成南桥。北桥中的内存控制器和PCIe控制器都集成到了CPU内部,相当于整个北桥芯片都集成到了CPU内部,主板上只剩下南桥。所以PCH可以理解成南桥,目前Intel的有些SOC就是连PCH也集成到了CPU内部,比如:Intel Xeon D系列。RCRC(PCI Express root complex)根联合体, 相当于PCIE主桥,也有称为pcie总线...
2021-07-10 21:51:15 3979
原创 【PCI】PCI & PCIE基础(一)
关于PCI相关基础知识请参阅王齐 先生的著作《PCI Express 体系结构导读》,个人认为这本书是学习PCI与PCIE的经典之作,以下简要说明初学者应阅读哪些章节。PCI第一 ~ 三章节是必须阅读的章节,其中第二章节前三小结是必须吃透部分,而关于信号相关知识可先略过。PCIE 第四、五、六、十章节也是必须阅读章节,主要是熟悉各种概念和之间关系,而具体寄存器的配置之类可略过。 其余章节根据自己工作性质选择阅读即可。提...
2021-07-10 21:24:28 819
IB Specification Vol 1-Release-1.4 ib协议2020版本
2022-06-10
34种字符识别-BP神经网络算法-VS2103+ OpenCV 3.0
2018-01-23
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人