- 博客(72)
- 收藏
- 关注
原创 Linux spi设备驱动
不仅是驱动注册的入口,更是内核实现设备与驱动动态管理的核心机制,其设计充分体现了 Linux 设备模型的灵活性和可扩展性。LINUX CODE在线阅读。
2025-05-22 14:20:47
150
原创 RTOS-调度相关函数分析
[转]4.3 堆栈检验,OSTaskStkChk()-CSDN博客μC/OS之OSTaskStkChk()_ostaskstkchk总容量是4倍-CSDN博客
2025-05-08 16:06:40
136
原创 JESD204B 探究
参考:FPGA之JESD204B接口——总体概要 首片-CSDN博客https://blog.csdn.net/qq_43485409/article/details/126856989
2025-04-30 15:18:21
404
原创 Arm 驱动i2c相关
当DW_apb_i2c 作为 master 时,往TX FIFO中存入数据时(软件配置数据到寄存器IC_DATA_CMD[7:0]),DW_apb_i2c 会自动在总线上产生一个START信号,即START信号的产生不需要软件参与。
2025-01-17 14:09:00
309
原创 输出电压读取READ_VOUT和输出电流读取READ_IOUT的十进制快速翻译方法
二进制为:1 00 10111,数据格式为相对值,Linear格式,步进值指数补码为10111,首位为1,该值为负数,负数的原码是补码取反再+1,为01001,十进制为-9,则步进值为2-9,为0.001953125V,1.953mV。1. 读取VOUT_MODE的值,VOUT_MODE在PMBUS的定义中,是一个1字节的寄存器,地址为20h,用于定义和输出电压有关的寄存器值的格式和步进值。中,则READ_VOUT的值不能反应真实的输出电压值,需要人工换算,如TPS543B20这种输出电压采样结构。
2025-01-16 20:49:26
621
原创 ubuntu 工具安装
一、安装crc32sudo apt-get install libarchive-zip-perlsudo apt-file update && sudo apt-file search /usr/bin/crc32
2024-12-31 13:52:08
407
原创 ARM 获取cpu个数
AFF0 :表示一个 core 中的第几个 thread,大多数 core 都是 single-threaded core,所以大多数 core 中的该值是 0.AFF1:表示一个 cluster 中的第几个 cpuAFF2/AFF3:表示系统中的第几个 cluster,这个值由 SOC 厂商给 core 的输入信号决定。
2024-12-24 16:11:20
544
原创 Linux内核--内存分配Slab详解《1》
基于5.10研究首先思考一个问题给你一块512G的内存条,怎么去管理?参考:说出来你可能不信,内核这家伙在内存的使用上给自己开了个小灶!_zoneLinux内存管理中对PAGE_OFFSET的理解_page offset-CSDN博客
2024-12-06 14:26:52
210
原创 dead000000000400
参考:OSP 16.2: kernel panic when trying to use hugepages - Red Hat Customer Portal
2024-11-19 19:40:13
292
原创 MPTCP协议
多路径TCP或是标准的扩展并在中进行了描述它允许设备同时使用多个接口通过单个MPTCP连接发送和接收TCP数据包。MPTCP可以聚合多个接口的带宽,也可以选择延迟最低的接口。它还允许在一条路径断开时进行故障切换,并将流量无缝地重新注入其他路径。
2024-11-13 20:22:04
590
原创 Linux 零拷贝技术
以客户端从服务器下载文件为例,熟悉服务端开发的同学可能知道,服务端需要做两件事:第一步:从磁盘中读取文件内容第二步:将文件内容通过网络传输给客户端事实上看似简单的操作,里面的流程却没那么简单,例如应用程序从磁盘中读取文件内容的操作,大体会经过以下几个流程:第一步:用户应用程序调用 read 方法,向操作系统发起 IO 请求,CPU 上下文从用户态转为内核态,完成第一次 CPU 切换第二步:操作系统通过 DMA 控制器从磁盘中读数据,并把数据存储到内核缓冲区。
2024-11-09 12:03:33
1259
原创 内核spin_lock
函数中,每个线程会循环 10000 次,每次循环都会先获取自旋锁,然后对共享变量。之后等待两个线程完成任务,并打印出最终共享变量的值。一个简单的多线程场景下对共享资源的保护。进行加 1 操作,最后释放自旋锁。
2024-11-08 16:56:28
232
原创 什么情况下会导致 RCU CPU Stall 警告?
参考:Linux内核 失速(STALL) 警告说明文档翻译_linux_lxmega-GitCode 开源社区
2024-10-30 11:26:37
404
原创 香农定理基础
香农定理是由克劳德・香农(Claude Shannon)提出的,在信号处理和信息理论领域具有极其重要的地位134。它描述了有限带宽、有随机热噪声信道的最大传输速率与信道带宽、信号噪声功率比之间的关系13。
2024-10-29 15:38:16
231
原创 kernel panic 稳定性分析实例(四) 内存屏障smp_wmb()
在 Linux 内核中,可以使用内存屏障来确保内存操作的顺序。对于这种情况,一种可能的做法是使用。可以保证在它之后的读操作不会被重排到它之前,这样可以确保。的值是在检查之后没有被其他操作非法修改过的。(在对称多处理环境下的读内存屏障)。
2024-10-28 16:11:57
281
原创 Linux 用户空间使用mmap的奥秘
mmap(memory map)即内存映射,用于将一个文件或设备映射到进程的地址空间,或者创建匿名的内存映射。请注意,虽然 mmap() 最初是为映射文件而设计的,但它实际上是一个通用映射工具。它可用于将任何适当的对象(例如内存、文件、设备等)映射到进程的地址空间。以文件映射到内存为例,实现这样的映射后,进程虚拟地址空间中一段内存地址将与文件磁盘地址一一对应,进程就可以采用指针的方式读写这段内存,系统会自动回写脏页到对应的磁盘文件。
2024-10-22 14:58:43
1115
原创 crash命令 —— irq
参考:https://crash-utility.github.io/help_pages/irq.html。查看系统所有中断的使用信息,如虚拟中断号,中断的irq_desc,注册的irqaction以及名字。如果想查看指定cpu上统计信息:irq -s -c a 或 irq -s -c 1,3,6-9。查看系统中断的使用和统计信息,类似cat /proc/interruptsirq -s。查看实际使用的中断的信息,去除哪些没有被申请的虚拟中断号。查看中断的cpu亲和性值。
2024-10-17 11:22:07
236
原创 中断异常指令
上节内容介绍了 BRK 后面跟的立即数会在断点中断发生时,保存到ESR.ISS中,那么我们看下linux 中 BRK 后面的立即数宏定义种类有哪些并分别作用是什么?
2024-10-17 10:32:09
400
原创 Linux 锁
但是,硬件arbiter的限制使得CPU的写回必须是串行化的,因此CPU1首先获得了访问权,进行写回动作,随后,CPU2完成写回动作。和spinlock的语义类似,都是允许一个执行线索进入临界区,不同的是当无法获得锁的时候,spinlock原地自旋,而mutex则是选择挂起当前线程,进入阻塞状态。如果只有进程上下文的访问,那么可以考虑使用semaphore或者mutex的锁机制,但是现在中断上下文也参和进来,那些可以导致睡眠的lock就不能使用了,这时候,可以考虑使用spin lock。
2024-10-12 19:06:45
236
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人