分享几个嵌入式 C 中的实用技巧

分享几个嵌入式 C 中的实用技巧

回调函数在嵌入式系统中具有动态绑定的功能,可以在一定程度上减少不同层次之间的耦合度。关于回调函数,之前我已经写过一篇文章介绍了C语言、嵌入式重点知识:回调函数。也许许多刚开始学习的朋友还不太理解回调函数的概念,下面的图示可以帮助理解:

从Linux源码角度看Epoll,透过现象看本质

从Linux源码角度看Epoll,透过现象看本质

对于大量文件描述符的监听而言,无论是select还是poll系统调用都会显得力不从心。poll系统调用每次都需要将所有文件描述符复制到内核空间,这些文件描述符并不会由内核进行保存,这种设计导致了poll效率的低下。

IIC通信入门,搞懂这篇就够了

IIC通信入门,搞懂这篇就够了

I2C(或IIC)是一种两线式串行总线,最初由飞利浦公司开发,用于微控制器(MCU)和外围设备(从设备)之间进行通信。它采用一主多从的总线结构,即一个主设备(Master)可以控制多个从设备(Slave)。每个设备在总线上都有一个特定的设备地址,以便区分不同设备。

Linux内核i2c-tools命令

Linux内核i2c-tools命令

在RockPi 4A Debian系统中,我们可以使用i2c-tools这一工具来进行i2c设备的调试。i2c-tools提供了一系列命令,通常用于在Linux系统中进行i2c设备寄存器的读写操作,以进行在线调试。

探讨 Linux CPU 的上下文切换

探讨 Linux CPU 的上下文切换

我们都了解到,Linux是一个强大的多任务操作系统,它支持同时运行的任务数量远远大于CPU的数量。然而,实际上这些任务并非同时进行(在单CPU系统中),而是通过系统在短时间内将CPU轮流分配给任务,从而造成多任务同时运行的错觉。

Linux中一个网络包的发送/接收流程

Linux中一个网络包的发送/接收流程

如果你感兴趣于Linux是如何实现对用户原始的网络包进行协议头封装与解析的过程,那么你一定会想了解为什么会出现粘包拆包的现象。在这个过程中,网络包经历了不同的缓冲区,同时也经历了多次的拷贝

SPI 硬件+Linux驱动详解

SPI 硬件+Linux驱动详解

SPI:串行外围设备接口(Serial Peripheral Interface),由Motorola公司提出,是一种高速、全双工、同步通信总线。SPI以主从方式工作,通常由一个主设备和一个或多个从设备组成,无应答机制。

编程中用到的字符编码知识点

编程中用到的字符编码知识点

字符集是指汇集了一组字符的集合,如我们熟知的ASCII字符集、GB2312字符集和Unicode字符集等。这些字符集之间的主要区别在于所包含的字符数量的不同。

深入理解Linux内核之mmu-gather操作

深入理解Linux内核之mmu-gather操作

在Linux内核的虚拟内存管理中,特别是在处理器架构为arm64、内核源码版本为linux-5.10.50、运行的ubuntu版本为20.04.1,并借助于代码阅读工具vim、ctags以及cscope的情况下,我们将深入探讨mmu_gather操作的机制。我们将看到这个操作是如何确保在释放物理页面之前正确地刷新tlb,并且如何聚集更多的页面以便统一释放。

Linux 高性能服务 epoll 的本质,真的不简单(含实例源码)

Linux 高性能服务 epoll 的本质,真的不简单(含实例源码)

在这个场景中,有100万用户同时与一个进程保持着TCP连接,但每一时刻只有几十个或几百个TCP连接是活跃的(即正在接收TCP包),这意味着进程每时每刻只需要处理这100万连接中的一小部分。

联系我们

联系我们

公众号:良许Linux

在线咨询: QQ交谈

邮箱: yychuyu@163.com

关注微信
微信扫一扫关注我们

微信扫一扫关注我们

关注微博
返回顶部