- 博客(154)
- 资源 (2)
- 收藏
- 关注
原创 【Ubuntu-18.04.6 LTS (Bionic Beaver)】串口无法root登录解决方案
用户界面登录提示 soory that didnot work。
2024-07-10 17:19:49 266
原创 使用 strace 进行调试
strace 是可用于调试任何正在运行的程序的最佳工具之一。在我们深入之前,您需要熟悉系统调用。熟悉它们非常重要,因为 strace 公开了程序正在使用的系统调用。因此,在介绍 strace 之前,先介绍一些常见的系统调用。系统调用是“应用程序和 Linux 内核之间的基本接口”。如果您查看手册页,您会发现有很多系统调用,但我不会列出所有系统调用,而是列出您会看到的更常见的调用。Open() - 用于打开或创建文件的系统调用Read() - 用于读取文件的系统调用。
2024-04-17 17:45:39 618
原创 pcie中aer错误的原因已经如何看寄存器
PCI Express Advanced Error Reporting (AER) 是一种错误检测和报告机制,用于帮助检测和诊断 PCI Express 总线上的错误。如果输出结果中包含“status”和“error”字样,则说明设备存在 AER 错误。如果输出结果中包含“Advanced Error Reporting”或“AER”字样,则说明设备支持 AER。确定存在 AER 错误的 PCIe 设备。此命令将返回设备的 AER 寄存器值,其中包括错误状态、错误计数和错误信息等信息。
2024-03-08 13:09:08 1197
原创 Cmake输出git内容方式
在CMake中获取git信息,可以通过execute_process命令运行git命令并将结果保存在一个变量中。然后可以使用configure_file命令将此信息写入一个头文件,最后在main函数中包含此头文件并打印相关信息。version.h.in 文件是需要手动创建来作为模板,cmake编译的时候回自动生成文件version.h文件,将数据保存到这个变量中,编译出来的固件就会有这些编译出来文件的符号和内容。在定位问题时,固件无法获取当前设备中版本的详细信息,无法准确获取版本具体内容。
2023-10-23 18:32:04 595
原创 【linux】[OOM]now anon-rss:0kB, file-rss:0kB, shmem-rss:280kB
anon-rss:这表示没有映射到文件的内存量,即匿名内存。匿名内存通常是进程通过 malloc()或类似的方法动态分配的内存。在你的例子中,anon-rss 是 0 kB,表示没有这种类型的内存被使用。file-rss:这表示映射到文件的内存量。如果一个进程打开了一个文件并将其映射到内存,那么这部分内存就会被计入file-rss。在你的例子中,file-rss 也是 0 kB,表示没有这种类型的内存被使用。shmem-rss:这表示共享内存量。
2023-10-10 18:26:32 1628
原创 【Linux】inittab系统启动时sysinit含义
null::sysinit:/bin/ln -sf /proc/self/fd/1 /dev/stdout 这个命令的意思是,在系统启动时不运行这个命令,而是在系统运行过程中,当需要创建一个从 /proc/self/fd/1 到 /dev/stdout 的符号链接时,再运行这个命令。在这个上下文中,“null” 是一个特殊的关键字,用于指示这个命令不需要在系统启动时运行,而是在系统运行过程中根据需要运行。这种语法是 init 系统的一部分,用于控制系统启动过程中哪些命令应该在哪个阶段运行。
2023-10-07 17:31:45 671
原创 【Linux】package ‘python-yaml‘ has no installation candidate 如何解决
如果上述步骤仍然无法解决问题,您可以尝试使用 pip 安装 python-yaml 包。确保您的软件源列表中包含了正确的软件源。确保您的系统已经更新到最新版本。
2023-09-06 19:02:56 2037
原创 【Linux】内核宏定义解释postcore_initcall,arch_initcall,subsys_initcall
是一个宏,用于在Linux内核初始化过程中注册一个后期初始化函数。是一个宏定义,用于指定注册的函数在内核初始化的哪个阶段执行。是要注册的函数的名称,它是一个后期初始化函数。后期初始化函数是在内核初始化过程的最后阶段执行的函数。这些函数通常用于执行一些需要在其他子系统初始化之后才能进行的操作。截图汇总,是一个后期初始化函数,可能用于初始化PCI总线的相关内容。通过调用宏将后期初始化函数注册到内核中,可以确保在内核初始化的最后阶段执行该函数,从而完成相应的后期初始化工作。
2023-08-11 01:00:00 1200
原创 【PCIE】AER和DPC解释
AER(Advanced Error Reporting)和 DPC(Downstream Port Containment)是PCIe(Peripheral Component Interconnect Express)总线规范中定义的两种不同的错误处理机制,它们在PCIe架构中有一定的关联。
2023-08-09 00:15:00 5446
原创 【PCIE】PCIE的驱动和pcie的端口驱动关系
PCIe的端口服务驱动与PCIe驱动之间存在一定的关系,但它们是不同的概念。PCIe驱动是用于管理和操作PCIe设备的驱动程序。它负责与硬件进行通信,并实现对PCIe设备的配置、数据传输以及其他相关操作。PCIe驱动通常涉及设备的初始化、中断处理、寻址、DMA控制等。而PCIe的端口服务驱动是一种特殊类型的驱动程序,它专门用于管理和操作PCIe端口的特定功能和操作。PCIe端口是在主机系统上用于连接PCIe设备的接口,例如插槽或者集成到主板上的接口。
2023-08-07 00:30:00 1173
原创 【Linux】内核线程创建 kthread_run 函数和内核中断
以PCIE的热插拔内核线程创建为例说明注意:内核线程和RTOS的线程略有不同,这里Linux上创建以后直接运行,RTOS上有的是需要加入到调度队列中后才会执行,比如RT-Thread的系统kthread_run 是 Linux 内核中的一个函数,用于创建和运行内核线程(Kernel Thread)。在 Linux 内核中,线程是一种轻量级的执行单位,可以独立运行并共享进程资源。
2023-08-04 16:19:04 1980
原创 内核中常用宏定义详解 container_of和list_entry
作用:用于根据结构体成员的指针计算出对应的结构体的指针这个宏包含了三个参数:ptr:结构体成员的指针。type:结构体类型。member:结构体成员变量的名称。宏的作用是根据给定的结构体成员的指针 ptr,返回对应的结构体的指针。它使用了指针运算和类型转换来实现。宏的具体实现如下:首先, 将一个空指针强制类型转换为指向 type 类型的指针,并且取得该指针指向的内存地址。接着, 取得了结构体成员 member 的偏移量,也就是 member 相对于结构体起始地址的偏移量。 将偏移量转换为字符指针,
2023-07-31 16:33:16 210
原创 实用的各种网址(建议收藏)
PPT课件网:http://www.pptkj.net/\n\nImgUpscaler:AI Image Upscaler - Upscale Photo, Cartoons in Batch Free 加强图片\n\nAI Draw:AI Draw | Convert Images to One-Line Drawings with AI \n\nZToDoList:https://www.ztodolist.com/#/ \n\nReshot:Reshot | Free icons & ill
2023-07-15 14:55:37 315
原创 【PCIE】Device Control Register (Offset 08h)
(最大传输负载大小)是PCI Express设备控制寄存器中的一个位域,用于设置设备支持的最大传输负载的大小。PCI Express使用数据包(Packet)来传输数据,而数据包由头部和有效载荷(Payload)组成。有效载荷是实际要传输的数据部分。最大传输负载大小定义了设备可以支持的最大有效载荷大小。在"Maximum Payload Size Supported"(MPSS)位域中,[2:0]表示3个比特位,用于编码支持的最大传输负载大小的取值。通常情况下,可能的取值包括:000: 128字节。
2023-07-12 13:03:14 1077
原创 【PCIE】hot-reset和link disable
如果上游伪端口(Pseudo Port)的任何一个通道连续接收到两个带有热复位位设置为1b、禁用链路位和回环位设置为0b的TS1有序集合,并且两个伪端口上的任何一个通道(接收到TS1有序集合)要么收到EIOS(Electrical Idle Ordered Set),要么推测处于电气空闲状态,那么Retimer将执行以下操作:清除变量RT_LinkUp = 0b,表示链路未连接。将其发送器置于两个伪端口上的电气空闲状态。将变量RT_next_data_rate设置为2.5 GT/s。
2023-07-09 00:15:00 1158
原创 【PCIE】协议分析之-hot-reset热复位
当高层(higher Layer)指示某些通道进行热复位(Hot Reset)时,以下操作将被执行:所有在配置的链路中的通道都会发送带有热复位位(Hot Reset bit)和配置的链路号、通道号的TS1有序集合。如果在任何通道上接收到两个连续的带有热复位位和配置的链路号、通道号的TS1有序集合,那么:LinkUp = 0b(False),表示链路未连接。如果没有高层指示物理层保持在热复位状态,则进入下一个状态:检测状态(Detect)。
2023-07-08 00:30:00 1777
原创 【PCIE】链路训练的TS训练序列解释
TS1和TS2有序集合是PCIe(Peripheral Component Interconnect Express)协议中使用的一种特殊数据包格式。这些有序集合用于在PCIe链路的训练阶段进行通信和控制。TS1(Training Sequence 1)有序集合:TS1有序集合是一个8个字符长的数据包,用于在链路训练开始时进行初始化和同步。TS2(Training Sequence 2)有序集合:TS2有序集合是一个32个字符长的数据包,用于进一步训练和调整链路的参数,以提高数据传输的可靠性和性能。
2023-07-07 13:07:55 2030
转载 【Linux】内核oops/缺页异常分析
看到一个写的比较好的帖子出处:https://www.zhihu.com/question/317992090/answer/2561856956。
2023-06-08 19:47:56 954
原创 【PCIE】TLP 发送三阶段和Secondary Bus Reset
TLP 发送的三个阶段涉及到 PCIe 协议栈中的不同层次,具体如下:TLP 发送阶段 1(TS1):这个阶段是在传输层(Transaction Layer)中进行的。在这个阶段,TLP 数据包会进行编码和格式化处理,并添加一些控制信息,如 Stream ID 和序列号等。同时,在这个阶段还会进行一些流控制、纠错等相关处理。TLP 发送阶段 2(TS2):这个阶段是在数据链路层(Data Link Layer)中进行的。
2023-06-06 19:58:56 1667 1
原创 【Linux】Top命令参数解释
load average: 0.97, 0.41, 0.21:系统在过去1分钟、5分钟和15分钟内的平均负载值。S:进程状态 (D=不可中断的睡眠状态, R=运行, S=睡眠, T=跟踪/停止, Z=僵尸进程)。ni:用于调整进程优先级的用户进程空间占用率 (nice value)。%Cpu(s):指示各种CPU时间的使用百分比。NI:进程的nice值,用于调整进程的优先级。%CPU:该进程当前占用CPU的时间百分比。%MEM:该进程占用物理内存的百分比。TIME+:该进程占用CPU的总时间。
2023-05-26 22:03:43 1155
原创 【Git】git仓库的 .git 下各个目录注释
目录是Git版本控制系统的核心,它包含了Git所需要的所有信息,包括版本历史、分支、标签、配置等。目录是非常重要的,不应该随意修改或删除。如果需要备份或迁移仓库,应该将整个。目录一起复制或移动。
2023-05-26 13:15:39 1457
原创 【Linux】dmidecode命令使用介绍
dmidecode 是一个命令行工具,用于显示系统的 DMI(Desktop Management Interface)信息。DMI 是一个由 SMBIOS(System Management BIOS)规范定义的接口,它提供了一种标准的方式来获取关于系统硬件和软件的信息。dmidecode 可以读取 DMI 数据结构并将其解码为可读的格式,以帮助管理员诊断和调试系统问题。它可以显示有关系统硬件组件(如处理器、内存、主板、BIOS 等)的详细信息,以及系统配置和运行状态信息。
2023-05-25 00:30:00 410
原创 【Linux】确定Linux系统启动方式是否是UEFI的方式
请注意,如果您的系统正在使用BIOS传统启动模式,则不会在/sys/firmware/efi目录下看到/efi和/boot/efi文件夹,并且上述命令的输出将不包含“EFI v”或“GPT”。查看/sys/firmware/efi目录下是否存在/efi和/boot/efi文件夹。如果输出中包含“BootCurrent:”和“BootOrder:”,则系统正在使用UEFI启动模式。如果输出中包含“EFI v”,则系统正在使用UEFI启动模式。如果输出中包含“GPT”,则系统正在使用UEFI启动模式。
2023-05-24 14:57:01 5014
原创 【Linux内核】Linux系统关于多进程和多线程相关知识点
而线程是在同一进程内部执行的,它们共享相同的地址空间和其他系统资源,因此线程之间切换的代价很小。在某些情况下,使用线程可以提高系统的性能,因为线程之间的切换成本更低,可以更好地利用CPU的时间片。但是,在其他情况下,使用进程可能更好,因为它们提供了更好的隔离和安全性,可以避免一些共享内存的问题。上下文切换是指当CPU从一个进程或线程切换到另一个进程或线程时,需要保存当前进程或线程的状态,并恢复下一个进程或线程的状态。而线程是依赖于进程的,一个进程中的所有线程共享相同的内存空间,因此线程之间通信更加方便。
2023-05-20 01:15:00 848 1
原创 【Linux内核】内存管理子系统知识点(建议收藏)
在Linux内核中,内存管理是非常重要的一部分,因为它负责管理系统中所有的内存资源。虚拟内存是一种内存管理技术,允许程序使用比实际物理内存更多的内存。当程序需要使用内存时,虚拟内存会将一部分数据从硬盘中复制到内存中,这样程序就可以继续执行。Linux内核使用一种称为“页表”的机制来管理虚拟内存。每个进程都有自己的页表,其中包含虚拟地址和对应的物理地址。当进程需要访问某个虚拟地址时,Linux内核会将其转换为对应的物理地址,并将其加载到内存中。页面置换算法是用于虚拟内存管理的一种算法。
2023-05-19 00:45:00 610
re2c-3.0.tar.xz,是Google的一名程序员推出的注重速度的构建工具
2023-05-26
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人