自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(168)
  • 资源 (1)
  • 问答 (1)
  • 收藏
  • 关注

原创 S5P6818_驱动篇(26)网络驱动

Linux网络驱动开发指南摘要 本文详细介绍了Linux网络设备驱动开发的核心概念和实现方法。主要内容包括: 网络驱动框架:核心结构体net_device是网络驱动的灵魂,包含设备所有配置和状态信息 设备管理:使用alloc_netdev申请设备,register_netdev注册设备,以及相关删除操作 操作集实现:net_device_ops结构体定义了驱动必须实现的回调函数,如数据收发、配置等 数据结构:sk_buff是网络数据包的核心载体,介绍了其结构和操作API NAPI机制:混合中断和轮询的处理

2025-06-09 17:49:07 987

原创 S5P6818_驱动篇(25)块设备驱动

块设备是针对存储设备的,比如 SD 卡、 EMMC、 NAND Flash、 Nor Flash、 SPI Flash、机械硬盘、固态硬盘等。因此块设备驱动其实就是这些存储设备驱动

2025-06-09 14:49:34 590

原创 S5P6818_驱动篇(24)UART驱动

串口是很常用的一个外设,在 Linux 下通常通过串口和其他设备或传感器进行通信,根据电平的不同,串口分为 TTL 和 RS232。不管是什么样的接口电平,其驱动程序都是一样的,通过外接 RS485 这样的芯片就可以将串口转换为 RS485 信号,因此这些外设最终都归结为串口驱动。本章我们就来学习一下如何驱动UART串口。

2025-06-06 15:29:22 1007

原创 S5P6818_驱动篇(23)SPI总线驱动

本文介绍了Linux下SPI设备驱动的开发框架。SPI驱动分为主机控制器驱动和设备驱动两部分,其中主机控制器驱动由内核提供,开发者主要关注设备驱动实现。文章详细解析了SPI核心数据结构:spi_controller表示主机控制器,包含传输控制、DMA配置等参数;spi_driver描述设备驱动,需实现probe/remove等接口;spi_transfer和spi_message用于封装传输数据。开发流程包括初始化spi_controller、注册spi_driver,并通过spi_message进行传输。

2025-06-06 14:06:55 755

原创 S5P6818_驱动篇(22)I2C总线驱动

本文介绍了Linux系统中I2C驱动开发框架,分为I2C总线驱动(适配器驱动)和I2C设备驱动两部分。I2C总线驱动主要由i2c_adapter和i2c_algorithm两个结构体实现,负责提供底层通信接口;设备驱动则围绕i2c_client和i2c_driver展开,实现具体设备功能。文章详细解析了关键数据结构与注册流程,并说明了基于设备树和非设备树的两种设备匹配机制,通过I2C核心层实现驱动与设备的绑定。

2025-06-06 11:31:12 708

原创 I.MX6ULL_Linux_系统篇(26) buildroot分析

Buildroot是一个用于嵌入式系统的工具,通过交叉编译简化并自动化构建完整的Linux系统。它能够生成交叉编译工具链、根文件系统、Linux内核镜像和引导加载程序。Buildroot支持多种处理器架构,如ARM、MIPS、PowerPC等,并为一些现成的开发板提供默认配置。Buildroot主要在Linux系统上运行,并依赖于一些标准工具和软件包。

2025-05-23 17:20:32 1149

原创 S5P6818_驱动篇(21)LCD 驱动

LCD 是很常用的一个外设,在 Linux 下LCD 的使用更加广泛,搭配 QT 这样的 GUI 库可以制作出非常精美的 UI 界面。本章我们就来学习一下如何在 Linux 下驱动 LCD 屏幕。

2025-04-27 16:02:46 441

原创 S5P6818_驱动篇(20)INPUT 子系统

按键、鼠标、键盘、触摸屏等都属于输入(input)设备, Linux 内核为此专门做了一个叫做 input子系统的框架来处理输入事件。输入设备本质上还是字符设备,只是在此基础上套上了 input 框架,用户只需要负责上报输入事件,比如按键值、坐标等信息, input 核心层负责处理这些事件。本章我们就来学习一下 Linux 内核中的 input 子系统。

2025-04-27 14:52:29 949

原创 S5P6818_驱动篇(19)MISC驱动

misc 的意思是混合、杂项的,因此 MISC 驱动也叫做杂项驱动,也就是当我们板子上的某些外设无法进行分类的时候就可以使用 MISC 驱动。MISC 驱动其实就是最简单的字符设备驱动,通常嵌套在 platform 总线驱动中,实现复杂的驱动,本章我们就来学习一下 MISC 驱动的编写。

2025-04-27 11:05:36 240

原创 S5P6818_驱动篇(18)Platform驱动

我们在前面几章编写的设备驱动都非常的简单,都是对IO进行最简单的读写操作。像I2C、SPI、 LCD 等这些复杂外设的驱动就不能这么去写了, Linux 系统要考虑到驱动的可重用性,因此提出了驱动的分离与分层这样的软件思路,在这个思路下诞生了我们将来最常打交道的platform 设备驱动,也叫做平台设备驱动。本章我们就来学习一下 Linux 下的驱动分离与分层,以及 platform 框架下的设备驱动该如何编写。

2025-04-26 10:24:08 1399

原创 S5P6818_驱动篇(17)阻塞与非阻塞,信号通知

阻塞和非阻塞 IO 是 Linux 驱动开发里面很常见的两种设备访问模式,在编写驱动的时候一定要考虑到阻塞和非阻塞。本章我们就来学习一下阻塞和非阻塞 IO,以及如何在驱动程序中处理阻塞与非阻塞,如何在驱动程序使用等待队列和 poll 机制。

2025-04-25 17:30:42 625

原创 S5P6818_驱动篇(16)中断

linux gpio中断

2025-04-21 18:53:08 971

原创 S5P6818_驱动篇(15)内核定时器

定时器是我们最常用到的功能,一般用来完成定时功能,本章我们就来学习一下 Linux 内核提供的定时器 API 函数,通过这些定时器 API 函数我们可以完成很多要求定时的应用。Linux内核也提供了短延时函数,比如微秒、纳秒、毫秒延时函数,本章我们就来学习一下这些和时间有关的功能。

2025-04-21 13:49:05 731

原创 S5P6818_驱动篇(14)并发与竞争

Linux是一个多任务操作系统,肯定会存在多个任务共同操作同一段内存或者设备的情况,多个任务甚至中断都能访问的资源叫做共享资源。在驱动开发中要注意对共享资源的保护,也就是要处理对共享资源的并发访问。在 Linux 驱动编写过程中对于并发控制的管理非常重要,本章我们就来学习一下如何在 Linux 驱动中处理并发。

2025-04-21 10:21:37 780

原创 S5P6818_驱动篇(13)pinctrl与gpio子系统

Linux 是一个庞大而完善的系统,尤其是驱动框架,像 GPIO 这种最基本的驱动不可能采用“原始”的裸机驱动开发方式。Linux 内核提供了 pinctrl 和 gpio 子系统用于GPIO 驱动,本章我们就来学习一下如何借助 pinctrl 和 gpio 子系统来简化 GPIO 驱动开发。

2025-04-18 09:58:10 809

原创 S5P6818_驱动篇(12)设备树

设备树(Device Tree),将这个词分开就是“设备”和“树”,描述设备树的文件叫做 DTS(DeviceTree Source),这个 DTS 文件采用树形结构描述板级设备,也就是开发板上的设备信息,比如CPU 数量、 内存基地址、 IIC 接口上接了哪些设备、 SPI 接口上接了哪些设备等等。在图中,树的主干就是系统总线, IIC 控制器、 GPIO 控制器、 SPI 控制器等都是接到系统主线上的分支。

2025-04-17 15:42:41 825

原创 S5P6818_驱动篇(11)字符设备驱动

字符设备是 Linux 驱动中最基本的一类设备驱动,字符设备就是一个一个字节,按照字节流进行读写操作的设备,读写数据是分先后顺序的。比如我们最常见的GPIO、 IIC、 SPI等等都是字符设备,这些设备的驱动就叫做字符设备驱动。Linux 应用程序对驱动程序的调用如图所示:在 Linux 中一切皆为文件,驱动加载成功以后会在“/dev”目录下生成一个相应的文件,应用程序通过对这个名为“/dev/xxx” (xxx 是具体的驱动文件名字)的文件进行相应的操作即可实现对硬件的操作。

2025-04-15 11:48:23 787

原创 S5P6818_系统篇(10)kernel启动流程

ARM芯片的Linux内核启动过程大致分为几个阶段,其中每个阶段负责不同的初始化工作,确保系统可以从启动时的硬件状态逐步过渡到一个完整运行的操作系统环境。以下是ARM芯片上Linux内核启动的主要过程和各个阶段的工作

2025-04-03 10:01:32 571

原创 ESP32(4)TCP通信

讲解 lwIP 的 Socket接口如何配置 TCP客户端,并在此基础上实现收发功能。

2025-03-18 19:12:57 578

原创 ESP32(3)UDP通信

对于 lwIP 的 Socket 的使用方式,它与文件操作非常相似。在文件操作中,我们首先打开文件,然后进行读/写操作,最后关闭文件。在TCP/IP网络通信中,也存在着相同的操作流程,但所使用的接口不再是文件描述符或 FILE*,而是被称为 Socket 的描述符。通过 Socket,我们可以进行读、写、打开和关闭操作来进行网络数据的传输。此外,还有一些辅助函数,如查询域名/IP 地址和设置 Socket 功能等。在本章中,我们将使用 Socket 编程接口来实现 UDP 实验。

2025-03-18 13:14:44 470

原创 ESP32(2)WIFI链接

ESP32-S3的WiFi库支持配置及监控ESP32-S3的Wi-Fi连网功能。它支持配置基站模式(即STA 模式或 WiFi 客户端模式),此时 ESP32-S3 连接到接入点(AP)。还支持 AP 模式(即 SoftAP 模式或接入点模式),此时基站连接到 ESP32-S3。同时,支持 AP-STA 共存模式,此时ESP32-S3 既是接入点,同时又作为 STA。本章节的实验是基于乐鑫官方提供的 WiFi 库来实现的.

2025-03-17 22:08:39 1238

原创 ESP32(1)基于ESP32的lwIP了解

ESP32-S3 是一款集成了 Wi-Fi 和蓝牙功能的微控制器,而 lwIP(轻量级 IP)是一个为嵌入式系统设计的开源 TCP/IP 协议栈。通过使用 lwIP 库, ESP32-S3 可以实现与外部网络的通信,包括发送和接收数据包、处理网络连接等。因此, ESP32-S3 是基于 lwIP 来实现网络功能的。

2025-03-17 16:50:34 1337

原创 FreeRTOS(13)任务通知

FreeRTOS 内核 V8.2.0 版本发布的时候, FreeRTOS 新增了任务通知这个功能,任务通知也是用于任务间进行同步和通讯的一种机制,但是相对于前面章节介绍的队列、事件标志组和信号量等而言,任务通知在内存占用和效率方面都有很大的优势。 本章就来学习 FreeRTOS 中任务通知的相关内容。

2025-03-17 15:07:44 1105

原创 DPDK网络开发(2)

DPDK(Data Plane Development Kit)可以在服务器上交叉编译,然后将编译好的二进制文件部署到目标设备上运行。以下是具体操作步骤。

2025-03-14 13:37:57 1124

原创 FreeRTOS(12)事件标志组

事件标志组与信号量一样属于任务间同步的机制,但是信号量一般用于任务间的单事件同步,对于任务间的多事件同步,仅使用信号量就显得力不从心了。 FreeRTOS 提供的事件标志组可以很好的处理多事件情况下的任务同步。本章就来学习FreeRTOS中事件标志组的相关内容。

2025-03-13 16:38:02 997

原创 FreeRTOS(11)软件定时器

定时器可以说是每个 MCU 都有的外设,有的 MCU 自带的定时器有着十分强大的功能,能提供 PWM、输入捕获等高级功能,但是最常用的还是定时器的基础功能——定时,通过定时器的定时功能,能够完成一些需要周期性处理的事务。 MCU 自带的定时器为硬件定时器, 本章讲解的定时器为 FreeRTOS 提供的软件定时器,软件定时器在定时器精度上肯定是不如硬件定时器的,但是软件定时器的误差范围在对于对定时器精度要求不高的周期性任务而言,都是可以接受的。并且软件定时器也有使用简单、成本低等优点。

2025-03-13 13:39:24 1101

原创 FreeRTOS(10)信号量-互斥信号量

互斥信号量其实就是一个拥有优先级继承的二值信号量,在同步的应用中(任务与任务或中断与任务之间的同步)二值信号量最适合。互斥信号量适合用于那些需要互斥访问的应用中。在互斥访问中互斥信号量相当于一把钥匙, 当任务想要访问共享资源的时候就必须先获得这把钥匙,当访问完共享资源以后就必须归还这把钥匙,这样其他的任务就可以拿着这把钥匙去访问资源。互斥信号量使用和二值信号量相同的 API 操作函数,所以互斥信号量也可以设置阻塞时间,不同于二值信号量的是互斥信号量具有优先级继承的机制。

2025-03-13 10:48:22 1080

原创 FreeRTOS(9)信号量-计数型信号量

计数型信号量与二值信号量类似, 二值信号量相当于队列长度为 1 的队列,因此二值信号量只能容纳一个资源,这也是为什么命名为二值信号量,而计数型信号量相当于队列长度大于0 的队列,因此计数型信号量能够容纳多个资源,这是在计数型信号量被创建的时候确定的。

2025-03-12 19:09:35 1058

原创 FreeRTOS(8)信号量-二值信号量

信号量是操作系统中重要的一部分,信号量是任务间同步的一种机制,信号量可以用在多任务访问同一资源时的资源管理。 FreeRTOS 提供了多种信号量,按信号量的功能可分为二值信号量、计数型信号量、互斥信号量和递归互斥信号量,不同类型的信号量有其不同的应用场景,合理地使用信号量可以帮助开发者快速开发稳健的系统。本章就来学习FreeRTOS中的信号量。

2025-03-12 18:00:24 818

原创 FreeRTOS(7)队列集

在使用队列进行任务之间的“沟通交流”时,一个队列只允许任务间传递的消息为同一种数据类型,如果需要在任务间传递不同数据类型的消息时,那么就可以使用队列集。 FreeRTOS提供的队列集功能可以对多个队列进行“监听”,只要被监听的队列中有一个队列有有效的消息,那么队列集的读取任务都可以读取到消息,如果读取任务因读取队列集而被阻塞,那么队列集将解除读取任务的阻塞。使用队列集的好处在于,队列集可以读取多个队列中的消息,而无需遍历所有待读取的队列,以确定具体读取哪一个队列。

2025-03-11 19:57:39 758

原创 FreeRTOS(6)队列

在实际的项目开发中,经常会在任务与任务之间或任务与中断之间需要进行“沟通交流”,这里的“沟通交流”就是消息传递的过程。在不使用操作系统的情况下,函数与函数,或函数与中断之间的“沟通交流”一般使用一个或多多个全局变量来完成,但是在操作系统中,因为会涉及“资源管理”的问题,比方说读写冲突,因此使用全局变量在任务与任务或任务与中断之间进行消息传递,并不是很好的解决方案。 FreeRTOS 为此提供了“队列”的机制。本章就来学习 FreeRTOS 中的队列。

2025-03-11 13:27:54 1136

原创 FreeRTOS(5)内核控制函数及其他函数

FreeRTOS 提供了一些用于控制内核的 API 函数,这些 API 函数主要包含了进出临界区、开关中断、启停任务调度器等一系列用于控制内核的 API 函数。本章就来学习 FreeRTOS 的内核控制函数。

2025-03-10 16:40:54 747

原创 FreeRTOS(4)系统启动&函数解析

FreeRTOS系统启动&函数解析

2025-03-10 13:35:41 931

原创 DPDK网络开发

DPDK(Data Plane Development Kit)是一个用于快速数据包处理的开源库,广泛应用于高性能网络应用开发。

2025-03-04 18:31:15 1025

原创 编译&使用压力测试工具stress

stress 是一个简单但功能强大的命令行工具,用于对系统进行压力测试。它可以通过模拟 CPU、内存、磁盘 I/O 和文件系统等资源的负载,帮助用户测试系统的稳定性和性能。stress 通常用于验证系统在高负载下的表现,或者用于调试和性能调优。

2025-03-04 13:36:43 1133

原创 FreeRTOS(3)列表List

在 FreeRTOS 的源码中大量地使用了列表和列表项,因此想要深入学习 FreeRTOS,列表和列表项是必备的基础知识。这里所说的列表和列表项,是 FreeRTOS 源码中 List 和 List Item 的直译,事实上, FreeRTOS 中的列表和列表项就是数据结构中的链表和节点。这部分的内容并不难,但对于理解 FreeRTOS 相当重要,因此笔者建议读者在对本章内容了解透彻后,再继续下面章节的学习。

2025-02-26 19:28:08 982

原创 FreeRTOS(2)任务Task

任务和任务管理是 RTOS 的核心, FreeRTOS 也不例外,并且,绝大多是使用 RTOS 的目的就是为了使用 RTOS 的多任务管理能力。对于初学者,特别是没有 RTOS 基础的读者,了解FreeRTOS 的任务管理机制,是非常有必要的。为了帮助读者更好地理解 FreeRTOS 的任务管理机制,本章就先介绍 FreeRTOS 任务的一些基础知识。

2025-02-26 14:48:52 1126

原创 FreeRTOS(1)移植

FreeRTOS(Free Real-Time Operating System)是一个开源的实时操作系统(RTOS),专为嵌入式系统设计。它由 Richard Barry 开发,并于 2003 年首次发布。FreeRTOS 以其小巧、高效和可移植性著称,广泛应用于各种嵌入式设备中,如物联网设备、工业控制系统、消费电子等。

2025-02-25 20:07:13 835

原创 基于Chatbox AI部署Deepseek等模型

在人工智能领域,大型语言模型的部署和应用已成为推动技术进步的关键因素。本文将探讨如何利用Chatbox平台部署DeepSeek模型,一种先进的语言理解和生成模型。通过Chatbox,我们可以实现模型的快速集成和用户友好的交互界面,使得非技术用户也能轻松地与模型进行互动。DeepSeek模型的部署不仅提升了对话系统的智能水平,还优化了响应速度和处理能力,从而在客户服务、教育辅助、内容创作等多个场景中展现出显著的优势。

2025-02-19 19:09:59 2800

原创 S5P6818_系统篇(9)kernel编译框架

KBuild 是 Linux 内核使用的一种构建系统,用于管理和组织内核源码的编译过程。它是基于 Makefile 的自动化构建系统,通过在内核源代码目录中使用一些特殊的文件(如 Makefile、Kconfig 等)来控制内核的编译过程。KBuild 的设计目标是简化内核编译,特别是在大型项目和多平台支持的环境中,提供高效且灵活的构建管理。

2025-01-02 17:41:20 635

SWITCH RTL8367 SDK

RTL8367 SDK开发包+文档

2025-01-13

YT9215SC SDK

裕泰YT9215SC SDK资料包,PIN TO PIN兼容RTL8367SC

2025-01-13

蓝桥杯 嵌入式、单片机历年题目与资料

蓝桥杯比赛 嵌入式方向和单片机方向的资料,参赛同学可参考试题或进行模拟训练

2022-07-05

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除