smarc

大聪明-PLUS3 小时前
linux·嵌入式·arm·smarc
嵌入式 Linux 初学者指南 – 第 2 部分大家好!我是大聪明-PLUS!在第一篇文章中,我们介绍了基础知识:嵌入式 Linux 是什么、它与常规发行版有何不同、它由什么组成、如何启动以及可以使用哪些工具来构建它。
大聪明-PLUS3 天前
linux·嵌入式·arm·smarc
io_uring:Linux 上的高性能异步 I/O大家好!我是大聪明-PLUS!io_uring 最初在 Linux 5.1 中引入,它显著改变了异步 I/O 的方式。与 epoll 或 AIO 等传统机制不同,io_uring 使用共享环形缓冲区在用户空间和内核之间交换请求和结果。这减少了系统调用次数,最大限度地减少了上下文切换,并实现了高吞吐量。在本文中,我们将深入探讨 io_uring 架构,解释其关键扩展,并演示如何基于它构建高性能网络服务。
大聪明-PLUS4 天前
linux·嵌入式·arm·smarc
从 C 到 C++20 协程编写方法的演变。第一部分:函数 + 宏 = 协程大家好!我是大聪明-PLUS!在我看来,协程是 C++20 标准中最难用的新特性。尽管网上有很多关于这个主题的文章(例如,一、二、三),以及大量的会议演示视频,但由于多种原因,学习 C++20 中的协程仍然面临诸多挑战。
大聪明-PLUS5 天前
linux·嵌入式·arm·smarc
3 个诊断 Linux 服务器的脚本大家好!我是大聪明-PLUS!我相信很多人都经历过服务器速度变慢和页面加载缓慢的情况。日志里没有记录任何信息,所以我们需要找到罪魁祸首。系统监控显示,CPU 没有过载,内存没有完全利用,系统响应也不太理想。
大聪明-PLUS6 天前
linux·嵌入式·arm·smarc
使用 GitLab CI/CD 为 Linux 创建 RPM 包(一)大家好!我是大聪明-PLUS!各位同事,大家好。前段时间,我们团队接到一个任务,开发一个用于与外围设备协同工作的服务,该服务将作为服务在 Linux 操作系统工作站上运行。
大聪明-PLUS6 天前
linux·嵌入式·arm·smarc
使用 GitLab CI/CD 为 Linux 构建 RPM 包(二)大家好!我是大聪明-PLUS!上一篇文章介绍了构建 RPM 包和自动化该过程的基础知识。本出版物是该系列的最后一篇,展示了现成解决方案的实际实施,包括:
大聪明-PLUS10 天前
linux·嵌入式·arm·smarc
用 C 语言实现 cat 实用程序大家好!我是大聪明-PLUS!刚开始学习 C 语言时,我对它与其他语言相比的“笨拙”感到很畏惧。一切都非常严格,需要手动控制,但这正是它吸引我的地方。感觉就像你在直接与系统对话。
大聪明-PLUS10 天前
linux·嵌入式·arm·smarc
6 个 Docker 高级功能大家好!我是大聪明-PLUS!Docker 早已不再仅仅是一个将应用程序打包到容器中的工具。如今,它是一个完整的生态系统,拥有丰富的功能,而许多开发人员甚至 DevOps 专家都对其只是略知皮毛。
大聪明-PLUS12 天前
linux·嵌入式·arm·smarc
Linux 中的 DNS 工作原理(二):各级 DNS 缓存大家好!我是大聪明-PLUS!在第一部分中,我们讨论了 Linux 中名称解析过程的工作原理——从初始请求getaddrinfo()到 IP 地址。但是,如果每个请求都需要重新发起 DNS 请求,效率会很低,并且会给系统和网络带来沉重的负载。因此,我们需要使用缓存。
大聪明-PLUS16 天前
linux·嵌入式·arm·smarc
Linux 中的 DNS 工作原理(一):从 getaddrinfo 到 resolv.conf大家好!我是大聪明-PLUS!当我们在浏览器中输入服务器名称或网站域名、执行 ping 命令或启动任何远程应用程序时,操作系统必须将这些名称转换为 IP 地址。这个过程称为域名解析。乍一看,它可能很简单,但其背后却隐藏着一个多层机制。
大聪明-PLUS21 天前
linux·嵌入式·arm·smarc
从头开始为 ARM 创建 Ubuntu 映像大家好!我是大聪明-PLUS!当开发刚刚开始时,通常还不清楚哪些包将进入目标 rootfs。换句话说,现在就使用 LFS、buildroot 或 yocto(或其他任何系统)还为时过早,但现在是时候开始了。对于那些资金充裕的人来说(我的试点样品上有 4GB eMMC),解决方案是向开发人员分发一个发行版,这样他们就可以快速交付目前缺少的所有内容。这样,我们就可以随时收集软件包列表,并为目标 rootfs 创建列表。
大聪明-PLUS21 天前
linux·嵌入式·arm·smarc
QEMU:如何组织与 I2C 设备的透明交互大家好!我是大聪明-PLUS!在嵌入式软件开发中,高效的硬件虚拟化正变得越来越重要,它显著提高了开发的速度和灵活性。无需焊接电路板、等待硬件到货,也无需在每个芯片的测试台之间带着示波器奔波。只需在笔记本电脑上运行虚拟机即可。
大聪明-PLUS22 天前
linux·嵌入式·arm·smarc
关于新的 Linux 内核接口 gpio uapi 的说明大家好!我是大聪明-PLUS!从内核版本 4.6-r1 开始,一个用于与内核 gpio 子系统交互的新接口已可用。现在有三种官方方法可以使用 gpio 并从中接收中断。没有必要详细讨论这个子系统的需求;对于少数人来说,这是一项严格的日常工作,而对于其他人来说,则是一项有趣的爱好。对于所有这些人来说,内核都提供了一种新的交互方式。
大聪明-PLUS23 天前
linux·嵌入式·arm·smarc
嵌入式Linux简介—第二部分(共3部分)大家好!我是大聪明-PLUS!在这一系列简短的文章中,我将尝试阐明构建嵌入式 Linux 设备的主题,从组装引导加载程序到为单独开发的外部模块编写驱动程序,并实现所有中间过程的自动化。
大聪明-PLUS24 天前
linux·嵌入式·arm·smarc
Linux IIO研究(二)大家好!我是大聪明-PLUS!这里我要特别强调一下为节点设置标签的功能,如果您有许多类似的设备,此功能尤其适用。您可以随时在每个 iio:device 的 of_node 目录中查看节点中设置的当前值 - /sys/bus/iio/devices/iio\:device0/of_node/。
大聪明-PLUS24 天前
linux·嵌入式·arm·smarc
GPIO 也是一个接口,还有 QEMU GPIODEV 和 GUSE大家好!我是大聪明-PLUS!曾经有人问我:“我该如何与它交互?” 这个问题主要涉及 QEMU 的 I2C 接口,而不是 GPIO。有一段时间,我痴迷于在 QEMU 中与设备进行“透明”交互的想法——使用与真实设备相同的库和工具。还有什么更好的选择呢?不是一些通过 QEMU 发送命令的脚本,而是 libgpiod 库中熟悉且一致的 gpioset/gpioget 或内核提供的 tools/gpio 工具。
大聪明-PLUS1 个月前
linux·嵌入式·arm·smarc
TCP/IP 协议族—理论与实践(一)大家好!我是大聪明-PLUS!网上有大量关于基于 TCP/IP 协议栈的网络如何运作以及如何编写具有网络功能的计算机程序的资料。在讨论计算机网络时,人们通常会深入研究通过网络传输的数据的物理基础和结构,而网络编程主要关注互联网套接字。 但在学习和研究时,你希望做更多的事情,例如,尝试使用网络协议套件。许多网络协议是在操作系统内核中实现的,更改它们可能具有挑战性,因为这需要编写操作系统驱动程序的技能。但是,使用专门的库可以让你在用户空间的底层使用协议。 在撰写本文时,我编写了一个小应用程序,它将作为理解计算
大聪明-PLUS1 个月前
linux·嵌入式·arm·smarc
TCP/IP 协议族—理论与实践(二)大家好!我是大聪明-PLUS!要在 TCP/IP 网络上运行,必须配置主机。至少,您必须指定其 IP 地址和子网掩码。您可能还需要指定网关地址和 DNS 服务器地址。DHCP 协议允许主机自动从网络获取这些信息。 使用此协议的方法多种多样,但我们将考虑主机成功获取 IP 地址的基本场景,该场景包含四条消息的交换。
大聪明-PLUS1 个月前
linux·嵌入式·arm·smarc
如何从 USB 闪存驱动器安装 Debian Linux大家好!我是大聪明-PLUS!在本文中,您将学习如何创建可用于安装 Debian Linux 的 USB 闪存驱动器。
大聪明-PLUS1 个月前
linux·嵌入式·arm·smarc
从技术史看:Unix 从何而来大家好!我是大聪明-PLUS!如今,许多人认为“Unix”和“Linux”是同一个东西。但从 2024 年起,对于大多数我们认为是“Unix”和“Linux”的发行版来说,情况基本如此。