- 博客(164)
- 收藏
- 关注
原创 `.o`、`.a`、`.so`、`.dll` 文件后缀
o:编译后的目标文件,需要进一步链接。.a:静态库,多个目标文件的集合,编译时嵌入到可执行文件中。.so:动态库,Linux 系统下使用,运行时加载。.dll:动态库,Windows 系统下使用,运行时加载。这些文件类型在不同操作系统和编译模型中具有不同的用途,但它们的核心作用都是为程序提供可复用的代码模块。
2024-09-06 15:15:40 456
原创 【踩坑日记】移植 alsa-utils 到开发板出现 /bin/amixer: line 5: syntax error: unexpected “)“ 的解决方案
出现如下错误信息:/ # amixer --help/bin/amixer: line 5: syntax error: unexpected ")"
2024-08-23 17:56:17 974
原创 【踩坑日记】编译安装alsa-lib时出现 [/usr/bin/ld: unknown architecture of input file `control/.libs/libcontrol.a(]
编译安装alsa-lib时出现:collect2: error: ld returned 1 exit statusmake[2]: *** [Makefile:493:libasound.la] 错误 1make[2]: 离开目录“/home/witheart/linux/tool/alsa-lib-1.2.2/src”make[1]: *** [Makefile:553:all-recursive] 错误 1make[1]: 离开目录“/home/witheart/linux/tool/als
2024-08-22 21:04:17 477
原创 Linux 中断处理与内核线程化——以触摸屏中断为例
本文探讨了 Linux 中断处理的传统模型与中断线程化的理念,以及在触摸屏驱动中为何使用线程化的中断处理。
2024-08-21 23:59:55 782
原创 【学习日记】【第五十二章 Linux非阻塞IO实验】【流程图】——正点原子I.MX6U嵌入式Linux驱动开发
本文主要是笔者根据《正点原子I.MX6U嵌入式Linux驱动开发》中 “第五十二章 Linux阻塞和非阻塞IO实验” 的程序绘制的流程图,该程序使用非阻塞IO实现了和五十一章实验同样的功能,并对函数流程进行了分析。
2024-08-17 19:12:42 650
原创 Linux I/O 多路复用机制详解
本文将详细解释文件描述符、文件描述符集合,以及 `select()` 和 `poll()` 的底层工作原理,以帮助理解 Linux 系统的 I/O 多路复用机制。
2024-08-17 17:36:07 987
原创 【学习日记】【第五十二章 Linux阻塞IO实验】【流程图】——正点原子I.MX6U嵌入式Linux驱动开发
本文主要是笔者根据《正点原子I.MX6U嵌入式Linux驱动开发》中 “第五十二章 Linux阻塞和非阻塞IO实验” 的程序绘制的流程图,该程序使用非阻塞IO实现了和五十一章实验同样的功能,并对函数流程进行了分析。
2024-08-17 14:23:53 989
原创 【学习日记】【第五十一章 Linux中断实验】【流程图】——正点原子I.MX6U嵌入式Linux驱动开发
本文主要是笔者根据《正点原子I.MX6U嵌入式Linux驱动开发》中 “第五十一章 Linux中断实验” 的程序绘制的流程图,方便理解中断和定时器的使用。
2024-08-16 16:13:42 675
原创 Linux 驱动开发究竟在开发什么?
通过本文的各个部分,可以清晰地看到 Linux 驱动开发在系统架构中的重要性。应用程序、C 库、系统调用和驱动程序之间的协作,使得用户能够方便地控制硬件设备,实现各种功能。Linux 驱动开发着眼于硬件和操作系统内核之间的驱动程序层,当然,内核配置与编译、引导加载程序开发、根文件系统构建等内容也是必不可少的。
2024-08-06 17:27:41 1234
原创 Linux系统中的两个核心进程:`init`和`kthreadd`
本文详细对比了Linux系统中的两个核心进程:`init`和`kthreadd`,并解释了用户空间进程与内核线程之间的区别。
2024-08-04 10:31:40 849
原创 cgroup:Linux的资源控制机制
cgroup 是什么:cgroup 是Linux内核提供的机制,用于限制、记录和隔离进程组的资源使用。主要功能:资源限制、优先级控制、资源隔离和资源监控。层次结构:cgroup 采用树状层次结构,便于分层管理进程。子系统:cgroup 支持多个子系统,每个子系统负责管理一种资源。示例:通过命令行创建和管理 cgroup,或者使用systemd集成管理。
2024-08-04 10:13:19 848
原创 什么是 IDR —— Linux 内核中的一种整数管理机制
IDR(ID Radix Tree)是 Linux 内核中的一种整数管理机制,用于将整数 ID 与指针关联起来。IDR 提供了一种高效的方式来分配和管理唯一的整数 ID,并将这些 ID 映射到相应的指针。在 Linux 内核中,整数 ID 是用于唯一标识各种系统资源或对象的数字。通过将整数 ID 与指针关联,可以快速、高效地管理和访问内存中的资源或对象。这种机制简化了内核的资源管理过程,提高了系统的性能和可靠性。
2024-08-03 17:59:15 1462
原创 VFS(虚拟文件系统)是什么,有真实的文件系统吗?
虚拟文件系统(VFS)是操作系统中的一个抽象层,用于统一不同文件系统的接口,提供一致的文件操作方式。真实的文件系统,如 ext4、NTFS 和 FAT32,则是具体的文件系统实现,负责实际的数据存储和管理。通过 VFS,操作系统能够以透明和统一的方式访问各种不同的文件系统。
2024-08-03 17:11:43 1423
原创 【学习日记】静态库与动态库的区别及使用指南
静态库是一组预编译的对象文件的集合,这些对象文件在编译期间被链接到程序中。静态库通常具有.a扩展名(在 Unix 系统上)或.lib扩展名(在 Windows 系统上)。动态库是在程序运行时加载的库。动态库通常具有.so扩展名(在 Unix 系统上)或.dll扩展名(在 Windows 系统上)。静态库:在编译期间被链接到程序中,生成的可执行文件包含库代码。动态库:在程序运行时加载,生成的可执行文件依赖外部库文件。
2024-08-03 11:40:51 1061
原创 理解 Unix/Linux 中的 Terminal、Shell、TTY 和 Console
在 Unix 和 Linux 系统中,有一些术语常常让人困惑,比如 "terminal"、"shell"、"tty" 和 "console"。本文试图通过通俗易懂的语言来解释这些概念,并结合一些历史背景,帮助大家更好地理解它们。
2024-07-31 22:26:50 1610 1
原创 【学习日记】U-Boot 环境变量与 U-Boot 命令概述
在 U-Boot 中,使用#define和反斜杠来定义多行字符串。反斜杠反斜杠用于指示宏定义在下一行继续。这意味着所有的行将被视为一个连续的字符串。字符串字面量每一行都是一个字符串字面量,\0表示字符串的结束符。这样可以确保每个键值对都是独立的。最终效果这个宏定义最终会被展开为一个长字符串,其中包含多个键值对,每个键值对之间用\0分隔。这种方式通常用于定义配置或环境设置,便于在程序中管理和使用。
2024-07-31 21:08:59 500
原创 【学习日记】函数调用 和 全局变量 如何实现 位置无关码
位置无关码(Position Independent Code,简称 PIC)是一种特殊类型的编码方式,用于生成在内存中可以任意位置运行的代码。这种代码在编译时不会固定任何特定的内存地址,使得程序或库在运行时可以被加载到内存的任意位置而无需修改。这对于操作系统中的动态链接库(DLLs)和共享库(如 Linux 中的 .so 文件)尤为重要。
2024-07-27 19:58:57 919
原创 【教程】Node.js+Apache 部署网页全过程(非常详细!)
- 要解决的问题有: - vps 上的常规端口,80/443 端口已经被其他网页占用,必须通过非常规窗口访问我们的网站 - 网站部署中 Apache 的配置,Node 服务器的管理 - 笔者的二级域名已经设置指向该服务器的常规端口 80/443,如何使用三级域名直接访问新部署的网页而不需要输入端口号
2024-07-25 03:30:51 1256
原创 【教程】在 VS Code 集成终端中解决 Node.js 环境变量识别问题
【代码】【教程】在 VS Code 集成终端中解决 Node.js 环境变量识别问题。
2024-07-23 13:54:34 630
原创 【教程】vscode添加powershell7终端
在这里设置为 “never”,意味着当你重新打开 VS Code 时,不会恢复先前的终端会话。说明: 指定在 Windows 上的默认集成终端配置文件为 “PowerShell 7”。这意味着当你打开新的终端时,VS Code 将默认使用 PowerShell 7。在这里,设置为 PowerShell 7 的路径,以便在自动化场景中使用。说明: 指定在 Windows 上打开外部终端时使用的可执行文件路径。在这里,创建了一个名为 “PowerShell 7” 的终端配置,指定其可执行文件路径为。
2024-07-23 13:44:43 1118
原创 【踩坑日记】【教程】嵌入式 Linux 通过 nfs 下载出现 T T T T [Retry count exceeded: starting again]
开启 nfs2 后,可以在开发板 u-boot 上重新尝试用 nfs 下载虚拟机上的文件,如果成功了,那么就结束了。这个文件,其他教程需要修改这个文件但是在 ubuntu-20.04 下安装 nfs 后并不能找到这个文件。+2 就代表已经开启 nfs2 服务,则第 4 节可跳过,如果是 -2 就往下看,开启 nfs2。注意,此处开启 nfs2 的步骤不同于其他教程,主要是针对 ubuntu-20.04 没有。说明已经支持 nfs2 了。此命令没有其他输出。
2024-07-16 01:08:04 888
原创 【理解】关于正点原子i.MX6ULL LCD计算式的理解
- ①式的理解没什么问题,但是对于②式,理解出现了一些问题:对于垂直同步参数来说,LINE的说明为——显示一帧有效数据所需的时间,假如屏幕分辨率为 1024*600,那么 LINE 就是 600 行的时间。那么按照笔者的理解,**显示一帧**所需要的时间应该是$LINE×①+VSPW + VBP + VFP$,而不是②式。
2024-06-29 23:17:46 647
原创 【嵌入式Linux】i.MX6ULL GPIO 中断服务函数注册与编写
- 本文章结合了正点原子的 i.mx6u嵌入式Linux开发指南和笔者的理解。- 前面我们进行了编写**GPIO 中断管理与配置函数**,下面将具体使用这些GPIO 中断管理与配置函数来进行一个具体的中断初始化,以及中断服务函数的编写
2024-06-26 18:15:49 709 1
原创 【嵌入式Linux】i.MX6ULL GPIO 中断管理与配置函数
- 本文章结合了正点原子的 i.mx6u嵌入式Linux开发指南和笔者的理解。- 前面我们进行了总的外部中断处理函数(system_irqhandler)的初始化,在这个函数中同个中断号,选择跳转到了不同的中断服务函数- 下面我们就来写一个具体的中断服务函数,本文将具体编写**GPIO 中断管理与配置函数**
2024-06-26 13:02:15 1037
原创 【嵌入式Linux】i.MX6ULL 外部中断服务函数的初始化
本文章分析了Cortex-A7中断系统,并结合了正点原子的 i.mx6u嵌入式Linux开发指南和笔者的理解对外部中断函数的选择和初始化代码作了详细讲解。
2024-06-26 00:58:52 651
原创 【嵌入式Linux】i.MX6ULL 时钟树——代码梳理(基础时钟初始化)
本文章结合了正点原子的**i.mx6u嵌入式Linux开发指南**和笔者的理解。本文章应配合《【嵌入式Linux】i.MX6ULL 时钟树——理论分析》使用。
2024-06-22 23:31:41 800
原创 【嵌入式Linux】i.MX6ULL 时钟树——理论分析
本文章结合了正点原子的**i.mx6u嵌入式Linux开发指南**和笔者的理解。本文章应配合《【嵌入式Linux】i.MX6ULL 时钟树——代码梳理(基础时钟初始化)》使用。
2024-06-22 23:30:06 1016
原创 【踩坑日记】I.MX6ULL裸机启动时由于编译的程序链接地址不对造成的程序没正确运行
发现在在链接的开始地址处(0x87800000),定义了一个名为"clk_enable"的函数或代码段的起始位置,而不是_start程序(_start 是一个特殊的符号或标识符,它在编译和链接过程中用于表示程序的起始点。在我们的start代码中,我们初始化了堆栈指针,这个程序必须放在链接的起始地址处(0x87800000)查看生成的反汇编文件。
2024-06-15 22:42:01 309
可适用于ESP32的Adafruit_PN532库
2022-08-31
TA创建的收藏夹 TA关注的收藏夹
TA关注的人