- 博客(103)
- 资源 (6)
- 收藏
- 关注
原创 如何获得 compile_commands.json
使用 bear例如cmake : 可以通过 CMAKE_EXPORT_COMPILE_COMMANDS 使 cmake 在编译时生成 compile_commands.json。可以在 CmakeLists.txt 中设置 CMAKE_EXPORT_COMPILE_COMMANDS 为 ON,例如。也可以在命令行设置,例如。
2025-05-23 15:36:40
329
原创 前向兼容、向前兼容、向后兼容傻傻分不清楚
向后 == 后向 == backward compatible。前向 == 向前 == forwards compatible。backwards compatible —— 向过去兼容。forwards compatible —— 向未来兼容。根据语境总结了一些它们的含义。这里面的“前”是前面还是以前?这里面的“后”是以后还是后面?
2025-03-02 10:45:57
170
原创 如何克隆 clone linux kernel 代码仓库
打开 https://git.kernel.org/搜索 Linus Torvalds , 找到描述为 Linux kernel source tree 的那个仓库, 就是 linux kernel 主干代码了。打开这个仓库的页面, 可以看到克隆地址为 https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git就可以克隆 linux kernel 主干代码仓库。
2025-02-27 16:10:47
231
原创 malloc空闲链表
找到合适的内存块后,如果这个内存块比用户请求的大小要大,那么就会按需将其分割成两部分,一部分的大小刚好与用户请求的大小相等,这部分就会分配给用户使用,而剩下的那部分则会被放回空闲链表中,等待后续其他的内存分配请求再进行分配。不过,随着程序不断地分配和释放内存,空闲链有可能会被切成很多的小内存片段,要是后续用户申请一个较大的内存片段时,空闲链上可能暂时没有可以满足要求的片段了,这时malloc函数可能就需要进行一些整理操作,比如对这些小的空闲块尝试合并等,以便能满足较大内存请求的情况。
2025-02-10 16:23:27
228
原创 linux上给磁盘分区和格式化分区
会进入fdisk交互式界面。输入 m 可查看帮助。g创建一个 gpt 分区表。n新建一个分区。提示输入第一个扇区号,使用默认值即可,直接按回车。提示输入最后一个扇区号,使用默认值即可,直接按回车。w将新分区表写入磁盘。会退出fdisk交互界面。查看磁盘分区。
2024-10-11 00:29:56
689
1
原创 binutils 介绍
然而,objdump有一个比较有用的功能,它能显示反汇编后的目标代码。objcopy - 将一个二进制目标文件的内容赋值到另一个文件中,在这个过程中可能转换目标文件的格式。ldd - 列出一个或多个目标文件所依赖的共享库。它是C库软件包的一部分。prelink - 对共享库和依赖它们的目标文件进行预链接,从而事先处理未解析的程序库引用。readelf - 提取elf文件中的各种内容。strip - 删除一个二进制文件中的符号和调试信息。nm - 显示目标文件中的符号。提取 elf 中所有的段。
2024-08-10 19:20:47
678
原创 一些linux调试工具
dmalloc - 一个强大的动态内存分析工具。dmalloc 包含一个命令行工具和一个 dmalloc 库。要使用dmalloc,应用程序必须链接 dmalloc 库。mtrace - 分析进程调用 malloc、realloc、free 的情况,并生成报告。ltrace - 捕捉一个应用调用的库函数。strace - 捕捉一个应用的系统调用。top - 周期性显示系统进程。ps - 列出所有进程。
2024-08-10 18:12:41
126
原创 FHS:文件系统层次结构标准
FHS文档: https://refspecs.linuxfoundation.org/fhs.shtml。FHS用来规定UNIX文件系统的组织结构和布局。它增强了不同Linux发行版和应用之间的兼容性。
2024-08-10 17:51:08
153
原创 linux cmdline parameters
Linux 内核定义了大量的命令行参数。内核源码的 Documentation 中有一个 kernel-parameters.txt 文件,其中按照字典顺序列出了所有的内核参数。但内核源码变化快于它的文档,因此不要将该文档作为权威参考。
2024-08-10 17:35:10
108
原创 编译linux kernel时,如何增加一个include路径?
就是要增加的include路径。他会被传递给gcc或clang的-I选项,用于添加一个新的include路径。是你的交叉编译器前缀,例如 arm-linux-。是你的目标架构,例如 x86、arm 等。
2024-07-19 10:10:58
561
原创 linux sysrq用法
还可以按 Alt+Sysrq+P 键制造panic。Sysrq键到底是哪个键呢?百度得知Sysrq键就是print screen键。linux kernel支持一个称为sysrq的特殊功能。它允许用户空间执行一些系统级操作。在大多数linux系统中默认关闭了sysrq功能。Sysrq除了可以制造panic,还具有其他功能。
2024-07-10 17:10:55
321
1
原创 cache基础
set index 是 cache line 在 way 中的序号。set index 通常直接简称为 index 。如果一个物理地址确定,那么其 index 就确定了,这个地址对应的数据缓存在哪个 set 中也就确定了。如上图所示, 物理地址的 bits[y-1:x] 决定了数据缓存在哪个set中。一个物理地址上的数据缓存时,只会缓存到固定的set中, 如果cache已满,只会逐出同一set的cache line,而不会影响其他set的cache line。一个page缓存时会占用多个set
2024-03-05 11:01:52
675
原创 Atomic access 与 Exclusive access 的区别
Atomic access(原子访问)和Exclusive access(独占访问)是两种不同的访问机制,它们主要用于处理并发访问和多线程环境中的资源访问问题。
2024-02-19 16:16:04
1258
原创 screen用法
安装screen运行screen$ screen查看会话列表:列出所有正在运行的screen会话screen -ls或重新连接会话:其中<会话ID>是之前分离会话的ID,你可以从screen -ls命令中获取。配置screen:screen可以通过一个配置文件(~/.screenrc)进行自定义设置,包括定义快捷键、默认窗口、状态栏等等。退出screen:在窗口内执行exit命令。
2023-12-26 15:26:25
623
原创 dt-bindings 的用途
在Linux源码中,‘include/dt-bindings’ 目录主要是用来定义设备树(Device Tree)的绑定(bindings)。设备树是一种描述硬件配置的数据结构,主要用于在无须了解具体硬件细节的情况下,解析出系统的硬件配置。这些信息是从硬件的数据手册中获取的,然后被封装在设备树绑定中,以便在编译设备树时使用。这些绑定定义了一些硬件设备如何在设备树中被标识和描述。我推测, 这些头文件会被dts和kernel或u-boot源码include,以便向dts和源码提供一致的硬件定义。
2023-10-13 14:22:11
1052
原创 linux ssh超时时间
在ssh配置文件/etc/ssh/sshd_config中,将ssh的保活配置打开:意思是5分钟检查一次客户端响应,最多检查3次。如果3次都检查到客户端不响应,那么就认为ssh已经断开了。
2023-07-12 22:31:56
2912
原创 vscode配置gdb调试
https://code.visualstudio.com/docs/cpp/launch-json-reference
2023-07-11 22:09:09
388
原创 探索MIPI
MIPI的全称是: Mobile Industry Processor InterfaceMIPI的官网是: www.mipi.org
2022-02-13 15:59:48
516
原创 探索DP协议
DP : DisplayPortVESA推出的协议。更高的色彩深度、刷新率、显示分辨率、可伸缩的数字显示接口。可选音频及内容保护。DP协议分层为 : Link Layer 和 Physical LayerDP link可分为3部分:Main LinkAUX ChannelHotplug Detect(HPD)Main Link 用于传输音视频顺,由 DPTX/DPRX组成。支持的不同速率 : 8.1Gbps、 5.4Gbps、 2.7Gbps、 1.62GbpsMain Link可支持
2021-09-21 16:56:06
4476
原创 linux kernel 源码之chr_dev
字符设备的设备号字符设备的设备号是用哈希表管理的,说具体些是chrdevs哈希表管理的。chrdevs是一个全局的数组变量。 输入的每个元素是链表头,指向char_device_struct结构体。每个链表节点包含major和minor范围。 major可以相同,但minor的范围不能相同,也不能有重叠。cdevcdev结构体实际上代表一组相同的字符设备,而不是对应单一的一个字符设备。cdev与设备号的关联用kobj_map管理。 kobj_map实际是一个哈希表。系统启动时创建了cdev_m
2021-09-21 16:54:43
377
原创 linux kernel源码之block_dev
源码:include/linux/fs.hfs/block_dev.c(blkdev.h是block层的头文件)伪文件系统bdevlinux kernel中在开机时注册并mount这个bdev文件系统。linux kernel VFS中每个文件关联到一个inode,包括设备文件。bdev文件系统管理一系列块设备文件对应的inode。bdev中管理的inode总是与一个block_device结构体绑定。vdev中管理的inode保存了文件类型和设备号。block_deviceblock
2021-09-21 16:54:11
827
原创 linux kernel源码之kobj_map
源码include/linux/kobj_map.hdrivers/base/map.c主要提供了4个函数1 kobj_map_init2 kobj_map3 kobj_lookup4 kobj_unmapchr_dev 、 block_dev 使用kobj_map 管理字符设备和块设备。kobj_map的数据结构kobj_map的基础数据结构是哈希表。kobj_map结构体包含一个指针数组(指针是struct probe的指针)。数组长度为255 。 数组的每个元素是链表头。初始化
2021-09-21 16:53:30
900
USB xHCI Specification Revision 1.2b
2024-01-12
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人