嵌入式_Linux
文章平均质量分 81
Linux嵌入式技术笔记
昊虹AI笔记
认真记录技术笔记,让记录产生价值!
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
Linux的进程优先级调度学习笔记
范围 -20 到 19,数值越大优先级越低。原创 2025-03-29 20:08:27 · 661 阅读 · 0 评论 -
Linux进程管理之子进程的创建(fork函数)、子进程与线程的区别、fork函数的简单使用例子、子进程的典型应用场景、父进程等待子进程结束后自己再结束
fork()是 Linux 中用于创建新进程的系统调用。当一个进程调用fork()时,系统会创建一个与原进程几乎完全相同的子进程。新的子进程在有相关写操作时,会复制父进程的资源(即写时复制的概念)。父进程的PID和子进程的PID是不同的。父进程和子进程会从fork()调用的返回值处开始继续执行,但返回值在父进程和子进程中是不同的。原创 2025-03-29 20:07:13 · 1291 阅读 · 0 评论 -
Linux进程管理的相关知识点以及我的相关笔记链接
在Linux操作系统中,进程管理是操作系统内核非常重要的部分,涉及到进程的创建、调度、同步、通信等多个方面。原创 2025-03-29 18:09:24 · 1285 阅读 · 0 评论 -
利用Linux的SPI子系统和SPI总线写出SPI设备(DAC模块)的驱动
ti,tlc5615。原创 2025-03-29 10:12:16 · 1155 阅读 · 0 评论 -
通过万能SPI设备驱动spidev.c来操作挂接在SPI总线上的SPI设备(DAC模块)【spidev.c代码详解、SPI控制器及SPI设备的设备树语句解析】
关于设备驱动spidev.c的来历和介绍,在前面的博文中我已经介绍了,链接也可以参考视频(百度网盘搜索“1-5_05_spidev的使用(SPI用户态API)”),然后前面的1分30秒就对其来历进行了介绍。原创 2025-03-29 09:58:54 · 1479 阅读 · 0 评论 -
Linux系统如何搜索内核日志?用“dmesg”命令...
比如我要在内核日志中搜索关键词。原创 2025-03-29 09:26:28 · 375 阅读 · 0 评论 -
怎么样查看Linux的GPIO子系统中已经被占用的GPIO口的状态?
【搜索“gpiochip0对应于IMX6ULL的GPIO1”】关于上面截图中GPIO的编号意义,请参考我的另一篇博文。原创 2025-03-29 09:22:05 · 846 阅读 · 0 评论 -
怎么样查看正在运行的Linux系统的内核是什么时候编译的?
可见,时间已经更新了,并且编号也改为了2,说明这是第二次编译zImage得到的内核。可见,此时的内核的编译时间是 2024年12月11日的23点04分37秒。原创 2025-03-28 13:41:59 · 474 阅读 · 0 评论 -
Linux的SPI子系统详解(相关接口函数和基本原理讲解)
当SPI_master的驱动有了,并且接入到了Linux的SPI子系统后,所以后续我们就可以利用SPI子系统提供的一系列内核接口函数(API)去书写SPI设备(DAC模块)的驱动。实际上,之前在博文中使用的别人写的SPI设备通用驱动spidev.c也是用的SPI子系统提供的接口函数写成的。原创 2025-03-27 15:04:42 · 1311 阅读 · 0 评论 -
Linux的内核配置界面的使用示例累积
【搜索“触摸屏驱动移植适配”、“配置内核,使蓝牙驱动变成ko模块”、“某些项配置为M状态”】【搜索“配置并编译内核模块”】原创 2025-03-26 11:04:48 · 261 阅读 · 0 评论 -
Linux 驱动总线中的 ACPI 设备匹配机制是怎么回事儿?【最大特点是设备的自动发现和热插拔性能良好】
在 Linux 内核中,ACPI(Advanced Configuration and Power Interface,高级配置与电源管理接口)提供了一种标准化的方法来描述硬件,并支持设备自动发现和电源管理。在驱动总线(如 PCI、I2C、SPI、Platform 等)中,描述,ACPI 表(如 DSDT)中包含。在 Linux 设备驱动程序中,可以通过。,驱动仍能匹配 ACPI 设备,但。在 ACPI 系统中,每个设备由。不会显示匹配信息,可能会影响。进行 ACPI 设备匹配。结构,定义了该设备的。原创 2025-03-25 13:16:55 · 1570 阅读 · 0 评论 -
SPI控制器(spi_master)、SPI设备、SPI总线(spi_device与spi_driver的匹配机制)、SPI万能驱动`spidev.c`
spidev.c各SPI设备通过SPI总线来使用SPI控制器的传输能力,关于这一点具体解释如下:由于SPI设备比I2C设备复杂,比如每个SPI设备有自己的片选控制引脚、有自己的最大时钟值、有自己的传输方式(任意时刻是只读或只写还是既读又写),所以SPI设备们直接使用SPI控制器的驱动是很困难的。要想使用一个SPI设备,通常都不是直接去使用SPI控制器的驱动来操作SPI设备,而是通过SPI总线来为具体的SPI设备提供驱动。原创 2025-03-24 11:14:25 · 1347 阅读 · 0 评论 -
利用I2C_bus(I2C总线)为挂接在I2C总线上的设备AP3216C编写驱动程序
关于I2C总线的原理和结构的介绍,请参看我的另一篇博文在阅读以下内容前,也建议先看一看上面这篇博文。i2c_driver。原创 2025-03-22 14:56:53 · 1115 阅读 · 0 评论 -
Linux的I2C总线的原理和结构详解
结构体,与Platform总线不同的是,在Platform总线中,总线是一个虚拟的总线概念,而在Linux的I2C总线结构中,总线是实实在在的,I2C本来就是一个物理总线嘛,它上面可以外挂很多I2C设备。关于Linux的I2C总线的结构原理的详细介绍,请百度网盘搜索“1-8_4-8_I2C系统驱动程序模型”,然后从05分45秒开始看。这里就不再赘述了,因为只要吃透了Platform总线,那么理解Linux的I2C总线是很简单的。在Linux的I2C总线中,其实重点也是类似的三点,即I2C的match机制、原创 2025-03-20 20:43:02 · 293 阅读 · 0 评论 -
IMX6ULL的I2C控制器在Linux的设备树文件中的描述
NXP官方提供的BSP中的内核中,已经写好了I2C控制器的驱动,并且该驱动接入了Linux的I2C子系统,所以我们就不需要去写I2C控制器的驱动,但还是应该去看看其相关的设备树描述语句。我们不妨再在顶层文件“100ask_imx6ull-14x14.dts”中去搜索下“pinctrl_i2c1:”,得到引脚复用信息。【搜索“找到设备树文件中的相关内容”】得到启发,为了知道去搜索哪个设备节点名或标签名,我们应该先去查看文件。至此IMX6ULL的I2C控制器在Linux的设备树文件中的描述就基本搞清楚了。原创 2025-03-20 12:24:11 · 245 阅读 · 0 评论 -
利用Linux的I2C子系统和i2c-tools工具集写出的对I2C设备AP3216C读写的应用程序
由于NXP官方提供的BSP里已经包含了其片上I2C控制器的驱动并接入到了Linux的I2C子系统,所以我们可以直接去写与I2C有关的应用程序了。在本篇博文中我们用两种方式对I2C设备AP3216C进行读写操作。第一种:直接利用Linux的I2C子系统对I2C设备AP3216C进行读写操作。原创 2025-03-20 12:07:55 · 872 阅读 · 0 评论 -
Linux上的`i2c-tools`工具集的编译构建和安装
的i2c-tools。原创 2025-03-19 22:07:15 · 906 阅读 · 0 评论 -
Linux上的`i2c-tools`工具集的详细介绍;并利用它操作IMX6ULL的I2C控制器进而控制芯片AP3216C读取光照值和距离值
i2c-tools是的用户空间工具集(你也可以把它看成是一个库,类似于之前自己用过的触摸屏库tslib库、FreeType矢量字符库),它提供了一系列命令行工具,可以扫描、读取、写入 I²C 设备,非常适合嵌入式开发和调试 I²C 设备,如等。i2c-toolsi2c-toolsi2cdetecti2cdumpi2cgeti2cseti2c-tools扫描 I²C 总线上的设备,显示哪些地址上有响应的 I²C 设备。77--读取 I²C 设备的全部寄存器内容,适用于调试寄存器数据。读取的值。0xAB。原创 2025-03-18 20:36:28 · 1155 阅读 · 0 评论 -
SMBus协议介绍(它是I2C协议的子集)
百度网盘搜索“1-3_4-3_SMBus协议”。pwd=32wc。原创 2025-03-18 11:22:17 · 1460 阅读 · 0 评论 -
修改IMX6ULL_PRO开发板的设备树文件使开发板启用UART5(串口5)
通过下面两篇博文我们知道了,我们完全可以通过Linux的TTY子系统去使用嵌入式处理器芯片中的串口资源,通常芯片官方提供的BSP中就已经把部分串口注册进入了Linux的TTY子系统了。我们写串口驱动的目的是使用串口,如果已经能方便的使用串口了,我们再去写串口驱动其实际意义不大。目前的问题是似乎NXP官方提供的BSP中只把部分串口接入了Linux的TTY子系统了。可见,只启用了1号、3号、6号串口,这篇博文中我们尝试着去修改设备树文件,看能不能把另外的串口启用。原创 2025-03-17 11:52:05 · 1224 阅读 · 0 评论 -
IMX6ULL_Pro开发板的串口应用程序实例(利用TTY子系统去使用串口)
关于结构体termios的详细介绍,请参看我的另一篇博文。原创 2025-03-16 11:18:13 · 983 阅读 · 0 评论 -
Linux的TTY子系统(TTY框架)的重要结构体termios的详解(串口通信参数的配置)
通常,我们开发串口驱动和应用时,就是以Linux的TTY子系统(TTY框架)为基础进行的,而TTY子系统(TTY框架)的结构体termios就与串口通信参数的配置紧密相关,所以这篇博文就对结构体termios进行详解。的本地输入处理方式。它的主要作用是影响终端如何处理。(本地模式标志)字段用于控制 Linux。,如波特率、数据位、校验位、控制模式等。用于配置串口终端设备的结构体,位于。用于配置串口/终端设备的核心结构体。控制数据从串口发送时的处理方式。控制串口接收数据时的处理方式。设置串口的收发速率。原创 2025-03-12 11:09:23 · 1413 阅读 · 0 评论 -
Linux的TTY子系统(TTY框架)的重要结构体termios的`c_iflag`字段的BRKINT选项和IGNBRK选项的含义【详解串口的BREAK信号】
IGNBRK。原创 2025-03-12 10:53:41 · 901 阅读 · 0 评论 -
进程的控制终端规则详解(打开串口设备文件时的标志位O_NOCTTY的详解、守护进程的概念)
在Linux的串口驱动开发中,通常都是以TTY框架作为其驱动开发框架。使用 TTY 框架开发串口驱动,可以让串口设备具备标准的终端特性,并能通过 /dev/ttyX 这样的设备文件访问。关于终端的详细解释,请参考我的另一篇博文由于咱们的串口设备的驱动是基于TTY框架开发的,那么咱们打开的一个串口设备,同样也能同时作为串口终端来使用。这一点其实就是咱们本博文中要讲的问题的来源。所以,看下面的内容前,你要谨记,本文下面内容的前提是假设我们的串口驱动是基于TTY的驱动框架开发的。原创 2025-03-11 15:23:53 · 1132 阅读 · 0 评论 -
百问网提供的烧写工具将各镜像文件烧写到eMMC存储器的各脚本的解析
百问网提供的烧写工具不仅可以把各镜像文件烧写到eMMC存储器,还可以烧写到NADN,SD卡等存储设备,如下图所示:但是本文的烧写目标存储器是eMMC存储器,这点是前提,要先注意哈。原创 2025-03-09 21:39:14 · 1207 阅读 · 0 评论 -
【移植04】u-boot(Bootloader的后两个阶段)、设备树文件(dtb)、内核镜像(zImage)、根文件系统从烧写存储到eMMC中到完整加载运行的过程与原理详解
在前面的两篇博文中我们只是把移植修改生成的内核、设备树、根文件通过网络进行的加载,也就是并没有把它们写入到eMMC存储器,当最终修改测试没问题,显然我们应该是把这些东西烧写到eMMC存储器中的。所以本博文的目标很明确:就是要把我们在前面两篇博文移植修改相关源码生成的u-boot、内核、设备树、根文件写到eMMC存储器中,从而实现从eMMC存储器启动一个完整并且能正常运行的Linux系统。原创 2025-03-09 21:15:08 · 1065 阅读 · 0 评论 -
以网络形式启动Linux系统后,通过挂载(mount)的方式,将eMMC存储器中旧的根文件系统所在逻辑2分区格式化,并解压新的根文件系统到逻辑2分区
eMMC存储器详解(存储区域结构、EXT_CSD[179]、各分区介绍、主要引脚、命令格式与类型、u-boot对eMMC的管理等)关于eMMC存储器在各种情况下的分区编号和名字的问题。原创 2025-03-09 13:59:28 · 870 阅读 · 0 评论 -
关于eMMC存储器在各种情况下的分区编号和名字的问题
关于eMMC的分区编号和名字问题,表面上看是个小问题,事实上在程度开发中,没有小问题,一个变量值设置不对,可能整个程序或系统就跑不起来。eMMC的分区编号和名字问题就是一个事关嵌入式系统烧写和正常启动的关键问题,如果没有搞清楚,你根本用不好烧写工具,也无法将整个嵌入式系统启动起来。关于这个问题,其实是要分情况的,具体分下面几种情况:①在eMMC标准中的分区名字和编号问题;②在u-boot的MMC系统中的分区编号问题;③#在u-boot的Fastboot模式下各分区的名字和编号问题;原创 2025-03-07 16:10:24 · 1337 阅读 · 0 评论 -
对NXP提供的BSP里边所使用的u-boot的环境变量`bootcmd`的解析
承接博文 https://blog.csdn.net/wenhao_ir/article/details/145902134 继续解析u-boot的环境变量。为什么要解析u-boot的这个环境变量?因为如果u-boot在倒计时完后,首先执行的是就是下面这条命令:其中 取出 环境变量的内容,并将其传递给 执行。所以我们有必要去解析环境变量的内容。说明:本文使用的u-boot是博文 https://blog.csdn.net/wenhao_ir/article/details/145662136 中经过原创 2025-03-06 16:51:28 · 956 阅读 · 0 评论 -
u-boot的bootz命令详解
问:bootz命令在启动Linux内核时,如果不加任何参数,它从哪里启动内核?在 U-Boot 的环境变量中,通常有一个。通常,U-Boot 在启动时会先。在 U-Boot 中,,需要先加载它再执行。原创 2025-03-06 13:53:11 · 523 阅读 · 0 评论 -
通过u-boot启动Linux时的根文件系统挂载流程(init进程可能会进行二次挂载)
在 Linux 启动过程中,原创 2025-03-06 13:15:13 · 1120 阅读 · 0 评论 -
嵌入式开发中,TEE镜像是什么东西?
在u-boot中,如果执行默认的自动加载命令集 ,此时如果设置了tee的相关环境变量,那么u-boot会去加载TEE镜像,详情见我的另一篇博文那么问题来了,TEE镜像是什么东西呢?在ARM嵌入式系统平台上,指的是在(TEE)中运行的固件或操作系统映像。TEE是一种安全区域,与通常运行Linux等操作系统的,用于执行安全敏感的操作,比如。原创 2025-03-05 21:57:45 · 657 阅读 · 0 评论 -
u-boot中与eMMC/SD卡相关的功能模块“MMC sub system(MMC子系统)”的详细介绍
u-boot中有两个功能块对MMC(eMMC/SD)设备进行管理。其中一个是fastboot、另一个是 MMC sub system(MMC子系统)。fastboot主要是实现烧写数据的功能,而MMC子系统则拥有完整的命令集对MMC(eMMC/SD)设备进行管理.fastboot也会调用的命令来实现其功能。关于这一点,详见我的另一篇博文【搜索“Fastboot 的PC端可利用FB”】本篇博文介绍,而关于fastboot的介绍,请见我的另一篇博文。原创 2025-03-05 11:06:19 · 1511 阅读 · 0 评论 -
eMMC存储器详解(存储区域结构、EXT_CSD[179]、各分区介绍、主要引脚、命令格式与类型、u-boot对eMMC的管理等)
eMMC(嵌入式多媒体卡)采用BGA 封装,不同版本的 eMMC 可能有不同的引脚定义。一般来说,eMMC 主要使用11 个信号引脚,支持1-bit、4-bit 和 8-bit数据总线模式。1. eMMC 主要引脚功能eMMC 采用BGA-153、BGA-169 或 BGA-100引脚名称引脚编号描述VCC供电引脚核心电源(通常为 3.3V)VCCQ供电引脚I/O 电源(1.8V 或 3.3V,根据工作模式)VSS / GND供电引脚地线CLK(Clock)时钟信号。原创 2025-03-03 21:56:54 · 4372 阅读 · 1 评论 -
IMX6ULL运行Linux系统的Bootloader的三个阶段详解(BootROM、SPL、U-Boot)(SPL和U-Boot合成镜像`u-boot-dtb.imx`时需要作填充数据处理)
IMX6ULL运行Linux系统的Bootloader过程通常分为📌。📌。✅🎯。原创 2025-03-03 21:50:53 · 1092 阅读 · 0 评论 -
运行于u-boot中的Fastboot(FB)协议的详细介绍(快速烧写 eMMC、NAND、UFS 等存储设备的协议)
嵌入式设备通常是通过 U-Boot 或 Bootloader 进入Fastboot 模式,NXP官方开发的uuu烧写工具也是利用u-boot提供的 Fastboot 接口 实现固件更新。嵌入式设备(比如我的开发板)进入 Fastboot 模式后,等待来自通过USB(或 UART、网络等接口)连接的PC发来的 Fastboot 命令,以执行相应的刷写操作。作为 Bootloader,并希望支持 Fastboot 模式,则需要配置 U-Boot 以启用 Fastboot 功能。在 U-Boot 的。原创 2025-03-03 13:50:30 · 1917 阅读 · 0 评论 -
IMX6ULL芯片内部的ROM中存储的代码的作用和工作原理
提问:IMX6ULL芯片内部的ROM中的代码是不是也要被加载到内存(RAM)中才能运行?,它直接在 ROM 中执行。BOOT_MODE。原创 2025-03-02 20:50:26 · 744 阅读 · 0 评论 -
【移植03】修改移植`FSL Yocto Project Community BSP`用到的Linux内核源码并增加触摸屏、蓝牙、wifi的驱动程序,使其能适配百问网(100ask)的开发板
本篇博文承接我的上一篇博文上一篇博文中已经实现u-boot的成功移植了,这篇博文就继续移植Linux内核。至此,我们就把蓝牙的驱动也移植到内核中了,从中我们可以看到,这个蓝牙驱动的实现关键是加载相应的二进制固件文件,整个过程我们没有去写什么驱动代码,也没有去复制粘贴什么源代码文件。原创 2025-03-01 21:53:56 · 1426 阅读 · 4 评论 -
在编译Linux的内核镜像和模块时,必须先编译内核镜像,再编译模块,顺序不可随意调整的原因
问:在编译Linux的内核镜像和模块时,必须先编译内核镜像,再编译模块,顺序不可随意调整。,因为模块依赖于内核生成的头文件和符号表。假设你的 Linux 内核源代码目录是。答:在编译 Linux 内核和模块时,,否则会导致编译错误或不兼容问题。表示在当前目录编译模块。,顺序不可随意调整。原创 2025-03-01 14:09:04 · 443 阅读 · 0 评论 -
设备的名字中经常出现的“Realtek”是怎么回事【中国台湾的Realtek(瑞昱半导体)介绍-Logo为蓝色螃蟹-主营网卡、蓝牙、音频、交换芯片】
问:在嵌入式开发中,经常有设备的名字中出现“Realtek”,请问“Realtek”是一家公司么?Realtek的芯片在Linux驱动中非常常见,尤其是在**网络设备驱动(net driver)音频驱动(ALSA)**中,很多主线内核都已经集成了对Realtek芯片的开源驱动支持。如果你以后涉及到网络通信相关的嵌入式开发,Realtek的芯片驱动可能也会经常遇到。,与Realtek生产的类似芯片在功能上可以互相竞争。它主要设计和销售各类集成电路(IC),尤其是在。的知名半导体公司,成立于。原创 2025-03-01 12:17:15 · 1536 阅读 · 0 评论
分享