学习 I2C 和 SPI 驱动的时候,针对 I2C 和 SPI 设备寄存器的操作都是通过相关的 API 函数进行操作的。这样 Linux 内核中就会充斥着大量的重复、冗余代码,但是这些本质上都是对寄存器的操作,所以为了方便内核开发人员统一访问 I2C/SPI 设备的时候,为此引入了 Regmap 子系统。
在 Linux 中查找可用的网络接口 我们可以通过几种方式找到可用的网卡。在本指南中,我们将讨论列出 Linux 中网络接口卡的 10 种方法。 1. 使用 ifconfig 命令列出网络接口 使用ifconfig命令查找网络接口详细信息的最常用方法。我相信一些 Linux 用户可能仍在使用它。 $ ifconfig -a enp5s0: flags=4098<BROADCAST,MULTICAST> mtu 1500 ether 24:b6:fd:37:8b:29 txqueuelen 1000 (Eth
如果将内核比作一座工厂,那么Linux中众多的接口就是通往这个巨大工厂的高速公路。这条路要足够坚固,禁得起各种破坏(Robust)。要能跑得了运货的卡车,还要能升降飞机。(Compatible)。当然了这条路要越宽越好(Performant)。如下图所标,Linux中有四种类型的接口。位于内核和用户之间的API(应用程序接口)和ABI(应用二进制接口)。内核内部的API和ABI。下面我们逐条的来看看这些接口。
PCF8591是一个IIC总线接口的ADC/DAC转换芯片,功能比较强大,这篇文章就介绍在Linux系统里如何编写一个PCF8591的驱动,完成ADC数据采集,DAC数据输出。
在我们安装完一个 Linux 系统后最为常见的任务便是网络配置了。当然,你可以在安装系统时进行网络接口的配置。但是,对于某些人来说,他们更偏爱在安装完系统后再进行网络的配置或者更改现存的设置。
Linux内核及源码学习使用陈莉君老师的书《深入分析Linux内核源代码》,内核源码版本为2.4.16。
wq = create_singlethread_workqueue("mydrv");
这个项目其实在很早之前就开始了,最初的目的是为它(Future3D)而准备的,因此最近一段时间利用晚上下班的时间以及周末的时间在完成,故很少更文。
SWIG 的全称是 Simplified Wrapper and Interface Generator,它是一个开发工具,在Android Native开发中可被用来自动生成需要的 JNI 封装器代码。
在前面章节中学习两个vpp与内核协议栈建立通信实现frr/bgp、ospf动态路由的学习案例,其中vpp和kernel通信中都使用了tun/tap网络虚拟接口来进行。本人对网络设备虚拟化了解不足,也在学习之中,如有错误,欢迎指正。下面就来学习一下vpp中tap模块。
飞凌嵌入式推出的OKT507-C作为一款广受欢迎的开发板拥有丰富的功能接口,而实际上OKT507-C开发板的CPU引脚资源是比较紧缺的,那么它究竟是如何提供如此丰富的接口资源的呢?答案就是IO扩展芯片——TCA6424A。
相信诸位学习过Linux的小伙伴对这句话不陌生吧。Linux下一切皆文件,也就是说在冯诺依曼体系下的任何东西,均可视为文件?为什么能这么说呢?
GPIO名为"General Purpose Input/Output",通用目的输入/输出,就是常用的引脚。
深度学习(DL, Deep Learning)是机器学习(ML, Machine Learning)领域中一个新的研究方向,它被引入机器学习使其更接近于最初的目标——人工智能(AI, Artificial Intelligence)。
在上篇文章中,我们已经探讨了 VxLAN 的概念和基本原理,本文就基于 Linux 对 VxLAN 做一个实践。如果有相关概念不懂的可以先看那篇文章。
ip 命令是一个新的网络命令行实用程序,用于在 Linux 系统上为网络接口分配 IP 地址或配置/更新网络配置。 它是 iproute2 软件包的一部分,并提供多项网络管理任务,例如打开或关闭网络接口、分配和删除 IP 地址和路由、管理 ARP 缓存等等。 ip命令与旧的ifconfig 命令非常相似,但它的功能要强大得多,添加了更多的功能和能力。 如何配置静态 IP 地址 Internet 协议 (IPv4) 要在 Linux 中配置静态 IP 地址, 你需要更新或编辑网络配置文件以将静态 IP 地址分
当你勤勤恳恳完成需求后,要交付你的成果时,你突然发现了一个问题,如果直接把源代码给乙方,他就可以直接进入你的代码,然后狠狠的学习再“借鉴”,甚至修改,你的头发的产物就被别人盗取了。这该如何是好?
Linux 提供了丰富的库函数,涵盖了各种领域,从文件操作到网络编程、图形界面、数学运算等。这些库函数大多数都是标准的 C 库函数,同时也包括一些特定于 Linux 系统的库。
Open source load testing tool review 2020 (k6.io)
在Linux操作系统中,网络命令是管理、监控和诊断网络问题的重要工具。本文将详细介绍Linux服务器下常用的网络命令,包括其用法、参数和示例代码。这些命令将涵盖网络连接、IP配置、端口扫描、网络性能测试等方面,帮助读者更好地理解和应用Linux网络命令。
介绍 Sunxi 平台上 TWI 驱动接口与调试方法,为 TWI 模块开发提供参考。
Linux开发者越来越多,但是仍然有很多人整不明白POSIX是什么。本文就带着大家来了解一下到底什么是POSIX,了解他的历史和重要性。
本文介绍了跨平台的概念以及实现原理,从硬件、操作系统、语言、框架等多个层面分析了跨平台的实现方式。同时,通过举例,让读者更直观地理解跨平台的真实含义。
① 用户应用程序调用 : 开发者 在 " 用户空间 “ 的 应用程序 中调用 malloc 等函数 , 申请 动态分配 ” 堆内存 " ,
Rust for Linux 这个项目的目的就是为了将 Rust 引入 Linux,让 Rust 成为 C 语言之后的第二语言。但它最初的目的是:实验性地支持Rust来写内核驱动。
香蕉派 BPI-F2P 是采用[https://www.sunplus.com/ '''Sunplus'''] 工业级芯片方案设计, 是完全按照工业级应用标准设计的开发板. 使用 Plus1(sp7021) 芯片设计,跟[[Banana Pi BPI-F2S]]采用同样主控芯片, 支持PoE网线供电功能,支持一路 RS232,一路RS485 .你可以让一款真正的工业控制网关完成你想的产品设计。
ifconfig命令已被ip命令替换。ip命令有点类似于ifconfig命令,但它更强大,附加了更多的功能。ip命令可以执行一些网络相关的任务,是ifconfig不能操作的。
.NET Core 虽然实现了跨平台,但是不可能处处使用 C# 开发,就好像没人使用SQL开发安卓APP,每种语言都有其优秀的地方和局限性。
当今有很多高级语言:Java、C#、Python、Javascript、Go等,为什么还要学C/C++呢?其实,C/C++语言无处不在,桌面操作系统(Windows、Linux、Mac)、移动操作系统(Android、iOS)、浏览器(Chrome、FireFox)、游戏引擎(Unity3D、cocos-2d)、数据库(mysql、sqlite)、高级语言的编译器和解析器、跨平台框架(QT、Flutter)等,它们的底层都是用C/C++开发。接下来,我将介绍下C/C++语言具有的四大优势。
本文通过对Linux下串口驱动的分析。由最上层的C库,到操作系统系统调用层的封装,再到tty子系统的核心,再到一系列线路规程,再到最底层的硬件操作。
电源管理(Power Management)在 Linux Kernel 中,是一个比较庞大的子系统,涉及到供电(Power Supply)、充电(Charger)、时钟(Clock)、频率(Frequency)、电压(Voltage)、睡眠/唤醒(Suspend/Resume)等方方面面。
文件I/O:文件I/O称之为不带缓存的IO(unbuffered I/O)。不带缓存指的是每个read,write都调用内核中的一个系统调用。也就是一般所说的低级I/O——操作系统提供的基本IO服务,与os绑定,特定于linix或unix平台。
在Linux下开发应用程序可以调用两种接口来实现,一种是直接调用系统调用接口,另一种是调用库函数来实现。
VXLAN是Virtual eXtensible Local Area Network的缩写,RFC 7348的标题“A Framework for Overlaying Virtualized Layer 2 Networks over Layer 3 Networks”,说明了VXLAN是一个在传统Layer 3网络上架设出来的Layer 2 overlay网络。RFC Abstract如下:
正常情况下,如果想要查看电脑的网卡IP地址或是MAC地址,直接通过界面找到网卡进行查看就有了,亦或是通过命令如linux的ifconfig得到IP等信息,那么本节教大家如何通过python的方式获取网卡的IP/MAC信息。
曾经靠着“B站最强小电视”以及号称“钢铁侠机械臂”等硬核产品出圈的稚晖君又双叒叕来整活啦!
在服务器运维中,监控系统温度是确保硬件稳定性和性能的重要环节。 过高的温度可能导致硬件故障,影响系统的正常运行。因此,掌握查看服务器温度的方法,对于每位运维工程师来说都是必备技能。本文将带领大家学习多种查看 Linux 系统温度的方法,让您的服务器时刻保持最佳状态。
前段时间有哥们在vpp群里分享了基于VPP的src/plugins/linux-cp/插件复制的一个临时插件lcpng,作者做了很多方面的验证和修改,并且后期计划合入到vpp主分支上去。本文主要基于ubuntu20.4.3lts系统搭建环境,验证一下基于lcpng插件和frr bgpd配合测试。
2021 年 4 月 14 号,一封主题名为《Rust support》的邮件出现在 LKML 邮件组中。这封邮件主要介绍了向内核引入 Rust 语言支持的一些看法以及所做的工作。邮件的发送者是 Miguel Ojeda,为内核中 Compiler attributes、.clang-format 等多个模块的维护者,也是目前 Rust for Linux 项目的维护者。
第一时间看干货文章 1 001《大话数据结构》 002《鸟哥的 linux 私房菜》 003《疯狂 android 讲义》 004《第一行代码》 005《linux 内核设计与实现》 006《驱动设计开发》 007《linux 内核解密》 008《unix 环境高级编程》 009《linux 内核设计与实现》 010《essential C++》 011《嵌入式 linux》 012《linux 设备驱动》 013《c 语言深度解剖》 014《linux 下的 c编程》 015《C Primer Pl
本文描述如何在一台机器上但在不同的命名空间中运行两个vpp的实例。命名空间之间的通信通过linux-cp插件及memif接口来完成。
前面的文章讲过了几种 Linux 虚拟网络设备:tap/tun、veth-pair、bridge,它们本质上是 Linux 系统 提供的网络虚拟化解决方案,今天要讲的 macvlan 也是其中的一种,准确说这是一种网卡虚拟化的解决方案。因为 macvlan 这种技术能将 一块物理网卡虚拟成多块虚拟网卡 ,相当于物理网卡施展了 多重影分身之术 ,由一个变多个。
不必太纠结于当下,也不必太忧虑未来,当你经历过一些事情的时候,眼前的风景已经和从前不一样了。——村上春树
摘要:程序员都知道,Linux 不是 Unix,不过二者之间确实存在关系,即 Linux 系统是从 Unix 派生出来的,而 Linux 是一个类 Unix 的操作系统。那么,二者之间具体存在哪些明显的差异呢?
它使用 xmake.lua 维护项目构建,相比 makefile/CMakeLists.txt,配置语法更加简洁直观,对新手非常友好,短时间内就能快速入门,能够让用户把更多的精力集中在实际的项目开发上。
最后,再说一点,英语非常重要。很多好的资料都是英文的,国内有些翻译本不是太好。尤其是google搜索时,学会使用英文关键词非常重要。
该文介绍了交叉编译工具链的使用,包括arm-linux-gnueabi-gcc、arm-linux-gnueabihf-gcc、arm-none-eabi-gcc、arm-none-linux-gnueabi-gcc、arm-none-linux-gnueabihf-gcc、qoriq-elf-gcc等工具的使用方法。
领取专属 10元无门槛券
手把手带您无忧上云