分享几个嵌入式 C 中的实用技巧
回调函数在嵌入式系统中具有动态绑定的功能,可以在一定程度上减少不同层次之间的耦合度。关于回调函数,之前我已经写过一篇文章介绍了C语言、嵌入式重点知识:回调函数。也许许多刚开始学习的朋友还不太理解回调函数的概念,下面的图示可以帮助理解:
从Linux源码角度看Epoll,透过现象看本质
对于大量文件描述符的监听而言,无论是select还是poll系统调用都会显得力不从心。poll系统调用每次都需要将所有文件描述符复制到内核空间,这些文件描述符并不会由内核进行保存,这种设计导致了poll效率的低下。
IIC通信入门,搞懂这篇就够了
I2C(或IIC)是一种两线式串行总线,最初由飞利浦公司开发,用于微控制器(MCU)和外围设备(从设备)之间进行通信。它采用一主多从的总线结构,即一个主设备(Master)可以控制多个从设备(Slave)。每个设备在总线上都有一个特定的设备地址,以便区分不同设备。
Linux内核i2c-tools命令
在RockPi 4A Debian系统中,我们可以使用i2c-tools这一工具来进行i2c设备的调试。i2c-tools提供了一系列命令,通常用于在Linux系统中进行i2c设备寄存器的读写操作,以进行在线调试。
探讨 Linux CPU 的上下文切换
我们都了解到,Linux是一个强大的多任务操作系统,它支持同时运行的任务数量远远大于CPU的数量。然而,实际上这些任务并非同时进行(在单CPU系统中),而是通过系统在短时间内将CPU轮流分配给任务,从而造成多任务同时运行的错觉。
Linux中一个网络包的发送/接收流程
如果你感兴趣于Linux是如何实现对用户原始的网络包进行协议头封装与解析的过程,那么你一定会想了解为什么会出现粘包拆包的现象。在这个过程中,网络包经历了不同的缓冲区,同时也经历了多次的拷贝
SPI 硬件+Linux驱动详解
SPI:串行外围设备接口(Serial Peripheral Interface),由Motorola公司提出,是一种高速、全双工、同步通信总线。SPI以主从方式工作,通常由一个主设备和一个或多个从设备组成,无应答机制。
深入理解Linux内核之mmu-gather操作
在Linux内核的虚拟内存管理中,特别是在处理器架构为arm64、内核源码版本为linux-5.10.50、运行的ubuntu版本为20.04.1,并借助于代码阅读工具vim、ctags以及cscope的情况下,我们将深入探讨mmu_gather操作的机制。我们将看到这个操作是如何确保在释放物理页面之前正确地刷新tlb,并且如何聚集更多的页面以便统一释放。
Linux 高性能服务 epoll 的本质,真的不简单(含实例源码)
在这个场景中,有100万用户同时与一个进程保持着TCP连接,但每一时刻只有几十个或几百个TCP连接是活跃的(即正在接收TCP包),这意味着进程每时每刻只需要处理这100万连接中的一小部分。