
GNU/Linux
文章平均质量分 80
GNU和Linux相关内容
夜流冰
记录和分享可以记录和分享的一些东西
展开
-
GNU/Linux - make 60s介绍
可以在dependency list中添加更多的源文件,也可以添加更多的rule,可以创建一个名为all的任务, 一般作为默认存在的任务,来执行所有rule。make命令会检查hello.c文件是否变化,即比二进制文件hello还新,来决定是否执行这个rule,即下面的编译操作,来生成二进制文件。第一行顶格写是一个rule,第一个是要生成的target的文件名,冒号后面是文件名,表示依赖于hello.c文件。使用make工具,需要借助Makefile,就是用来描述如何build你的程序的文本文件。原创 2024-12-02 22:43:13 · 456 阅读 · 0 评论 -
Yocto - 使用Yocto开发嵌入式Linux系统_13 创建定制层
例如,如果一台机器支持 Wi-Fi,但发行版不支持,那么操作系统所使用的应用程序在构建时就会禁用 Wi-Fi,从而导致系统不支持 Wi-Fi。但必须记住,所选结构必须与机器相匹配--例如,当考虑使用基于 i.MX 的机器时,该机器使用 U-Boot 从 SD 卡启动,SD 卡有两个分区,一个用于引导文件,另一个用于 rootfs。CORE_IMAGE_EXTRA_INSTALL 是一个变量,当我们继承 core-image 类时,应使用该变量在镜像中包含额外的软件包,从而方便镜像的创建。原创 2024-11-15 22:28:29 · 1058 阅读 · 0 评论 -
GNU/Linux - tar命令
在我的Ubuntu22.04版本的环境里,运行此命令输出Manpage。找不到本地info文档,缺省输出就是Manpage。Help里的信息也很全,要么说最好的文档就是代码。Help输出的就是代码里的信息。读取本地的manpage文档,输出简要帮助信息。这么一个简单命令,上面的在线手册却是非常的长。很多文档其实也是通过提取代码里的注释而生成的。Man程序自己输出的提示信息。原创 2024-11-14 21:40:02 · 1044 阅读 · 0 评论 -
GNU/Linux - /proc/sys/vm/drop_caches
总之,虽然 /proc/sys/vm/drop_caches 提供了在 Linux 中手动释放各种缓存的方法,但应谨慎使用,并主要用于测试或调试目的。/proc/sys/vm/drop_caches 是 Linux 内核提供的一种机制,用于手动释放内存中的页面缓存、目录项缓存和 inodes。/proc/sys/vm/drop_caches 是 Linux 中的一个特殊文件,允许用户释放系统内存中的各种缓存。2. /proc/sys/vm/drop_caches 中的值会自动重置为 0。原创 2024-11-09 23:18:35 · 773 阅读 · 0 评论 -
GNU/Linux - /proc/sys/vm/overcommit_memory
proc/sys/vm/overcommit_memory "是一个 Linux 内核参数,用于控制系统处理内存分配请求的方式。该参数对决定进程请求内存时内核的行为至关重要。vm.overcommit_kbytes: overcommit_ratio 的替代参数,指定以千字节为单位的超量分配限制。3. 模式 2:提供最高级别的内存分配保证,但可能会限制某些应用程序的性能。- 在这种模式下,无论当前内存使用情况如何,内核总是允许内存分配请求。- 内核通常允许轻微的超量分配,但拒绝明显的地址空间超量分配。原创 2024-11-09 12:39:50 · 957 阅读 · 0 评论 -
Yocto - 使用Yocto开发嵌入式Linux系统_12 开发定制层
图层优先级决定了包含的顺序,因此优先级最高的图层中的 .bbappend 文件会首先被附加,然后才是其他文件。此外,我们应该在不同的层中组织元数据,而不是在 Poky 层中创建自定义项目环境、更改配方和修改文件。由于 Poky 源代码也被分割成不同的层,因此组织得越分离,就越容易在未来的项目中重复使用这些层。例如,要在我们的项目中加入 meta-oe(meta-openembedded 资源库中的多个元层之一),我们可以更改配置文件的内容或使用 BitBake 命令行。不过,我们首先需要获取该层的源代码。原创 2024-11-03 22:17:04 · 673 阅读 · 0 评论 -
Yocto - 使用Yocto开发嵌入式Linux系统_11 调试Yocto项目
Python 中的日志功能由 BitBake 直接处理,可以在控制台中看到,并存储在 build/tmp/log/cooker/ 中的执行日志中。在 Shell 脚本中使用日志功能时,信息会输出到一个单独的任务日志文件,该文件位于 build/tmp/work////temp 中。Yocto 项目的核心是处理软件包。在这种情况下,我们可以使用 BitBake 在主机中生成的多个日志文件来帮助追踪相关任务的执行路径。原创 2024-10-28 21:52:33 · 1363 阅读 · 0 评论 -
Yocto - 使用Yocto开发嵌入式Linux系统_10 使用Yocto项目进行开发
在嵌入式开发中,工具链通常由跨平台工具或在一种体系结构上执行的工具组成,然后生成二进制文件供另一种体系结构使用--例如,在 x86-64 兼容机器上运行的 GCC 工具为 ARM 机器生成的二进制文件就是一个交叉编译器。在本章中,我们将了解如何在目标机内部设置开发环境,以及如何使用标准 SDK 和可扩展 SDK 工具,这些工具可以帮助我们在目标机之外开发应用程序。因此,所有 devtool 命令,包括我们将在下文中使用的命令,都可以在 Yocto Project 环境中使用。这些被称为基于映像的 SDK。原创 2024-10-19 21:58:27 · 1101 阅读 · 0 评论 -
Yocto - Error: version-going-backwards
因为我的Yocto环境也并没有修改package的版本,从前面的提示信息看,就是revision的信息格式变了。每个package都有自己的版本,使用yocto构建package,需要对package的版本进行管理,保证使用合适的发布版本来构建相应的package,这包括package之间的依赖关系和package自身的兼容性等要求。对于构建过程,包括平时代码的编译,一般都是有可以配置的ERROR或Warning开关,选择或屏蔽自己需要的错误或警告。然后重新运行命令,就没有问题了。原创 2024-10-19 11:33:31 · 611 阅读 · 0 评论 -
GNU/Linux - Info和Man的区别
总之,man 命令从主要存储在 /usr/share/man 中的结构化手册页面中获取数据,而 info 命令则从 $INFOPATH 变量指定的目录中查找 Info 格式的文档。每种命令都使用不同的数据格式和结构,man 命令的页面更简洁、更有条理,而 info 命令的文件通常更丰富、更相互关联。总之,虽然 man 和 info 命令的目的都是为 Linux 中的命令和实用程序提供文档,但它们在结构、内容深度、导航方法和整体可用性方面都有很大不同。它为命令和实用程序提供简明的参考资料。原创 2024-10-16 12:30:12 · 743 阅读 · 0 评论 -
GNU/Linux - 宏处理工具M4
宏可以是内置的,也可以是用户自定义的,并且可以接受任意数量的参数。除了进行宏扩展外,m4 还具有内置函数,可用于包含已命名文件、运行 UNIX 命令、进行整数运算、以各种方式处理文本、递归等......m4 既可用作编译器的前端,也可单独用作宏处理器。GNU M4 正在积极开发中,2.0 版本将有许多新功能,如更好的输入控制、多精度运算和可加载模块。例如,您可以尝试查看 /usr/share/doc/m4/,或在 shell 提示下使用 info m4。例如,要订阅 bug-m4 列表,您可以向原创 2024-10-13 22:07:18 · 1032 阅读 · 0 评论 -
工程师 - FSF和FOSS
一位研究自由软件社区开发者使用的实践和方法的研究人员认为,这些问题与开发者的政治观点无关,因此他使用了 “FLOSS ”一词,意为 “Free/Libre and Open Source Software”,以明确避免两个政治阵营之间的偏好。为了强调 “free software ”指的是自由而不是价格,我们有时会写或说 “free(libre)软件”,并加上法文或西班牙文的自由一词。2. 自由软件:“Libre ”是法语和西班牙语中 “自由 ”的意思,特别是为了避免与英语单词 “free ”产生混淆。原创 2024-10-13 20:29:56 · 758 阅读 · 0 评论 -
GNU/Linux - Savannah项目
Savannah 项目是自由软件基金会(FSF)开发和维护的自由软件项目集中托管平台。它专门与 GNU 项目绑定,但也托管非 GNU 的自由软件项目。Savannah 提供各种工具和服务,帮助开发人员协作和管理他们的自由软件项目。Savannah 的目标是成为开发、维护和发布官方 GNU 软件的中心点。Savannah对自由软件项目的关注符合 GNU 项目和 FSF 的原则,即强调用户自由和推广 FSF 批准的开放源码许可证。4. 网站托管: 项目可在 Savannah 服务器上托管自己的网站。原创 2024-10-13 19:28:56 · 1067 阅读 · 0 评论 -
Yocto - 使用Yocto开发嵌入式Linux系统_09 深入了解BitBake元数据
在本书的这一部分,我们已经知道了如何生成图像和软件包,以及如何使用软件包源--基本上,这就是我们简单使用 Poky 所必须知道的一切。它们是最常用的元数据,因为它们为配方定义了变量和任务。图 8.27 中的第 1 行指示 BitBake 使用 inherit autotools.bbclass,提供了默认任务,这些任务在大多数基于 Autoconf- 或 Automake 的项目中运行良好。但是,C 的值只有在使用时才赋值,然后设置为 newValue,因为 A 的值已在第 3 行设置。原创 2024-10-13 19:10:45 · 1024 阅读 · 0 评论 -
Yocto - Meta-data中的PATCHTOOL变量介绍
Yocto 支持多种补丁管理工具,例如 `patch`、`quilt` 和 `git`,每种工具都有不同的特性和用例。虽然你可以使用 quilt、git 或基本的补丁命令,但 Yocto 推荐使用 quilt 作为默认的补丁工具,因为它提供了一种更强大、更灵活的方式来管理源代码的补丁。- Git 当源代码在 Git 仓库中管理时,它是理想的工具,因为它允许补丁应用,并支持完整的版本控制、提交历史和回溯。- 不使用补丁,而是使用`git`命令(`git apply`、`git am`等)来应用更改。原创 2024-10-11 10:03:49 · 900 阅读 · 0 评论 -
Yocto - 使用Yocto开发嵌入式Linux系统_08 掌握软件包相关功能
PR 服务是 BitBake 的一部分,每当 BitBake 检测到任务中的校验和发生变化时,它就会在无需人工交互的情况下递增 PR。例如,如果我们的 PR = “r34”,在随后的 PR 服务交互后,PR 值会变成 r34.1、r34.2、r34.3,依此类推。然后,BitBake 会为每个任务使用的信息生成校验和,包括来自其他任务的依赖关系。本章介绍了打包的基本概念,它在 Poky 和 BitBake(软件包版本控制)中扮演着重要角色,以及这在重建软件包和软件包源时如何影响 Poky 的行为。原创 2024-10-07 16:16:57 · 1239 阅读 · 0 评论 -
GNU/Linux - Ubuntu中的UFW介绍
因此,除了 UFW 规则中指定的三个端口外,其他所有端口都是隐身的,这正是我们想要的。默认情况下,UFW 是禁用的。当你打开 UFW 时,它会使用一套默认的规则(配置文件),这对普通家庭用户来说应该没问题。简而言之,所有的 “传入 ”都会被拒绝,但也有一些例外情况,以方便家庭用户。根据我们的 UFW 规则,除了 22(SSH)、80(HTTP)和 443(HTTPS)之外,所有端口都必须隐身。检查 ufw 的状态会告诉你 ufw 是启用还是禁用,还会列出当前应用于 iptables 的 ufw 规则。原创 2024-10-07 13:26:55 · 1081 阅读 · 0 评论 -
Yocto - 使用Yocto开发嵌入式Linux系统_06 掌握Bitbake工具
Poky 在类中提供了丰富的预定义任务,我们应该尽可能使用这些任务,例如,当配方继承 autotools 类时,它提供了 do_configure、do_compile 和 do_install 任务的已知实现。在每个配方的构建过程中,BitBake 会调度、执行和检查许多由类提供的任务,从而形成我们用于构建配方的框架。BitBake 为 Git 提供了坚实的支持,在运行 do_fetch 任务并在 SRC_URI 变量开头找到 git:// URL 时,就会使用 Git 后端。下图是该变量内容的示例。原创 2024-10-05 10:13:44 · 1767 阅读 · 0 评论 -
Yocto - 使用Yocto开发嵌入式Linux系统_07 构建使用的临时文件夹
封装系统根目录: 交叉编译所需的工件,如库、头文件和其他文件,会被复制到 build/tmp/work//recipe-sysroot 和 build/tmp/work//recipe-sysroot-native,有时还会被修改。recipe-sysroot-native 目录包括在构建过程中主机系统使用的构建依赖项。* core2-64-poky-linux: 该目录包含基于 x86-64 的目标常用软件包的工作编译目录,这些软件包使用了针对 core2-64 的优化调整。原创 2024-10-04 22:50:34 · 980 阅读 · 0 评论 -
GNU/Linux - tarball文件介绍介绍
这需要使用额外的压缩算法,如 `gzip`、`bzip2` 或 `xz`,它们通常与 `tar` 结合使用。总之,压缩包是使用 “tar ”命令创建的文件,通常使用 “gzip ”或 “bzip2 ”等附加算法进行压缩。因此,“tar 包 ”实质上是指用 `tar` 命令将文件打包成一个归档文件的集合。例如,许多开源应用程序的源代码包都是以`.tar.gz`或`.tar.bz2`文件的形式提供的。这会创建一个名为 `archive.tar` 的文件,其中包含 `directory/` 的内容。原创 2024-10-03 08:15:07 · 1043 阅读 · 0 评论 -
Shell参考 - grep命令
比如:grep -in "success" /var/log/*.log。比如:grep "text" file1 file2 file3。1,最后指定文件名的话,可以使用通配符。原创 2024-10-02 22:26:22 · 379 阅读 · 0 评论 -
Yocto - 使用Yocto开发嵌入式Linux系统_05 认识Bitbake工具
接下来,在第 9 行 BBFILE_PATTERN_yocto,我们定义了匹配所有以 LAYERDIR 变量开头的路径的规则,以识别属于 yocto 集合的元数据。在本章中,我们了解了元数据、元数据集合概念以及 conf/layer.conf 的重要性,这些都是理解 Yocto 项目的基础。此外,我们还将更好地了解 BitBake 所管理的任务,下载所有需要的源代码,构建和生成软件包,并了解这些软件包如何与生成的映像相匹配。层与层之间的依赖关系至关重要,因为它可以确保所有需要的元数据都可以使用。原创 2024-10-02 09:56:35 · 1295 阅读 · 0 评论 -
Yocto - 使用Yocto开发嵌入式Linux系统_04 使用Toaster来创建一个image
既然我们已经知道了如何在 Poky 中使用 BitBake 构建图像,那么接下来我们就来学习如何使用 Toaster 构建图像。我们将重点介绍 Toaster 最直接的使用方法,并介绍它的其他功能,让你了解它的能力。然后,单击 “图像配方”选项卡,选择要构建的图像。* 本地使用: 我们可以将 Toaster 作为本地实例运行,适合单用户开发,提供 BitBake 命令行的图形界面和一些构建信息。按照第 2 章 “构建基于 Poky 的系统 ”中的相同步骤,我们将构建 QEMU x86-64 仿真的映像。原创 2024-10-02 08:34:22 · 867 阅读 · 0 评论 -
Yocto - build/conf/local.conf文件
这意味着在开始联编时,联编会使用网络来检查工件,这同样会减慢联编速度,但也会加快联编速度,因为如果缓存中存在工件,就无需联编。默认情况下,将联编 libsdl2-native,如果要使用主机的 libSDL 而不是使用libsdl2-native联编出来的最小版libsdl,请取消下面的 ASSUME_PROVIDED 行的注释。该变量指定了构建 SDK 项目的体系结构,这意味着您可以为运行构建的机器以外的体系结构构建 SDK 软件包(例如,在 x86_64 主机上构建 i686 软件包)。原创 2024-09-28 21:57:02 · 775 阅读 · 0 评论 -
Yocto - 使用Yocto开发嵌入式Linux系统_03 基于Poky制作第一个系统
更多信息,请参阅《Yocto 项目开发任务手册》(https://docs.yoctoproject.org/4.0.4/dev-manual/start.html#setting-up-to-use-cross-platforms-crops)中的 “设置使用 CROss PlatformS (CROPS)” 部分。build/conf/local.conf 文件中的注释是极好的文档,也是可能的变量及其默认值的参考。它们将为我们提供一些使用 Poky 的经验,并让我们领略到它的能力。原创 2024-09-23 21:47:19 · 1968 阅读 · 0 评论 -
GNU/Linux - Wayland, Weston and Sato
它演示了 Wayland 的工作原理,并提供了运行 Wayland 应用程序的基本环境。总之,Weston 在 Wayland 生态系统中发挥着至关重要的作用,有助于推动和促进在 Linux 环境中采用 Wayland。4. Wayland 集成: 作为 Wayland 合成器,它能促进应用程序与显示服务器之间的通信,并遵守 Wayland 协议。2. 性能: 它减少了渲染的开销,允许客户端直接与合成器通信,从而带来更流畅的图形和更低的延迟,从而提供更高的性能。它还可以定制和扩展,是开发人员的灵活工具。原创 2024-09-22 20:02:16 · 1166 阅读 · 0 评论 -
Yocto - 使用Yocto开发嵌入式Linux系统_02 认识 Yocto 项目
此外,它还提供了一种机制,用于构建和组合成千上万的分布式开源项目,形成一个完全可定制的、完整的、连贯的 Linux 软件栈。一个微妙但重要的好处是,它大大提高了确定性,减少了对构建主机的依赖,同时提高了首次构建的成功率。Yocto 项目是一个开源协作项目,帮助开发人员创建基于 Linux 的定制系统,这些系统专为嵌入式产品而设计,与产品的硬件架构无关。全球数以千计的开发人员发现,Yocto Project 在系统和应用程序开发,存档和管理收益,以及用于速度、占用空间和内存利用的定制方面都具有优势。原创 2024-09-21 07:57:43 · 1546 阅读 · 0 评论 -
Yocto - 使用Yocto开发嵌入式Linux系统_01 前言
你将深入了解 Poky 和 BitBake,探索构建 Linux 子系统项目的实际用例,使用可用于嵌入式 Linux 的 Yocto Project 工具,并揭开 SDK、配方工具和其他工具的秘密。在第 3 版中,除了全面更新以反映 Yocto 项目长期支持版本 4.0(代号为 Kirkstone)的变化外,本书还根据前几版读者的反馈意见进行了彻底修改,并扩展了内容,以方便读者理解与 Yocto 项目相关的复杂概念。然而,本书由活跃的社区成员撰写,采用了实用而直接的方法,是你学习曲线和产品项目的垫脚石。原创 2024-09-19 22:13:18 · 1517 阅读 · 0 评论 -
GNU/Linux - Open函数使用的O_CLOEXEC flag
在 Linux 中,“O_CLOEXEC ”标志与 “open ”系统调用一起使用,用于指定在使用 “exec ”系列函数(如 “execve”、“execl ”等)执行新程序时,“open ”返回的文件描述符应自动关闭。- 文件描述符和 `exec`: 默认情况下,当进程调用 `exec` 函数时,进程中打开的文件描述符在新程序中仍保持打开状态。在需要确保文件描述符不会泄漏到使用 `exec` 创建的子进程中时,使用 `O_CLOEXEC` 是一种常见的最佳做法。原创 2024-09-04 12:03:34 · 590 阅读 · 0 评论 -
GNU/Linux - 进程关联的控制终端
在 Linux 系统上打开一个终端(如 `bash` 或 `sh`)并运行一个命令(如 `vim`、`cat` 或任何脚本)时,该终端就会成为 shell 进程和从该 shell 启动的任何进程的控制终端。在类 Unix 操作系统中,控制终端是与进程组相关联的终端设备,它控制着进程与终端输入和输出的交互。- 在这里,你输入命令的终端是 `vim` 进程的控制终端。- 如果编写的程序要打开终端设备(如串行端口),但又不想让终端设备成为进程的控制终端,则可以使用 `O_NOCTTY` 标志。原创 2024-09-02 17:23:58 · 1144 阅读 · 0 评论 -
GNU/Linux - GPIO in the kernel: an introduction
可以使用 gpio_unexport()将 GPIO 从 sysfs 中移除,或使用 gpio_export_link()赋予其另一个名称。这些函数有一些变体:gpio_request_one() 可用于设置 GPIO 的初始配置,而 gpio_request_array() 只需一次调用即可请求并配置一整套 GPIO。这两个函数的返回值都是零或负的错误数字。我们假设(几乎在所有情况下都是正确的),任何错误都会在调用 gpio_direction_input() 时发现,因此检查该函数的返回值非常重要。原创 2024-09-02 13:15:37 · 1022 阅读 · 0 评论 -
GNU/Linux - Linux kernel memory access
在检查是否有能力写入用户缓冲区(通过 access_ok)后,内部函数 __copy_to_user 将被调用,该函数又会调用 __copy_from_user_inatomic (在 ./linux/arch/x86/include/asm/uaccessXX.h 中,其中 _XX 是 32 或 64,取决于体系结构)。请注意,每个进程都可以将共享内存区域映射到各自地址空间中的不同地址。请注意,如图所示,一个进程可能有一个很大的地址空间,但它是稀疏的,这意味着地址空间的小区域(页)通过页表指向物理内存。原创 2024-08-31 23:20:25 · 1618 阅读 · 0 评论 -
GNU/Linux - RSYSLOG
etc/rsyslog.conf 是 rsyslog 的默认配置,要添加任何用户配置,需要指定 rsyslog.d 目录,并在默认配置中添加该目录,以便从该目录加载所有配置文件。8月 25 21:02:47 ubuntu-yocto rsyslogd[895]: [origin software="rsyslogd" swVersion="8.2112.0" x-pid="895" x-info="https://www.rsyslog.com"] rsyslogd was HUPed。原创 2024-08-27 08:26:25 · 1254 阅读 · 0 评论 -
GNU/Linux - GNU Software之ncurses
它使用 terminfo 格式,支持焊盘、颜色、多重高亮显示、表单字符和功能键映射,并具有 SVr4 curses 与 BSD curses 相比的所有其他增强功能。1995 年 6 月中旬,4.4 BSD curses 的维护者宣布他认为 4.4 BSD curses 已经过时,并鼓励 BSD/OS、FreeBSD 和 NetBSD 等 unix 版本的维护者改用 ncurses。所以,menuconfig操作界面,文本格式的控件,在终端显示,就需要使用ncurses库。原创 2024-08-17 16:05:48 · 732 阅读 · 0 评论 -
GNU/Linux - Kernel Logging
随后,内核环形缓冲区中的信息会存储到系统永久存储的日志文件中。printk 中的四个值分别表示:console_loglevel、default_message_oglelvel、minimum_console_loglevel 和 default_console_loglevel。正如 "什么是内核环形缓冲区 "一文所述,内核环形缓冲区收集所有日志级别的内核信息。要从内核代码中获取一些调试信息,最简单的方法就是使用内核中的 printf 等效函数--printk 函数及其派生函数--打印出各种信息。原创 2024-08-17 16:04:21 · 980 阅读 · 0 评论 -
GNU/Linux - systemd介绍
其他部分包括一个日志守护进程,用于控制主机名、日期、地域等基本系统配置的实用程序,维护登录用户、运行中的容器和虚拟机、系统账户、运行时目录和设置的列表,以及管理简单网络配置、网络时间同步、日志转发和名称解析的守护进程。systemd 提供了强大的并行化能力,使用套接字和 D-Bus 激活来启动服务,按需启动守护进程,使用 Linux 控制组跟踪进程,维护挂载点和自动挂载点,并实现了精心设计的基于事务依赖关系的服务控制逻辑。它提供了一个系统和服务管理器,作为 PID 1 运行,并启动系统的其他部分。原创 2024-08-17 15:45:09 · 1045 阅读 · 0 评论 -
Shell参考 - Linux Shell 训练营
Bash Lib 是一个原子化的公共库,你可以根据自己的实际需要,引入所需的公共库分组,使用相应的内容,降低整个项目的大小。Bash Shell Function Library 是一个短小精炼的Bash 公共库,他提供了诸如数组操作、命令执行、文件管理、日志记录、信息提醒、网络检测、字符操作、时间操作、变量操作等功能,帮助运维工程师快速完成自己的脚本编写工作。例:有一个 shell 脚本,用于处理一个文件中特定日期的数据,并将结果输出到另一个文件中。原创 2024-08-17 15:01:55 · 918 阅读 · 0 评论 -
GNU/Linux - memtool使用
比如在imx-image-core.bb中,IMAGE_INSTALL += "imx-test" ,在build出来的image文件里就会包含这些工具。烧写到板子上,在文件系统中找到工具就可以使用。在Yocto中为NXP的i.MX系列芯片构建Linux系统时,可以加入一些实用工具,比如直接操作内存的memtool。这些工具在imx-test包中,比如imx-test_git.bb里。或者可以使用预先编译好的二进制工具,copy到板子里来运行也可以。默认读取的是32bit,4字节内容。原创 2024-08-10 20:05:04 · 562 阅读 · 0 评论 -
GNU/Linux - copy_{to,from}_user: 用户和内核空间的内存互拷贝
"#include ", 这样使用头文件的话,是low-level的,架构依赖(architecture-specific)的头文件,提供了相关功能的具体实现, 这个一般是通过其他头文件来包含使用,开发者一般不直接包含此头文件。在内核编程中,正确使用 copy_{to,from}_user(复制_{to,from}_用户)对于维护系统稳定性和安全性至关重要。这两个函数的底层由相应架构提供的接口来实现:raw_copy_{to,from}_user()。原创 2024-08-09 16:41:14 · 535 阅读 · 0 评论 -
工程师 - LZO压缩算法
使用LZO的最大好处,是速度优势,在某些使用情形下,压缩比率相差不大,但性能很重要时,比如解压时间影响很大时,LZO是个不错的选择。LZO对于较长的匹配数据以及较长的非匹配文字序列有专门的处理,这样对于高度冗余的数据能够取得很好的效果,并且对于不可压缩的数据也能得到可以接受的效果。* LZOP的扩展:LZOP基于LZ77的思想,但在实现上进行了优化和扩展,以提高压缩和解压缩的效率。* 快速解压:LZOP在解压缩过程中表现出较高的速度,使得在需要快速访问压缩数据的应用场景中非常有用。原创 2024-08-04 12:52:53 · 784 阅读 · 0 评论